2012-09-19 21 views
5

Geçerli uygulama, standart MongoDB B ağaçlarının üstündeki coğrafi karma kodlarını kodlar. $ Near sorgusunun sonuçları kesin. Bu kodlamaya sahip bir sınırlama , hızlı iken, önek aramaları, özellikle bit çevirme alanlarının etrafında, kesin sonuç vermez. MongoDB, 'u herhangi bir straggler noktasını seçmek için ilk önek taramasından sonra bir ızgara-komşu araması yaparak bu 'u çözer. Bu genellikle doğru sonuç verirken performansın çok yüksek kalmasını sağlar.MongoDB mekansal endeksleri nasıl uygular?

Bu, mongodb'un dünyayı birkaç ızgaraya bölmesi anlamına mı geliyor?

cevap

6

Bu sunum Greg Studer (10gen) tarafından geospatial endeksleri ayrıntılı olarak ele almaktadır: Geospatial Indexing with MongoDB. MongoDB 2.2 de olduğu gibi

standart coğrafi uygulama hassas değişken bit ile, bir 2-D GeoHash yaklaşım kullanır:

By default, precision is set to 26 bits which is equivalent to approximately 
2 feet given (longitude, latitude) location values and default (-180, 180) 
bounds. 

GeoHash yaklaşımı bazı noktalar uzamsal yakın fakat farklı olabilir kenar durumlarda var sağlamalarının. MongoDB ayrıca bir ek endeksli kriterleri ile küçük bölge "yakın" uzun/lat aramalar için ayarlanmış bir Geospatial Haystack Index içerir (örneğin: "'foo' adı ile 25 mil içindeki tüm restoranları bulmak").

Nicholas Knize'den (Thermopylae) başka bir ilginç sunum, mevcut B-tree/GeoHash yaklaşımını R-trees ile karşılaştırır. 8'i kaydırmak için ileri atlarsanız yararlı olabilecek görsel bir açıklama vardır: RTree Spatial Indexing with MongoDB - MongoDC.