Cassandra のパーティション分割と比較して、PlayORM の仮想パーティション分割が常にデータを分割する最良の方法であるかどうかを議論したいと思います。
スキーマ:
- タイムスタンプ
- デバイスID
- 装置名
- デバイス所有者
タイムスタンプの場合は 50 万行あり、特定のデバイス ID の場合は 1 万行あります
2 つの列に分割する場合は、TimeStamp と Device ID と言います。これを行うには、次の方法があります。
- PlayORM を使用して両方の列で「仮想」パーティションを作成し、任意の列による任意の仮想パーティションのデータがすべてのノードに分散されるようにします。
- Cassandra の組み込みパーティショニング サポートをカラムの 1 つに使用し、PlayORM のアプローチを使用して他のカラムに「仮想」パーティショニングを作成します。
「デバイス ID」が「Cassandra」の方法で分割された場合、特定の「デバイス ID」のすべてのレコードがディスクの連続した場所に保存され、playorm のように「TimeStamp」の仮想分割アプローチを続行できます。私が PlayORM のアプローチよりもこれを好む理由は、Cassandra のパーティション アプローチを使用すると、特定のデバイス ID のすべてのレコードが、ディスク上の物理的に連続した場所にある場合、数が少ない (10K のみ) ため、高速に取得できるためです。これは、ノード上ですべてのパーティションのレコードを均等に分散するという PlayORM の全面的なアプローチよりも優れている可能性があります。これは、データがディスク上でランダムに分散され、多くのディスク シークが発生し、明らかに速度が低下するためです。だからPlayORMのアプローチでも、
上記は有効な点のように見えますか、それとも私の理解に誤りがありますか?