当前位置: 首页 > 知识库问答 >
问题:

在云扳手中存储 UUID

郁灿
2023-03-14

我想在Cloud Spanner中使用UUID作为主键。读写UUID的最佳方式是什么?是否有UUID类型或客户端库支持?

共有2个答案

扶开诚
2023-03-14

根据Cloud Spanner留档:

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

    < li >在字符串(36)列中。 < li >在一对INT64列中。 < li >在字节(16)列中。
濮阳原
2023-03-14

最简单的解决方案是将其存储为标准RFC 4122格式的字符串。例如。:

"d 1 a 0 ce 61-b 9 dd-4169-96 a 8-d 0 d 7789 b 61 d 9"

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

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

此Stackoverflow回答提供了有关各种UUID版本的更多详细信息。(TL;DR:使用版本4和云扳手,因为生成时使用了伪随机数)

 类似资料:
  • 我有一个100s GB大小的扳手表,有两个string和一个DateTime列。我正在尝试使用DELETE语句使超过X天的行过期。 到目前为止,使用Ruby API还没有解决这个问题,我在使用时会遇到事务超时错误或Google::Cloud::UnavailableError:

  • 这两个URL之间有区别吗?一个直接指向mp4,然后另一个URL是“下载链接”?有区别吗? 在谷歌云平台中有这样存储文件的选项吗?

  • GIS云存储,您的“GIS云盘”。支持对多种格式的GIS数据,如UDB/Shapefile/Excel/CSV/GeoJSON等空间数据,进行上传、存储、发布等操作。您可以随时随地上传您的数据,我们将对您的数据及服务进行安全稳定的托管。 您只需注册并登录SuperMap Online即可享受500Mb的免费数据存储空间,以及5,000次/日的托管数据访问量。您也可以通过购买获得更多的存储空间和数据

  • 我试图在我的云功能中访问Firebase云存储,但我一直在云功能日志中出现以下错误: 下面是我的代码: const admin=需要('Firebase-admin'); const函数=需要('Firebase-函数'); 下面是我的包中的依赖项。json: PS:我在星火计划上

  • 如果您的应用程序托管在App Engine上,则可以使用云存储服务,用户可以保存,加载,共享和发布其程序。 设置App Engine 第一个目标是在App Engine上运行您自己的Blockly副本。 下载并安装Python SDK。 登录Google App Engine并创建一个应用程序。 编辑appengine/app.yaml应用程序ID并将其更改为blockly-demo您在上一步中创