我有一個包含屬性如MongoDB的集合:如何有效地按位置和日期範圍搜索大型數據集?
longitude, latitude, start_date, end_date, price
我有超過500萬份文件。
我的問題是如何儘可能有效地以緯度/經度,日期範圍和價格進行搜索?
在我看來我的選擇是:
- 創建於經/緯的地理空間索引長期使用MongoDB的鄰近搜索...然後根據日期範圍和價格過濾此。
- 我還沒有測試這個,但是,我擔心如果我們每秒搜索一次左右,搜索數據量就會太大,無法快速搜索。
- 您是否有過在這些情況下MongoDB會如何反應的經驗?
- 按位置將數據拆分爲多個集合。即通過諸如london_collection,paris_collection,new_york_collection之類的城市。
- 然後,我需要先經緯度/緯度查詢,找到最近的城市集合,然後使用日期和價格過濾器對該集合中的子集數據執行MongoDB空間搜索。
- 我會分配不均勻的文件,因爲有些城市會有比其他文件更多的文件。
- 按日期而不是位置創建集合。與上面相同,但每個文檔都根據日期範圍分配了一個集合。
- 具有跨多個集合的日期範圍的搜索存在問題。
- 根據每個文檔的city_start_date_end_date創建唯一標識符。
- 再次,我將不得不使用我的緯度/長查詢來查找最近的城市追加日期範圍來訪問密鑰。這似乎相當快,但我真的不喜歡城市查找方面......它似乎有點難看。
我與選項1)實驗的過程,但真的很想聽聽你的想法之前,我去太遠一個特定的路徑?
搜索引擎如何分割和管理他們的數據......這肯定是一個類似的問題?
另外我不必使用MongoDB,我打開其他選項?
非常感謝。
如果您的索引正確,第一個解決方案肯定會與關係數據庫(mysql)一起工作。 – ElKamina