- record->split->node
- どこに保存されるはprimary keyで決める
- autoIncrementの仕組みがない、順番に保存するのは特定のnodeに集中するので、望ましくない(hotspot発生)
- autoIncrement以外のIDの生成方法
uuid 1~uuid4
- uuid1はtimestampペース、mac addressを使う
連番になる可能性
- uuid4はランダムの乱数で、分散性が高い、衝突になる可能性が0ではない
snowflake
ULID
timestampを使ってIDを生成する場合、どうしても分散率が低い。
なので、
shardId=hash(key)%N
PRIMARY KEY(shardId,分散率低い値のcolumn)
の複合キーで対応する
内部のHash関数を使う。
- farm_fingerprint
- など