2009-09-18 4 views
0

私はできるだけ柔軟でスケーラビリティのあるプロジェクトに取り組んでいます。私が心配している問題は、Joshua Schacterがの創業者で最もよく記述したものです。過去1機、1つのデータベースをスケーリング複数のDB /サーバーに関する情報のID

、でも複製して、非常に困難です。そこにあるツールはあまり正しくありません。

たとえば、テーブルに物を追加して番号を付けると、番号が衝突するため、追加することもできません。あなたは何をしていますか?あなたはそれをするために全く別のやり方を考えなければなりません。

ナンバーセットを手渡す中央サーバーがありますか、それとも数字ではないものがありますか?乱数を使用して衝突しないことを願っていますか?それが何であれ、自動割り当てIDはただ飛行しません。

誰でもこの問題に直面していますか?自動増分IDを超えて移動する方法は何ですか、または複数のサーバーで拡張できる方法はありますか?

答えて

2

使用GUID/UUID(グローバル/汎用一意識別子)。理論的には、複数のマシン間でユニークであることが保証されています。

1

GUIDでは、衝突の可能性は天文学的に低いです。

それはSmartGUIDs(私たちは何と呼ばれる)を持つことも可能です(通常COMB GUIDSと呼ばれる - this analysis、特に7ページを参照してください)あなたはGUID内のタイムスタンプを符号化することができる場所なので、あなたが「自由のための」レコードの作成日時情報を取得します - ので、レコードの作成日時のタイムスタンプの列を保存することができます。これにより、32ビット整数から128ビットGUIDへの移行時に失われた内容が戻されます。これらは、クラスタ化されたインデックスやソートに役立つ通常のGUIDとは異なり、単調であることも保証されています。

通常の自動インクリメントIDまたは自動番号を使用して、いくつかの種類のサーバー/ db IDを持つ複合キーを使用することもできます。

関連する問題