Cassandra客户端侧分区密钥计算,以节省磁盘空间

时间:2015-08-17 14:29:10

标签: cassandra cql datastax-java-driver

我的表有一个由五个大字段组成的复合分区键。

我注意到由于这五个字段的大小,此表的SSTable索引文件非常大。

我实际上不需要从我的表中检索这些字段的值,所以为了节省空间我想在客户端中将它们散列为单个值,然后使用该单个值作为分区键, Cassandra在将复合分区键映射到单个标记值时也会这样做。

所以我想知道java驱动程序中是否有函数或者我可以在客户端使用的一些java库函数来生成这个单值。

我想我想要使用的类型是uuid,所以我正在寻找一个函数,我可以传递N值并获取一个uuid,然后用作我的分区键值。有人知道这样做的好方法吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过启用压缩功能并查看当前数据模型的工作原理?

使用哈希值作为分区键将容易发生哈希冲突。散列碰撞的实际机会取决于使用的算法。固定算法(如128位murmur3)将大大降低机会,但它们可能仍会发生,在这种情况下,您可能会在应用程序中看到数据交换。