使用cassandra,我想在列族中存储2000万个行键.
我的问题是:
long和utf8 rowKey键之间是否存在真正的性能差异?
任何,行密钥存储大小问题?
我的userkey看起来像这样
rowKey=>112512462152451 rowKey=>135431354354343 rowKey=>145646546546463 rowKey=>154354354354354 rowKey=>156454343435435 rowKey=>154435435435745
Aaron.. 6
Cassandra将所有磁盘数据(包括行键值)存储为十六进制字节数组.在性能方面,行键的数据类型确实无关紧要.它唯一重要的地方是行键的类型验证器/比较器将影响磁盘上的排序顺序.因此,在您的情况下,Long将以不同于UTF8(ascii-betical)的方式排序(数字).
我找不到一个确切的来源,但我记得读过行键的最大大小是64K(你似乎在那之下).默认情况下启用密钥缓存,除非另有说明,否则将缓存200,000个密钥.是否在任何给定时间缓存200,000个密钥就足够了,这取决于您的应用程序的要求.您可以根据可用RAM的数量来增加该数量,但是您应该在小的增量调整中进行测试.
检查Datastax文档以获取有关如何调整行和键缓存属性的说明.
此外,eBay发布了一篇关于Cassandra数据建模的好文章,该文章讨论了可能对您有所帮助的正确行选择/创建.