cassandra UTF8或LongType中的密钥验证类类型?

Ami*_*bey 4 java bigdata cassandra nosql

使用cassandra,我想在列族中存储2000万个行键.

我的问题是:

  1. long和utf8 rowKey键之间是否存在真正的性能差异?

  2. 任何,行密钥存储大小问题?

我的userkey看起来像这样

rowKey=>112512462152451
rowKey=>135431354354343
rowKey=>145646546546463
rowKey=>154354354354354
rowKey=>156454343435435
rowKey=>154435435435745
Run Code Online (Sandbox Code Playgroud)

Aar*_*ron 6

  1. Cassandra将所有磁盘数据(包括行键值)存储为十六进制字节数组.在性能方面,行键的数据类型确实无关紧要.它唯一重要的地方是行键的类型验证器/比较器将影响磁盘上的排序顺序.因此,在您的情况下,Long将以不同于UTF8(ascii-betical)的方式排序(数字).

  2. 我找不到一个确切的来源,但我记得读过行键的最大大小是64K(你似乎在那之下).默认情况下启用密钥缓存,除非另有说明,否则将缓存200,000个密钥.是否在任何给定时间缓存200,000个密钥就足够了,这取决于您的应用程序的要求.您可以根据可用RAM的数量来增加该数量,但是您应该在小的增量调整中进行测试.

检查Datastax文档以获取有关如何调整行和键缓存属性的说明.

此外,eBay发布了一篇关于Cassandra数据建模的好文章,该文章讨论了可能对您有所帮助的正确行选择/创建.