Portuguese, Brazilian subtitles

← Geospatial Indexes - Data Wranging with MongoDB

Get Embed Code
5 Languages

Showing Revision 9 created 06/20/2016 by Udacity Robot.

  1. Vamos falar agora sobre outro tipo
  2. de índice. Índices geoespaciais, em especial. O suporte a índices geoespaciais
  3. no MongoDB permite realizarmos consultas de locais
  4. próximos a outra localização. É o que muitos aplicativos de telefone
  5. fazem quando você está procurando o café
  6. mais próximo. O tipo de índice geoespacial que abordaremos
  7. agora é o índice geoespacial 2D. Mas também
  8. darei suporte a índices geoespaciais esféricos, ou seja,
  9. aqueles que levam em conta a curvatura da terra.
  10. Mas vou orientá-lo sobre a documentação e os cursos da
  11. MongoDB University caso tenha interesse em saber mais sobre
  12. isso. Em índices geoespaciais 2D, consideramos nossos dados
  13. como tudo que está no plano cartesiano, com valores
  14. na direção x e na direção y. Nesses casos,
  15. temos um local de consulta e, em resposta a
  16. essas consultas, queremos encontrar
  17. itens ou documentos próximos a esse local de consulta.
  18. Você precisa saber, basicamente, três coisas para
  19. poder construir um índice geoespacial no MongoDB. Você
  20. precisa de um campo contendo
  21. um local, e esse local precisa estar armazenado
  22. como um array, com um valor x e, depois, um valor
  23. y. Você pode dar o nome que quiser a esse campo. Eu
  24. simplesmente escolhi o nome local. Poderia ser loc,
  25. posição, ponto, o que você preferir, mas ele precisa
  26. ter este formato, com o valor x primeiro,
  27. seguido do y. Outra coisa importante é
  28. verificar se existe um índice.
  29. Isso é essencial. Crie um índice
  30. neste campo específico. Nesse caso,
  31. preciso chamá-lo de ensure index. E especificar local como o
  32. campo, e também preciso especificar uma direção.
  33. Daqui a pouco veremos um exemplo específico
  34. disso. Repetindo, precisamos criar
  35. um índice neste campo que inclui nossos
  36. documentos e que queremos usar em consultas geoespaciais. Por fim,
  37. para fazer consultas no índice geoespacial,
  38. usamos o operador $near. Basta seguir
  39. estas três etapas em conjunto para poder fazer algo assim,
  40. e obter todos os documentos localizados perto
  41. deste aqui. Vejamos este código,
  42. e depois examinaremos um exemplo de consulta no shell do
  43. Mongo. Então pessoal, este é um script que recuperei do
  44. Open Street Map. Eles escreveram este script para
  45. inserir dados OSM no MongoDB. Note que ele fará
  46. a análise iterativa dos dados OSM,
  47. como fizemos no exemplo anterior, na lição
  48. três. Agora, vamos rolar um pouco a tela,
  49. pois quero mostrar este campo do
  50. local. Para cada nó deste arquivo,
  51. este script cria um valor chamado loc e ele
  52. é composto do valor de latitude e do valor de
  53. longitude para um elemento de nó no arquivo XML.
  54. Depois, ele adiciona esse campo loc ao
  55. registro que ele cria ao se mover no nó
  56. para o qual está criando um documento, certo? No final,
  57. ele acabará criando um documento no
  58. MongoDB, inserindo-o em algum ponto.
  59. Certo? Usando esse campo local, na parte
  60. superior deste código. Seu nome é ensure_index. O
  61. ensure_index é chamado usando esse campo local que
  62. armazena as coordenadas xy. Para nós que são analisados
  63. fora do arquivo OSM XML. Mas a sintaxe
  64. de ensure_index é um pouco diferente em pymongo. Ela coincide
  65. com a sintaxe da linguagem usada aqui, que é
  66. Python. Certo? Em vez de passar um dicionário,
  67. passamos uma lista de tuplas. Passamos
  68. o nome do campo em que
  69. desejamos criar um índice, e também a direção.
  70. E esses são valores constantes disponíveis
  71. em pymongo. Não estamos simplesmente digitando strings,
  72. que seria uma tendência. Certo? Observe que,
  73. como o seu índice está sendo usado aqui para criar
  74. vários índices, este é outro exemplo em que estamos criando um índice
  75. em id e especificamos que desejamos que esse
  76. índice seja criado em ordem ascendente. Certo? Assim,
  77. tecnicamente, GEO2D é um argumento de direção para ensure_index.
  78. E faz sentido pensar nisso como um
  79. argumento de direção porque as consultas que usam o
  80. operador near sempre retornarão documentos classificados pelos
  81. mais próximos ao local da consulta. Vejamos
  82. agora uma consulta real. Lembre-se de que
  83. a consulta que examinaremos no shell do Mongo
  84. é uma consulta relativa à coleção que criamos usando
  85. este script. Este é exatamente o script que usei
  86. para criar esta coleção e armazenar documentos nela no MongoDB. Vamos
  87. dar uma olhada nesta consulta. Preciso
  88. me certificar de que estou usando o banco de dados OSM
  89. e depois criarei a coleção
  90. de nós. O script que acabamos de verificar,
  91. na verdade, cria várias coleções, e uma delas são os
  92. nós, e isso se baseia nas tags de nós
  93. que aparecem no conjunto de dados OSM. Só
  94. para esclarecer, estamos usando o conjunto de dados
  95. OSM de Chicago. Agora vou
  96. consultar esta coleção específica. Note que estou fazendo
  97. a consulta no campo local. E
  98. estou empregando o operador near. E estou especificando
  99. algumas coordenadas. Certo? É isso
  100. que um aplicativo faz para localizar
  101. restaurantes ou outras comodidades próximas à localização de
  102. um usuário que está fazendo a consulta. É isso
  103. que faremos no
  104. back-end de um aplicativo que oferece suporte a esse tipo de funcionalidade.
  105. Vou fazer outra coisa aqui apenas
  106. como ilustração neste exemplo. Está lembrado da lição anterior,
  107. em que verificamos as tags que são aplicadas aos nós?
  108. Existe este campo tg nesta coleção. Certo? Para que
  109. os dados resultantes sejam mais interessantes,
  110. quero verificar se existe mesmo um campo tg.
  111. Assim, teremos dados com alguns nomes e outros tipos de marcações
  112. associadas a eles. De certa forma, conseguimos
  113. descobrir o que existe na proximidades. Este local está
  114. muito próximo ao estádio Wrigley Field. Agora
  115. encontraremos diversos restaurantes, cafés, lojas de conveniência,
  116. , entre outras coisas, na vizinhança. Imagine
  117. que você está saindo do Wrigley Field e usa seu telefone
  118. para ver o que tem por perto. É esse
  119. tipo de pesquisa que fazemos no back-end do
  120. aplicativo como uma forma de suporte. Certo. Estes são
  121. nossos primeiros resultados. Podemos obter mais, digitando IT aqui no shell.
  122. Certo? Encontramos um Jamba Juice.
  123. Uma escola, uma igreja, uma loja de conveniência,
  124. que é a Walgreens. E temos uma Domino's Pizza
  125. e uma Dunkin' Donuts. Acho que isso
  126. é o principal para poder criar
  127. índices geoespaciais no MongoDB. Para saber
  128. como usar índices geoespaciais, verifique o estudo de caso na próxima lição.