0

ほとんどのデータベース エンティティに対してインクリメント ID ジェネレーターを使用する既存の製品があります。新しいバージョンでは、同じデータベースで動作する複数のサーバー インスタンスのクラスタリングが可能になるはずです。この製品は、MSSQL および Oracle データベースの使用をサポートしています。

そこで ID ジェネレーターをネイティブに変更することを検討していますが、それにはいくつか問題があります。

  • Oracle と MSSQL には 2 つの異なるアルゴリズムが使用されますが、コード内でオブジェクトを作成するときに透過的になりますか?
  • 既存のデータベースを移行するにはどうすればよいですか? また、ジェネレーターが既に使用されている ID を使用しないようにするにはどうすればよいですか?

これについての洞察を事前に感謝します。

4

1 に答える 1

0

ヒロジェネレーター戦略を検討することをお勧めします。利点は、複数のプロセスに使用できることです。また、NHibernate で生成された ID を使用することによるパフォーマンス上の利点も保持されます (具体的には、挿入のバッチ処理が可能になります)。

MSSQL では、列を ID 列に変更することはできません。新しい列を追加してから、すべての外部キーを更新する必要があります。テーブルや関係が多数ある場合、これは非常に面倒です。

hilo ジェネレーター戦略を使用すると、その問題を完全に回避できます。構成を変更し、データベースにテーブルを追加してテーブルの高い値を格納し、そのテーブルに正しい値を設定するだけです。

于 2013-10-14T10:47:16.300 に答える