代码之家  ›  专栏  ›  技术社区  ›  bastianneu

使用应用程序ID生成器与数据库ID生成器

  •  10
  • bastianneu  · 技术社区  · 15 年前

    生成数据库ID的最佳策略是什么?使用数据库生成器?使用自定义生成器?各有哪些优点和缺点?

    3 回复  |  直到 9 年前
        1
  •  11
  •   Community Jaime Torres    7 年前

    数据库生成器:

    • 很容易确保它的独特性
    • 需要额外的往返行程(您必须读回生成的ID)
    • 通常相当简单(序列)
    • 当事务回滚时,序列中可能会出现间隙(由于 Kristen 为了指出这一点)。

    应用程序ID生成器

    • 可以像您需要的那样复杂(例如,如果需要,可以在ID中对对象类型进行编码)
    • 很难做到独一无二(除非你使用UUID)
    • 即使不与数据库通信,也可以分配一个ID

    [编辑]由于UUID非常昂贵(许多DBS中没有本机支持、索引碎片等),大多数应用程序都使用基于DB的生成器。

        2
  •  8
  •   HLGEM    15 年前

    要记住的另一件事是,并非所有数据库插入都来自应用程序。如果要使用应用程序驱动的guid,那么当您遇到新客户,并且必须从其上一个供应商迁移100000条记录时,您将受到极大的伤害。

        3
  •  2
  •   Jeff Davis    15 年前

    我认为最重要的一点是,你可以选择一些可以被你的企业用作标识符的东西。例如,DMV会将您的车牌号放在卡上,如果您忘记了钱包并记住了车牌号,则可以使用它来验证您的身份(例如,当被警察拦下时)。你不会在卡片上放UUID的。

    从您的业务中隐藏标识符可能会导致很多混乱,所以选择一些您不介意告诉客户、客户或业务合作伙伴的东西。我不是说每个人都应该能够记住它,但是如果你在看收据(例如),你至少应该能够通过电话把它读给别人。

    当然,性能也有例外,但是应该小心使用,不要与业务可见标识符混淆。

    看我的相关 blog post