2014-01-20 102 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,