在云量调换器中存储UUID

时间:2017-02-16 22:28:02

标签: google-cloud-platform google-cloud-spanner

我想将UU​​ID用作Cloud Spanner中的主键。读取和编写UUID的最佳方法是什么?是否有UUID类型或客户端库支持?

2 个答案:

答案 0 :(得分:3)

最简单的解决方案是将其存储为标准RFC 4122格式的STRING。 E.g:

" d1a0ce61-b9dd-4169-96a8-d0d7789b61d9 "

这将需要37个字节来存储(36个字节加一个长度字节)。如果您真的想保存每个可能的字节,可以将UUID存储为两个INT64。但是,您需要编写自己的库来序列化/反序列化值,并且它们在SQL查询中看起来不会很漂亮。在大多数情况下,每行额外节省大约21个字节可能不值得。

请注意,某些UUID生成算法会根据时间戳顺序生成UUID。如果机器生成的UUID值单调递增,那么这可能导致Cloud Spanner中的热点(这类似于使用时间戳作为主键开头的反模式),因此最好避免这些变体(例如不建议使用UUID版本1)。

答案 1 :(得分:1)

根据Cloud Spanner documentation

有几种方法可以将UUID存储为主键:

  • 在STRING(36)列中。
  • 在一对INT64列中。
  • 在BYTES(16)列中。