2017-07-01 10 views
0

私は、間隔ごとにデバイスからGPSデータを取得する必要があります。車のGPS追跡のためのCassandraスキーマ

したがって、指定されたデバイスIDには、緯度、経度、およびタイムスタンプフィールドがあります。

特定の車両IDの最新の緯度経度を見つける必要があります。

私のアプローチは、主キーを(device_id、timestamp)としてタイムスタンプで並べることです。

パーティションキーとしてデバイスIDを選択することをお勧めしますか?

私の場合、デバイスは仮想マシンです。新しい仕事ごとに新しい仕事が作成されます。デバイスは、そのジョブが終了するまで(典型的には3〜4日間)gpsの位置を送信し、その後終了する。次のジョブでは、新しいデバイスIDを持つ新しいデバイスが作成されます。

私は、特定のデバイスIDのデータを3〜4日間取得し、その後は何も取得しません。 また、毎週作成される新しいデバイスの欠如があります。

私の唯一の懸念事項は、私のパーティション数が時間の経過と共に増加し続けるということです。 それはcassandraのための良いデザインですか?

答えて

0

はい、いいデザインです。

パーティションキーは、どのノードがデータを格納するかを決定します。ノード間のデータ配信を担当します。 パーティションの数が増えるほど、データの分散が増え、スケーラビリティが向上し、ロードバランスが向上します

0

パーティションキーとしてデバイスIDを選択することをお勧めしますか?

はい、カスケードラごとに、これらのキーの分布が非常に良いようにパーティションキーを設定する必要があります。したがって、より多くの数のキーを配布しているので、クライアントから複数のクエリを実行すると各クエリは異なるノードで実行されるため、ホットスポットを減らすことができます。だから、パーティション・キーとしてdevice_idは、あなたの心は、カサンドラのドキュメントhereから、あるに負担する必要がカサンドラ

そして、もう一つのために

の最大数を正確なユースケースをされました単一の区画内のセル(行×列)は 20億です。

つまり、指定されたdevice_idに20億を超えるタイムスタンプを設定することはできません。私はあなたのデータが限界に触れることはないと信じています。そうであれば、あなたはデータモデルを再考する必要があります。さもなければ、あなたのデータモデルは百パーセント罰金です。

関連する問題