2015-11-05 27 views
4

我正在研究一個項目,我們每天導入50k-100k個數據點,位於時間上(YYYYMMDDHHmm)和空間上lon,lat),然後根據我們用戶設置的查詢參數動態呈現到地圖上。我們確實使用低於給定縮放級別的預先計算的羣集。時空系列的複合分區鍵(Cassandra)與交錯索引(Accumulo,BigTable)

在這種情況下,鑑於我們正在爲我們的存儲層選擇數據庫引擎,我目前正在評估Cassandra和BigTable的變體。

具體而言,我試圖理解在卡桑德拉與在BigTable的交織索引關鍵字,如一個GeoMesa使用利用複合分區鍵之間的差。

據我所知,這兩種方法都可以利用COTS硬件,並且可以進行調整以減少熱點並最大化空間填充。

我應該遵循什麼邏輯步驟來區分兩者?儘管我計劃在不久的將來對兩種方法進行測試,但我希望聽到更合理,更有教養的方法。

回答

-1

GeoMesa實際上支持像Accumulo和卡桑德拉都BigTable的克隆。 Cassandra在撰寫本文時的支持目前處於早期階段。 README有索引方案的描述。

兩種實現都利用Z2或Z3(取決於索引是否僅是空間或時空)交錯索引。 BigTable克隆索引將全分辨率Z3放入主鍵中。查詢只是對已排序的鍵進行範圍掃描。 Cassandra要求明確列舉分區鍵(除非您正在進行全表掃描)。由於這張臉,GeoMesa的Cassandra索引使用組合鍵在分區鍵和範圍鍵之間傳播信息。分區密鑰是一個粗糙的時空密鑰,將世界分爲NxN個單元。然後,範圍鍵是全分辨率Z3交錯索引。查詢分解爲重疊桶(分區鍵)和每個桶內的Z3範圍(範圍鍵)的枚舉。不得不枚舉分區鍵可能會導致大量的網絡瑣事以滿足查詢。設置存儲分辨率是減少這種煩人的關鍵。