0

对于大多数数据库实体,我有一个使用增量 ID 生成器的现有产品。新版本应该允许在同一个数据库上工作的多个服务器实例的集群。该产品支持使用 MSSQL 和 Oracle 数据库。

所以我考虑将 ID 生成器更改为原生,但这样做存在一些问题。

  • Oracle 和 MSSQL 将使用两种不同的算法——在代码中创建对象时这将是透明的吗?
  • 如何迁移现有数据库以及如何让生成器不使用已在使用的 ID?

提前感谢您对此的任何见解。

4

1 回答 1

0

我建议查看 hilo 生成器策略。好处是它可以用于多个进程,并且您仍然保留在 NHibernate 中使用生成的 id 的性能优势(特别是允许批量插入)。

MSSQL 不允许您将列更改为标识列 - 您需要添加一个新列,然后更新所有外键 - 如果您有很多表/关系,这可能会非常非常混乱。

使用 hilo 生成器策略,您可以完全避免该问题,它只是一个配置更改并将一个表添加到您的数据库中以存储表的高值,并使用正确的值填充该表。

于 2013-10-14T10:47:16.300 回答