在第一部分中,咱们介绍了一些基本实践,而后经过一个具体的例子帮助你们开启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