Pergunta

Tem algum de vocês teve alguma experiência com o uso de NoSQL bancos de dados (não-relacionais) para armazenar dados espaciais? Existem benefícios potenciais (velocidade, espaço, ...) do uso de tais bancos de dados para dados de espera para, digamos, um aplicativo de desktop (em comparação ao uso SpatiaLite ou PostGIS)?

Eu vi href="http://gissolved.blogspot.com/2009/06/spatial-indexing-mongodb-with-rtree.html" sobre o uso do MongoDB para espacial dados , mas eu estou interessado em alguma comparação de desempenho.

Foi útil?

Solução

gráficos bases de dados como Neo4j são um ajuste muito bom, especialmente como você pode adicionar diferentes esquemas de indexação dinamicamente como você ir . coisas típicas que você pode fazer em seu dados de base é, naturalmente, 1D indexação (por exemplo Timline ou B-Trees) ou coisas funkier como curvas de Hilbert etc, veja Nick blogue . Além disso, por alguma demonstração ao vivo, olhar para a ferramenta GIS de desktop open source AWE aqui , o ser gráfico indexado subjacente vez visível 07:00.

Outras dicas

Couchdb também tem uma extensão espacial simples

http://vmx.cx/cgi-bin/blog/ index.cgi / categoria / CouchDB

Atualmente, MongoDB usa geohashing com árvores-B, que será mais lento do que os R árvores de PostGIS (eu não posso dar números exatos, estou com medo, mas há uma abundância de literatura teórica sobre as diferenças). No entanto, nestes slides, http://www.slideshare.net / nknize / RTREE-espacial-indexação-com-mongodb-mongodc o autor fala sobre a adição de R árvores para MongoDB e sharding em uma chave geo. Você fala sobre o uso de desktop, então geosharding pode não ser de interesse, como benefícios de sharding será sentida mais em grandes conjuntos de dados. Em última análise, ele provavelmente se resume mais para o que você quer fazer com seus dados espaciais. Postgis tem muito mais funções e suporte para a topologia, rasters, 3D, conversões entre sistemas de coordenadas, por isso, se é isso que você está procurando, PostGIS ainda seria a melhor opção. Se você estiver interessado em armazenar bilhões / trilhões de objetos espaciais e apenas correr achado básico todos os pontos de perto / dentro deste ponto com base em alguns critérios, em seguida, MongoDB é provável uma escolha muito boa.

Eu tenho o armazenamento de dados espaciais com ZODB. Há alguma vantagem de desempenho inerente acesso a dados de arquivo local (SpatiaLite) ou socket Unix (PostGIS) em comparação com os pedidos de TCP ou HTTP (CouchDB etc), com certeza, mas ter um índice espacial faz a maior diferença. Eu estou usando as mesmas árvores R mencionados no artigo MongoDB, mas há uma abundância de boas opções. A suíte JTS topologia tem vários índices espaciais para Java.

Cassandra é também uma opção para dados espaciais:

http://www.readwriteweb.com/cloud/ 2011/02 / video-SimpleGeo-cassandra.php

Tarantool suporta índice bidimensional espacial (RTREE) com pesquisa vizinho mais próximo, se sobrepõe, contém, e outros operadores espaciais. Tarantool mantém todo o conjunto de dados na memória RAM, tornando-se a única OSS banco de dados in-memory com o apoio índice espacial. https://github.com/tarantool/tarantool / wiki / R-tree-index-quick-start-and-uso

MarkLogic (Enterprise noSQL) proporciona funcionalidade espacial. Este produto NoSQL fornece aplicações de SIG a habilidade de fundir vários objetos em uma entidade. Isso fornece suporte para o gerenciamento de relacionamentos através estruturado e conteúdo não estruturado, proveniência e pedigree informações sobre os dados, informações históricas e cronograma, etc, em uma única entidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top