我的表有一个由五个大字段组成的复合分区键。
我注意到由于这五个字段的大小,此表的SSTable索引文件非常大。
我实际上不需要从我的表中检索这些字段的值,所以为了节省空间我想在客户端中将它们散列为单个值,然后使用该单个值作为分区键, Cassandra在将复合分区键映射到单个标记值时也会这样做。
所以我想知道java驱动程序中是否有函数或者我可以在客户端使用的一些java库函数来生成这个单值。
我想我想要使用的类型是uuid,所以我正在寻找一个函数,我可以传递N值并获取一个uuid,然后用作我的分区键值。有人知道这样做的好方法吗?
答案 0 :(得分:0)
您是否尝试过启用压缩功能并查看当前数据模型的工作原理?
使用哈希值作为分区键将容易发生哈希冲突。散列碰撞的实际机会取决于使用的算法。固定算法(如128位murmur3)将大大降低机会,但它们可能仍会发生,在这种情况下,您可能会在应用程序中看到数据交换。