使用Application Id Generator与Database Id Generator

时间:2009-08-31 09:31:55

标签: database web-applications

生成数据库ID的最佳策略是什么?用数据库生成器?使用自定义发电机?每种方法的优点和缺点是什么?

3 个答案:

答案 0 :(得分:11)

数据库生成器:

  • 轻松确保它独一无二
  • 需要额外的往返(您必须阅读生成的ID)
  • 通常非常简单(序列)
  • 当事务回滚时,序列中可能会出现间隙(感谢Kristen指出这一点)。

App ID Generator

  • 可以根据需要复杂化(例如,如果需要,可以在ID中对对象类型进行编码)
  • 难以制作独特的(除非您使用UUID)
  • 您甚至可以在不与DB通信的情况下分配ID

[编辑]由于UUID相当昂贵(在许多数据库中没有原生支持,索引碎片等),大多数应用程序都使用基于数据库的生成器。

答案 1 :(得分:8)

要记住的另一件事是,并非所有数据库插入都来自应用程序。使用应用程序驱动的guid会在您获得新客户并且必须从其上一个供应商迁移100,000条记录时真的伤害到您。

答案 2 :(得分:2)

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

隐藏您公司的标识符可能会造成很多混乱,因此请选择一些您不介意告诉客户,客户或业务合作伙伴的内容。我不是说每个人都应该能够记住它,但如果你正在查看收据(例如),你至少应该能够通过电话向某人阅读。

当然,性能有例外,但应谨慎使用,不要与业务可见标识符混淆。

查看我的相关blog post