在第一部分中,咱們介紹了一些基本實踐,而後經過一個具體的例子幫助你們開啓Cassandra數據模型設計之旅。你能夠跳過第一部分直接閱讀本篇文章,可是我推薦你看看第一篇文章中「術語和約定」部分。若是你是一個Cassandra新手,我仍是建議你先閱讀第一部分。
如下列出的實踐有些可能會發生變化,我將提供相關JIRA地址給你們,以方便跟蹤最新進展。下面讓咱們先從幾個基本實踐開始吧!
經過column name存儲數據是徹底OK的
一樣讓column value爲空也是沒問題的
經過column name存儲數據是一項經常使用的實踐,一樣若是沒有必要保存column value,你也可讓它爲空。這樣作的動機是column name是物理有序存儲的的,而column value不是。(譯者注:好比某個column name爲字符串類型,那麼插入00五、00一、00三、007最終的存儲順序將是00一、00三、00五、007,這將意味着能夠根據column name順序讀取數據)。
注意:
column name(以及row key)最大爲64KB,因此請不要存儲如「物品描述」之類的信息。
不要單獨使用timestamp做爲column name,那樣會致使2個或者多個應用服務器同時寫入Cassandra時形成數據覆蓋(譯者注:相同row key,相同column name會覆蓋column value),推薦使用uuid(type-1 uuid)代替(譯者注:time-based UUID主要由cassandra客戶端時間戳、序列號、MAC地址組成,這樣的組合能夠大大下降數據衝突)。
column value最大爲2GB,它的採用非流式數據讀取,cassandra會將整個value加載到heap內存中,這是很危險的,因此請確保column value只存儲不超過幾MB的數據。(使用column value進行大數據存儲一段時間內都不會被支持,參見 Cassandra-265,可是經過Cassandra java 客戶端——Astyanax,能夠經過分塊的方式解決這個問題)。java