2012-02-29 69 views
1

在Cassandra中存儲完全序列化對象的優點和缺點與只在對象內存儲更多基元類型的列有什麼區別?在Cassandra中存儲基元類型與對象類型

在我看來,如果您將整個對象存儲在一列中,您會失去靈活性,但會獲得簡單性。如果一個完整的對象被存儲了,並且你想索引它的一個成員,那麼在列上使用本地的Cassandra二級索引不是不可能的嗎? (雖然我想在這裏你會創建一個額外的列家族使用該成員值作爲行鍵創建自己的索引)

感謝您提供任何信息。我仍然圍繞這種格式的模式設置進行包裝。

回答

2

既有優點也有完整的對象序列化的缺點似乎很明顯:

  • 更多和磁盤上傳輸數據時
  • 能夠使用支持模式演變的工具,如儲蓄或protobuf的
  • 緊湊表示

和缺點:

  • Cassandr本地索引無法在此處使用(cassandra本機索引與數據分區在一起,因此無法使用另一個列系列進行模擬)
  • 無法使用常用工具(如CLI)查詢對象的單個字段
  • 修改對象的單個字段需要加載並保存完整記錄
  • 修改架構需要加載和處理完整數據集(例如,無法刪除列)。

因此,例如,在存儲pageview事件時使用完全對象序列化是一個好主意 - 緊湊性可以節省大量的磁盤空間,寫入後這些事件永遠不會被修改。即使模式更改(即添加了新字段),也不需要觸摸舊數據,只需以新格式寫入新事件並使用ProtoBuf正確讀取舊記錄和新記錄即可。

另一方面,當存儲像'帶標題和標籤的圖片'這樣的對象時,使用它是一個糟糕的主意 - 這些東西有大量的二進制數據和小的可變域。

相關問題