2015-11-02 40 views
1

我正在學習Cassandra作爲我爲其中一個涉及大數據的項目之一的SQL數據庫的替代方法。在單個請求中查詢Cassandra上的拆分分區

爲了學習的目的,我一直在觀看DataStax提供的視頻,更具體地說是涵蓋了Cassandra中的建模數據的DS220。

在課程系列中觀看videos之一時,我介紹了分割分區以管理分區大小的概念。

我目前的理解是Cassandra的每個分區的最大邏輯容量是2B條目,但每個分區的建議最大值爲幾百MB。

我目前正在處理大量必須存儲的實時財務數據(時間序列),這意味着我可以在一天內輕鬆填寫GB值爲數據的數據。

視頻課程介紹瞭如何引入額外的分區鍵以便按目的拆分分區或減小每個分區的大小要求。 視頻指出使用基於時間的密鑰或任意「桶」密鑰,該密鑰在達到可管理行數時遞增。考慮到這一點,這導致我遇到以下問題:鑑於分區鍵僅用作相等條件(即指向分區以查找記錄),我如何查找所有最終存在的記錄分散在多個分區而不必指定存儲桶或時間戳密鑰?

例如,我可能會在一天內收到1M條記錄,這可能會超過100-500Mb的分區限制,因此我無法按日期設置分區,這意味着我的日常數據將被分解爲小時分區,或者分解爲「分區」分區(用於平衡分區大小)。這意味着我所有的日常數據將分佈在多個分區分割中。

鑑於這種情況,我該如何去查詢特定日期的所有記錄? (其他集羣密鑰可能包含我想要獲得結果的符號,或者我希望該特定日期的所有記錄)

任何幫助將不勝感激。

謝謝。

回答

1

基本上這可以歸結爲爲您的數據選擇正確的分辨率。我想說的第一步是確定哪些數據最適合您。爲了舉例,我們將1小時視爲好事,問題是如何獲取特定日期的所有記錄。

您的應用程序邏輯會稍微複雜一些,因爲您正在以簡單的方式存儲以分佈式方式存儲大量數據。您可以獲取所需的日期,並在循環中發出24個查詢,並在應用程序級別粘貼數據。但是,當你將它粘在一起時可能會很大(我不知道你的演示文稿或導出需求,所以這可以將1M內存拉到內存中)。

其他想法可以有一個表作爲簡單的查找表,其中包含具有該日期的財務數據的分區鍵的日期和值的鍵。當你閱讀時,你首先需要查找表來獲取密鑰,然後到具有結果的分區。您還可以存儲每個分區鍵值的計數器,以便知道預期的數據量。

總而言之,這是最好弄清楚你的數據設置一些自然的水桶,把它添加到日期(組織,郵政編碼等),你可以使用技巧及附加的查詢表。這種方法可以用於你提到的符號。您可以使用符號作爲分區鍵,將每個日期的聚類和分區的值以該日期的結果作爲值。比你查詢的29-10-2015符號#,你看到分區ADZ有結果,所以你去這些分區,並從他們那裏得到的財務數據,並一起把它粘在應用水平。