database-design - Google Cloud Spanner 中的自动增量

标签 database-design google-cloud-platform scalability data-modeling google-cloud-spanner

Google Cloud Spanner recommends反对对主键使用单调递增的整数。这对于顶级表来说非常有意义,因为它会创建热点。但是交错表呢?无论如何,它们将存储在同一个节点上。它们也按排序顺序保存,因此使用 UUID 或其他一些随机 ID 似乎不是最理想的,特别是如果它们也将按排序顺序检索。

读取最大 id 并为新行存储 maxId + 1 是正确的解决方案吗?

最佳答案

交错的子表行以父表的键为前缀,因此只要父键是非顺序的,就可以将它们视为非顺序键。在这种情况下,通常应该没问题,因为正如您所注意到的,整个 key 范围将由一个 Span 服务器提供服务。如果您担心在这种情况下对单个 Span 服务器进行热点定位,最好不要交错表。

还应该注意的是,建议反对的实际上是单调增加或减少键,因为它们具有相同的效果,只是在范围的两侧。

关于database-design - Google Cloud Spanner 中的自动增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271558/

相关文章:

ruby - Rails 应用程序中复杂数据结构的遍历

sql - 有很多数据库 View 可以吗?

database - 更改日志/审计数据库表的最佳设计?

javascript - 谷歌函数 : TypeError: Cannot read property 'name' of undefined

postgresql - Cloud SQL - PostgreSQL - 如何导入 .csv 文件?

xml - 搜索或索引 XML 文件

mysql - 帮助设计数据库

javascript - 如何使用 Google Cloud Function 高效删除旧的 Firebase Cloud 文档?

c# - 使用 CQRSish 模式横向扩展、多读数据库

database - 你怎么不加入?