GCP Spanner 中 PK 的最佳哈希方法

Best hashing method for PK in GCP Spanner

我有唯一的字符串,我想将其用作 Spanner table 的 id 列(主键)。为了更好地跨逻辑分片分布写入,我想按照提到的 here.

散列字符串

目前,我正在使用 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?

不在 Spanner 中。它们本质上是表示字节数组的不同方式。一般来说,base64 编码的字符串可能比十六进制(base16)的更短;而十六进制的可能更易于阅读。当涉及到您的用例时,您可能需要进行基准测试并在权衡 pros/cons.

时查看实际性能
  • If the id column is STRING 64, does the value being smaller than 64 offer any performance benefits?

从技术上讲是的,但这只是因为您 storing/fetching 的数据较少。 STRING 64 只告诉 Spanner 键的大小限制是多少。它仍然只为密钥分配实际的 space。

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