使用Application Id Generator与Database Id Generator

bas*_*neu 10 database web-applications

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

Aar*_*lla 11

DB生成器:

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

应用ID生成器

  • 可以根据需要复杂(例如,如果需要,可以在ID中编码对象类型)
  • 很难做出独特的(除非你使用UUID)
  • 即使不与DB通信,您也可以分配ID

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


HLG*_*GEM 8

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

  • 重点是,如果您在除数据库之外的任何地方生成标识符,则会使数据处于危险之中. (3认同)