GCP扳手中PK的最佳哈希方法



我有唯一的字符串,要用作Spanner表的id列(主键(。为了更好地在逻辑碎片之间进行写操作,我想对这里提到的字符串进行散列。

目前,我使用的是sha256 w/hex编码。

  1. 是否有首选的哈希字符串方法用作主键
  2. 在Spanner中,在十六进制上使用base64编码有什么缺点吗
  3. 如果id列是STRING 64,那么小于64的值是否会带来任何性能优势
  • Is there a preferred method for hashing strings to use as a Primary Key?

否。任何均匀分布密钥的哈希函数都可以工作。

  • In Spanner, are there any drawbacks to using base64 encoding over hex?

不在扳手中。它们本质上是表示字节数组的不同方式。通常,base64编码的字符串可以比十六进制(base16(字符串短;而十六进制可能更易于人类阅读。当涉及到您的用例时,您可能需要进行基准测试,并在权衡利弊时查看实际性能。

  • If the id column is STRING 64, does the value being smaller than 64 offer any performance benefits?

从技术上讲是的,但这只是因为您存储/获取的数据较少。STRING 64只告诉Spanner密钥的大小限制是多少。它仍然只为密钥分配实际空间。

事实上,很难说你会得到多少好处,因为可能还有其他因素会超过这个微小的好处。同样,如果你正在将性能推向极限,你应该进行一个基准测试。

最新更新