【问题标题】:How does MongoDB implement it's spatial indexes?MongoDB如何实现它的空间索引?
【发布时间】:2012-09-19 09:34:33
【问题描述】:

当前实现在标准之上对地理哈希码进行编码 MongoDB B 树。 $near 查询的结果是准确的。一限制 使用这种编码,虽然速度很快,但前缀查找不会给出 准确的结果,尤其是在位翻转区域附近。 MongoDB 解决了这个问题 通过在初始前缀扫描后进行网格邻居搜索来挑选 提高任何落后者的分数。这通常可以确保性能 在提供正确结果的同时仍然很高。

这是否意味着mongodb将地球分成了几个网格?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    Greg Studer (10gen) 的这个演示文稿详细讨论了地理空间索引: Geospatial Indexing with MongoDB.

    MongoDB 2.2 中的标准地理空间实现使用二维GeoHash 方法,精度可变:

    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 方法确实存在一些边缘情况,其中一些点可能在空间上很接近,但具有不同的哈希值。 MongoDB 还包括一个 Geospatial Haystack Index,它专门针对具有一个附加索引条件的小区域“近”长/纬度搜索进行了调整(例如:“查找 25 英里内名称为 'foo' 的所有餐厅”)。

    Nicholas Knize (Thermopylae) 的另一个有趣的演示将当前的 B-tree / GeoHash 方法与R-trees 进行了对比。如果您向前跳到幻灯片 8,则有一个可视化的解释可能会有所帮助: RTree Spatial Indexing with MongoDB - MongoDC.

    【讨论】:

    • 链接断开,即使用 MongoDB 进行地理空间索引
    猜你喜欢
    • 2011-04-22
    • 2011-11-08
    • 1970-01-01
    • 2016-02-12
    • 2011-10-23
    • 2019-11-30
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    相关资源
    最近更新 更多