2017-07-20 65 views
1

Cassandra是Hadoop作爲數據倉庫的一個很好的備選方案,其中數據僅附加到數據倉庫中,源數據庫中的所有更新都不應覆蓋數據倉庫中的現有行,而是被追加。 Cassandra是否真的可以充當數據倉庫或僅僅作爲存儲批處理/流查詢結果的數據庫?Cassandra用於數據倉庫

回答

1

Cassandra既可以用作數據倉庫(原始數據存儲),也可以用作數據庫(用於最終數據存儲)。這更多取決於您想要對數據執行的情況。
您甚至可能需要同時擁有Hadoop和Cassandra才能達到不同的目的。
假設您需要收集和處理來自多個移動設備的數據,並向用戶提供一些複雜的聚合報告。因此,首先,您需要儘可能快地保存數據(因爲新部分經常出現),因此您在此處使用Cassandra。由於Cassandra在聚合功能方面有限,因此您需要將數據加載到HDFS中,並通過HQL腳本進行一些處理(假設您不擅長編碼,但是複雜的SQL很好)。然後,您將報告結果從HDFS移動到由用戶ID分區的專用報告表中的Cassandra。
因此,當用戶想要在上個月獲得有關其活動的聚合報告時,該應用程序將採用活動用戶的ID並返回Cassandra的聚合結果(因爲它是簡單的鍵值搜索)。
因此,對於您的問題,是的,它可能是一種替代方案,但選擇策略取決於數據類型和應用程序業務案例。
你可以閱讀有關卡桑德拉 的使用here

+0

更多信息,比方說,我想記錄源數據庫中每一個變化,看到的變化給它加時則可以卡桑德拉幫助那裏,因爲它主要是一個OLTP數據庫可能更新現有的行,而不是每個變化添加一個新的 – guru107

+0

是的,這是有道理的一些限制。例如,每個Cassandra都對應於RDBMS行。所以基本上,卡桑德拉的「插入」命令只會將行添加到新列中,並且執行得很好。但是,假設你的數據經常改變。所以你只是想回滾一些變化,但你所擁有的只有一行,有1000萬列。你如何找到回滾點?您也可以考慮存儲不是按行分發的更改,而是通過一些時間戳。但是,那麼很難找到在大行列表中更改的行。 –