2012-10-10 41 views
13

我需要存儲用戶記錄到數據庫中的GPS軌跡。爲了在地圖上繪製線條,每5米的移動軌道將包含一個標記。我估計200公里的軌道,這意味着40000個標記。我估計每個用戶至少有50,000個用戶,並且有20個200公里的軌道。這意味着至少有400億個標記。如何在數據庫中存儲800億個GPS標記

這也需要擴展,所以對於1百萬用戶,我需要800億個GPS標記的容量。由於每組40,000個標記屬於單個軌道,因此我們正在討論1至2000萬個記錄/組GPS軌道。

要求: 用戶將要求在移動應用程序中的谷歌地圖頂部查看這些軌道。

關係: 我目前有2個表格。表一具有:[trackid],[userid],[comment],[distance],[time],[top speed]。

表2有[trackid] [經度] [緯度],這是存儲所有GPS標記的地方。在保持讀取性能的同時存儲此量的GPS數據的有效方式是什麼?

新的信息:

在顯示他們作爲一個谷歌地圖上面的軌道爲目的的KML文件存儲的GPS數據是一個很好的解決方案,節省了數據庫空間。將KML壓縮成KMZ(基本上是帶有KMZ擴展名的壓縮KML)可進一步大大縮小文件大小。 KMZ的加載速度比GPX快得多,並且可以作爲KML層與Google Maps API集成。 See this information from Google獲得進一步的幫助。這似乎是迄今爲止預期需求的最佳解決方案。

+1

你甚至可以將其存儲在一個平面文件,一個標記具有固定長度,所以你可以很容易地找到文件。 – Andrey

+5

我不確定產品建議是按照網站的指導方針進行專題討論或建設性的......但聽起來這是高度規範化的數據。任何良好的RDBMS都應該可以工作。 – David

+0

你能壓縮這些成爲一個B-SPLINE的軌道嗎? – Randy

回答

6

與往常一樣,特定數據庫的選擇取決於您希望如何存儲信息以及如何使用它。因此,如果不知道項目的確切要求以及數據之間的關係,最好的做法是對主題進行一些閱讀,以確定哪種特定產品或存儲模型最適合您。

一個良好的開始是讀取比較數據庫的性能和用途的博客(見附件):

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

+1

注意。我改變了我的問題的措辭,並增加了對這個問題的要求以及當前表之間的關係。也許它可以重新打開? – Karl

+2

有關管理大量GPS標記數據的任何人的更多信息,請閱讀https://developers.google.com/maps/articles/toomanymarkers關於Google解決方案(如融合表)的信息。 – Karl

+0

良好的運動精神。老實說,我認爲你的問題仍然過於寬泛,因爲你一次試圖覆蓋很多不同的領域。就我個人而言,我沒有足夠的特權來重新開啓你的問題(它需要3000點聲望)。有關重新開放問題的更多信息,請參見[本](http://meta.stackexchange.com/questions/36415/how-do-you-reopen-a-closed-question)。 – jrd1