Cassandra客户端分区键计算节省磁盘space

Cassandra client side partition key calculation to save disk space

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

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

我实际上不需要从我的 table 中检索这些字段的值,因此为了保存 space 我想在客户端中将它们散列为单个值,然后使用该单个值作为分区键,就像 Cassandra 将复合分区键映射到单个标记值时所做的那样。

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

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

您是否尝试过启用压缩并了解它如何与您当前的数据模型一起使用?

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