2014-01-20 64 views
7

我需要快速查询来查找某个点的某个GPS半径内的所有文档。半径会很小,精度也不是那么重要,所以我不需要考虑球面几何。将会有很多写道。 2ds索引比2dsphere更好吗?2dsphere vs 2d索引性能

回答

11

如果您绝对不需要球形几何或复合地理索引中的多个字段(请参阅MongoDB手册中的Geospatial Indexes的注释),2d索引更合适。在将坐标保存为传统对(经度,纬度)而不是GeoJSON点方面也存在轻微的存储优势。这可能不足以显着影响您的写入性能,但这取决于“大量写入”的含义以及这些是否会推动您的I/O限制。

我不确定不同地理索引类型查询的相对性能,但您可以在自己的开发/分期环境中轻松设置代表性测试用例进行比较。确保您在多次迭代中平均测量值,以便将文档加载到内存中并进行公平比较。

您可能还需要考虑haystack index,其设计结合在小范围内返回的2D查询结果与附加的现场条件(例如,“找到餐馆附近经度,纬度”) 。如果您没有按准确程度或按距离排序(并且有额外的搜索字段),则此索引类型可能适合您的用例。

+2

谢谢,这是我的想法,但有些蒙戈文档的制作听起来像2d索引更多的是传统规定。 – user1055568

1

2dsphere is now version 3 after MongoDB 3.2

2dsphere是https://jira.mongodb.org/browse/SERVER-18056

更多的细节更好

数据:https://www.mongodb.com/blog/post/geospatial-performance-improvements-in-mongodb-3-2

3.1.6 - 2dsphere V2

“executionTimeMillis”:1875年,

“totalKeysExamined”:24335,

“totalDocsExamined”:41848,

重新索引

3.1.6后 - 2dsphere V3

“executionTimeMillis”:94,

“totalKeysExamined “:21676,

”totalDocsExamined“:38176,

与2d相比较

3.1。6 - 2D

“executionTimeMillis”:359,

“totalKeysExamined”:95671,

“totalDocsExamined”:112968,