CassandraのPartitioning
パッケージでいうと、org.apache.cassandra.dht。インターフェースでいうと、IPartitioner。
全てのCassandraのノードにTokenが割つけられていて、これらのTokenは、どのキーが、primary replicaに属するのかを決めるために使われている模様。IPartitonerは、キーをTokenに変換して、どのノードにキーが割り当てられているのかを決めるためのインターフェースをもっているよう。キーはTokenに変換可能だけれど、Tokenからキーへの変換はできない(できるケースも有るけれど)
- RandomPartitioner
- RandomPartitionerを使うと、Tokenは0から2**127のどれか。キーはTokenとMD5で比較されて、上記の範囲の整数値に変換される。
- 実装でいうと、RandomPartitionerのgetTokenメソッド。
- OrderPreservingPartitioner
- CollatingOrderPreservingPartitioner
- Range Query使うには、OrderPreservingPartitionerを使う必要あり。
# OrderPreservingPartitionerは、ノードの追加方法にも影響してきそうなので、ここだけみてもちょっとわからないなぁと。Range Queryに絡んでたりと、色々と影響してくるので、もう少し別のところのコードをみてから、再度理解を深めたいところ。