1

カサンドラを使用して、多くのセンサー (> 50k) で時系列データをモデル化しようとしています。同時に複数のセンサーでフィルタリングを行いたいので、次の (幅の広い行) スキーマを使用するのが適切であると考えました。

CREATE TABLE data(
 time timestamp, 
 session_id int, 
 sensor text, 
 value float, 
 PRIMARY KEY((time, session_id), sensor)
);

すべてのセンサー値が RDBMS の列である場合、私のクエリは理想的には次のようになります。

SELECT * FROM data WHERE sensor_1 > 10 AND sensor_2 < 2;

私の cassandra スキーマに変換すると、クエリは次のようになると想定しました。

SELECT * FROM data 
WHERE 
  sensor = 'sensor_1' AND 
  value > 10 AND 
  sensor = 'sensor_2' AND 
  value < 2;

私は今2つの問題を抱えています:

  1. cassandra は、センサー列でフィルター処理できるのは 1 回だけだと教えてくれました。

センサーに Equal が含まれている場合、複数のリレーションによってセンサーを制限することはできません

  1. 明らかに、値のフィルターは現時点では意味がありません。同じ(広い)行で複数の列をフィルタリングするために、クエリでセンサーと値の関係を表現する方法がわかりません。

IN最初の質問に対する解決策は、CQL の句を使用することであることは知っています。ただし、これは2番目の問題を解決しません。

このシナリオはカサンドラにも適していますか?

よろしくお願いします。

4

1 に答える 1