2013-07-31 28 views
-1

我需要詳細瞭解如何在Cassandra中設計高效的數據結構。有沒有在線演示或教程來了解Cassandra的數據結構?我需要能夠設計具有列和有效載荷的列族,並且看到一些具體的實例。我會很感激,如果有人可以推薦一個可以讓我做到這一點的來源。Cassandra數據結構

回答

0

在組成Cassandra代碼庫的幾千個類中,我懷疑C *的性能可歸因於單個數據結構。這個主題對於單個在線演示來說有點複雜,但是...

比源代碼有什麼更好的源代碼...開始查看代碼並檢查使用的數據結構。內存中的數據存儲在一個名爲memtable的內存中,該內存是一個已排序的字符串表(sstable)。內存中的數據然後刷新到磁盤並再次存儲在sstables中。這個SO question在二進制嘗試和sstables之間進行比較,以便爲dB中的列編制索引。

我發現有趣的其他數據結構是修復過程中使用的merkle樹。這是一個哈希二叉樹。使用merkle樹有許多優點和缺點,但主要優點(並且我認爲是不利的)是,它減少了需要通過網絡傳輸的數據以進行修復(又名樹同步),但犧牲了本地io的需要用於計算樹的哈希值。閱讀SO answer的更多詳情,並閱讀關於wikipedia的merkle樹。還有對dynamo paper的第4.6節和第4.7節的修復過程中使用梅克爾樹木的很好的描述。

+0

謝謝。但是,我正在尋找有關業務數據在列族中的表示形式的指導,其中包含行標識,列族,列,有效負載等。必須列中的列彼此相鄰(水平),或者它們可以是另一個(垂直)? TX – TomFH