私はthe Datastax CQL reference読んでいた:なぜtimeuuidに衝突がないのですか?
潜在的に上書きされる を意図していなかったデータを上書きする衝突が発生することはできませんが。
誰かが私に衝突が起こらない理由を説明できますか?それは不可能か「非常に」起こりそうか?
私はthe Datastax CQL reference読んでいた:なぜtimeuuidに衝突がないのですか?
潜在的に上書きされる を意図していなかったデータを上書きする衝突が発生することはできませんが。
誰かが私に衝突が起こらない理由を説明できますか?それは不可能か「非常に」起こりそうか?
カサンドラのtimeuuidは、UUIDを生成するマシンの時刻とMACアドレスに基づいて、Version 1 UUIDです。
使用時間は100nsまで正確です。したがって、衝突の可能性は非常にスリムです(ナノ秒は100万分の1ミリ秒です)。
カサンドラのtimeuuidが基づいているバージョン1つのUUID(タイプ1 UUID)である:
シーケンス番号に擬似乱数を使用すると、各UUIDクラスに一意のIDが設定される確率は16,384になります。
ミリ秒あたり10000を超えるUUIDを生成すると、衝突する可能性があります。
1ミリ秒= 10^6ナノ秒これにより
我々は100nsのカウントとしてタイムスタンプを取るよう、我々はナノ秒レベルのタイムスタンプが、 を取る場合は、10^6 UUIDを生成することができます。
1ミリ秒でユニークなタイムスタンプが最大10000個あります。
これ以上のMACアドレスを持つ単一のマシンで生成すると、シーケンス番号を考慮する必要があります。
アプリケーションで1秒あたり10000を超える値が生成される場合は、別の列を使用して衝突を回避する複合キーを作成します。
さらに、多くの実装(C *を含む)では、単調に増加するカウンタとして10,000の100nsの解像度が使用されます。つまり、1ノードにつき1ミリ秒ごとに "new uuid"を10,000回呼び出します。 1ミリ秒あたり10,000の割合で挿入する可能性は非常に低いですが、そうした場合は衝突が発生する可能性があります。 –