首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何才能为在所有碎片中操作的应用程序提供无缝的自动密钥生成方法?

问我们如何才能为在所有碎片中操作的应用程序提供无缝的自动密钥生成方法?
EN

Stack Overflow用户
提问于 2011-07-20 17:18:26
回答 2查看 94关注 0票数 1

http://www.dbshards.com/articles/database-sharding-whitepapers/

自动递增密钥管理。数据库管理系统提供的典型自动增量功能为插入数据库的每个新行生成一个顺序键。对于单个数据库应用程序来说,这很好,但是在使用数据库分块时,必须以协调的方式跨所有碎片管理密钥。这里的要求是为应用程序提供一种无缝的、自动化的密钥生成方法,一种跨所有碎片操作的方法,确保密钥在整个系统中是唯一的。

我不明白我们如何能够为在所有碎片上操作的应用程序提供无缝的自动密钥生成方法。

我听说过使用GUID,但是因为GUID不能保证在不同的机器上是唯一的,我看不出它将如何可靠地工作。

EN

回答 2

Stack Overflow用户

发布于 2011-07-20 17:36:35

对于MySQL,您可以使用服务器变量增量和偏移让不同的服务器生成不同的Ids以避免冲突。完全由您来配置正确的服务器,这样您就不会有重复的值。

票数 1
EN

Stack Overflow用户

发布于 2011-07-20 18:03:49

对于我开发的分布式数据库系统,我一直在努力解决这个问题,当我切换到使用GUID作为主要的唯一标识符时,所有的问题都消失了。我强烈推荐他们。不仅精细标识符在单个键定义数据域中是唯一的,而且您还可以拥有引用多个域的通用表。

我还学会了不要依赖业务数据来获取数据库中真正的唯一密钥,客户认为这些密钥是唯一的,但是当他们想要更改这些密钥时总是会发生意外,而且很多时候都有未定义的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6765823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档