聊一下cassandra的Sorted String Table的寫機制
粗略整理了一下cassandra的SSTable的儲存機制,可以透過這個理解一下SSTable寫操作效率很高的原因
** 新增記錄,生成SSTable **
Cassandra新增記錄首先通過寫commit log,然後寫memtable,當memtable滿時,更新到磁碟上生成SSTable檔案.
** 更新記錄 **
SSTable檔案寫入磁碟後不再更新,如果有新增或者修改的同樣寫入commit log和memtable,並非同步寫入磁碟生成新的SSTable檔案. 這裡比較關鍵的是每一條記錄都有一個timestamp,修改記錄並不覆蓋原來記錄,而是有一個最新的timestamp,每條記錄的大致結構如下:
{ row_key, column_name, value, timestamp }
其中通過row_key來建立索引,按照順序排列,必要時column_name也能成為索引。
** 刪除記錄 **
同樣刪除記錄也不更新原有檔案,而是生成一個timestamp比較新的記錄,用tombstones標示該記錄已經被刪除
** 查詢記錄 **
如果在memtable,key cache中找不到最新記錄的話,從最新timestamp的SSTable檔案開始查詢,如果首先遇到tombstones標示,則認為記錄被刪除。 如果找到了記錄則取timestamp最新的記錄。
** 整合檔案 **
當SSTable檔案過多時,Cassandra會在後臺整合檔案,回收掉老記錄、被刪除的記錄。
上面的總結由於時間倉促肯定有不對的地方,大家自己參考Cassandra程式碼.
** 參考 **
相關文章
- STL——STL中string的寫時拷貝機制
- 聊一聊Integer的快取機制問題快取
- 聊一聊HTTP快取機制HTTP快取
- 聊一聊 Spring 中的擴充套件機制(一)Spring套件
- 聊一聊 Spring 中的擴充套件機制(二) - NamespaceHandlerSpring套件namespace
- 聊一聊解謎遊戲的設計(三):機制與劇情遊戲
- 聊一聊解謎遊戲的設計(二):機制與關卡遊戲
- 從榮耀戰魂聊格鬥遊戲的機制等遊戲
- 淺淺的聊一下 WebSocketWeb
- 淺聊java執行機制Java
- flashback log的寫入機制研究
- 從動物森友會聊主機遊戲聯機機制遊戲
- 資料庫表--sorted hash clustered table資料庫
- 聊一下JavaScript ES6的IteratorJavaScript
- 面試官:聊一聊SpringBoot服務監控機制面試Spring Boot
- Delphi的元件讀寫機制(一) (轉)元件
- Delphi的元件讀寫機制(二) (轉)元件
- Delphi的元件讀寫機制(三) (轉)元件
- Java鎖機制瞭解一下Java
- Java 鎖機制瞭解一下Java
- analyze table 的各種語法及對應工作機制
- 請版主講一下rebuild index的執行機制吧?RebuildIndex
- ReflectUitls類的編寫和對反射機制的解析UITLS反射
- 高寫入負載情況cassandra當機故障解決負載
- COW奶牛!CopyOnWrite機制瞭解一下
- 理一下docker在各平臺上的執行機制Docker
- 跟著辛星深入探討一下PHP的反射機制PHP反射
- 面試官:要不我們聊一下“心跳”的設計?面試
- 單例模式(下)---聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) - 聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) – 聊一聊單例模式的幾種寫法單例模式
- table 元件瞭解一下?元件
- 冷門的 Java 應用程式安全沙箱機制瞭解一下Java
- COW奶牛!Copy On Write機制瞭解一下
- Mysql鎖機制簡單瞭解一下MySql
- Flutter 瀑布流如何仿寫原生的複用機制?Flutter
- 面試官:聊一下對框架配置載入的理解吧!面試框架
- 聊一下Button事件、命令、行為的觸發順序事件