在 Cloud Spanner 中存储 UUID

2024-02-02

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


最简单的解决方案是将其存储为标准中的 STRINGRFC 4122 https://www.rfc-editor.org/rfc/rfc4122格式。例如。:

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

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

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

This Stackoverflow 答案提供了有关各种 UUID 版本的更多详细信息 https://stackoverflow.com/a/20342413/295290。 (TL;DR:将版本 4 与 Cloud Spanner 一起使用,因为在生成过程中使用了伪随机数)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Cloud Spanner 中存储 UUID 的相关文章

随机推荐

  • 旧代码给出“未使用的参数”错误,但以前从未出现过

    我打开了一些旧的 iOS 代码 当我尝试构建它时 我收到如下代码的 未使用参数 错误 void searchBarTextDidBeginEditing UISearchBar searchBar NSLog Search Bar isn
  • C# if-null-then-null 表达式

    只是为了好奇 方便 C 提供了我所知道的两个很酷的条件表达式功能 string trimmed input null null input Trim and string trimmed input Trim 对于我经常遇到的情况 我想念另
  • 如何在 UICollectionViewCell 中舍入 UIImageView?

    在我的 UICollectionViewCell 类中我写了这个 void layoutSubviews super layoutSubviews self myImageView layer cornerRadius CGRectGetH
  • 在 Jenkins 管道中使用的 groovy 脚本中调用 shell 命令

    我有一个 Jenkins 管道脚本 其中加载了一个外部 Groovy 脚本 其中包含一些执行构建的函数 这些函数应该是普通的常规函数 因为如果有人在本地计算机上的某个地方运行构建 我也想在 Jenkins 之外使用它们 在这些函数中 我需要
  • html5:将画布复制到图像并返回

    我在画布元素上实现了放大和缩小功能 它的工作原理是缩放画布 平移画布 然后再次重绘整个场景 问题是 重新绘制所有内容需要花费很多时间 因为我的画布上有很多东西 我需要一种方法将画布复制到图像对象 然后将图像复制回画布而不损失质量 将canv
  • Rails 未定义 NilClass:Class 的方法“model_name”

    我有一个表单 我想出现在每个页面的顶部 因此我将其包含在 app views layouts application html erb 文件中 但出现错误undefined methodmodel name for NilClass Cla
  • 在 Web 应用程序中存储大型临时“会话”数据的好方法是什么

    我的公司有一个第三方网络服务 我们正在为其设计前端 此 Web 服务使用的 对象 非常大 并且根据创建的子实体的数量而变化 Web 服务不公开提交 加载子实体的方法 仅公开完整的对象层次结构 UI 本身分为许多子屏幕和主 详细视图 以便能够
  • Facebook:使用共享对话框共享 Play 商店链接

    我使用 Facebook Android SDK 中的共享对话框共享链接 我的代码如下所示 FacebookDialog shareDialog new FacebookDialog ShareDialogBuilder this setN
  • Django 模板:如何连接命名 URL 和字符串?

    我有以下设置 The urls py该项目的应用程序 urlpatterns url r main include main urls namespace main The main app s urls py urlpatterns ur
  • iPhone:如何加密字符串

    我想在 iPhone 上使用 AES 256 加密字符串 但通过谷歌没有找到太多信息 我想做的是将一些数据作为我正在创建的游戏的一部分发布到网站上 但我不希望用户能够通过查看其发布方式来作弊 因为它是纯文本 因此 我想将一个加密字符串发布到
  • CSS 文本转换“昂贵”吗?

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Is CSS text transform加工成本高吗 在我看来 浏览器被迫做一些通常不需要的工作 如果你没有转型 但是这是一个很大的
  • 将参数传递给 django admin 中的内联表单

    我有一个继承自 ModelAdmin 的管理类 class TemplateAdmin admin ModelAdmin inlines TemplateAttributeInline CompanyAttributeInline list
  • 什么是 ng-transinclude?

    我在 StackOverflow 上看到了很多讨论 ng transclude 的问题 但没有一个问题能通俗地解释它是什么 文档中的描述如下 标记使用嵌入的最近父指令的嵌入 DOM 的插入点的指令 这相当令人困惑 有人能够用简单的术语解释
  • 将两个原始值转换为 32 位 IEEE 浮点数

    我正在尝试通过 TCP modbus 解码来自 Shark 100 功率计的一些数据 我已经成功地拉下了我需要的寄存器 并从寄存器中留下了两个原始值 如下所示 17138 59381 从手册中 我知道我需要将这两个数字转换为32位IEEE浮
  • HTTP 响应如何找到正确的浏览器窗口?

    如果您打开了两个浏览器窗口 并且使用每个窗口导航到不同的网站 那么软件如何知道哪个 HTTP 响应属于哪个浏览器实例 Update 看来是通过入站 TCP 端口号来区分的 但是不涉及 TCP UDP 的网络消息又如何呢 例如 如果您打开两个
  • 在 GKE 上进行活动/就绪探测检查时,Kubelet 会定期丢失与 pod 的 TCP 连接

    我们在单个 GKE 谷歌 kubernetes 引擎 集群节点中部署了一个软件系统 该节点使用大约 100 个 pod 在每个 pod 中我们定义了 TCP 就绪探针 现在我们可以看到就绪探针定期失败 并显示Unable to connec
  • OS X 中每个 WebView 都有单独的 cookie jar

    我一直在努力实现在 macOS 中为每个 WebView 拥有一个唯一 非共享 cookie jar 的目标 iOS 的 cookie 管理工作方式不同 在阅读了大量 StackOverflow 问题并深入研究文档后 我在这些文章中找到了最
  • 在 Expression 中注入 TDelegate 的参数值并减少表达式

    我需要减少一个表达式 Expression
  • numba @jit 比纯 python 慢吗?

    所以我需要改进我一直在处理的脚本的执行时间 我开始使用 numba jit 装饰器来尝试并行计算 但是它让我困惑 KeyError Does not support option parallel 所以我决定测试 nogil 是否解锁了我的
  • 在 Cloud Spanner 中存储 UUID

    我想在 Cloud Spanner 中使用 UUID 作为主键 读写 UUID 的最佳方式是什么 是否有 UUID 类型或客户端库支持 最简单的解决方案是将其存储为标准中的 STRINGRFC 4122 https www rfc edit