【问题标题】:Generating surrogate keys remotely远程生成代理键
【发布时间】:2009-11-26 22:21:10
【问题描述】:

提前抱歉,因为这个问题与其他问题相似(但不一样!)。

无论如何,我需要能够在多个位置生成代理键,以便以后同步。我正在考虑使用 GUID,但是这些键可能必须出现在 URL 的参数中,而且 GUID 会非常复杂和丑陋。

我正在考虑一种允许我使用整数的方案,从而在数据库中提供更好的性能,但显然我不能简单地使用自动数字。这个想法是使用具有两种含义的键——我相信它被称为高低策略。密钥将由源(生成它的位置,通常在此业务案例中的 2 个位置中的 1 个)和自动递增值组成。例如:

1-000000567, 1-000000568, 1-000000569, 1-000000570, ...

对于另一个来源:

2-000000567, 2-000000567, ...

这也意味着我可以将它们作为整数存储在数据库中(即“2-000000567”将变为整数“2000000567”)。

任何人都可以看到这有什么问题吗?比如可能出现的indexingfragmentation?或者甚至是更好的方法?

只是为了确认一下,这个键没有商业意义,用户永远不会看到它(除了可能在 URL 的参数中)也不会使用它。

我期待您的意见并感谢您的时间,谢谢一百万:)

【问题讨论】:

    标签: database surrogate-key


    【解决方案1】:

    这解释了您所指的 hilo 算法:What's the Hi/Lo algorithm?

    这是解决诸如您的问题的“断开连接”问题的常用解决方案。例如,如果您使用的是 Hibernate/nHibernate,它是推荐的主键选项之一。

    【讨论】:

      猜你喜欢
      • 2019-03-27
      • 2021-02-08
      • 2012-01-07
      • 2023-03-08
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多