カサンドラを使用して、多くのセンサー (> 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つの問題を抱えています:
- cassandra は、センサー列でフィルター処理できるのは 1 回だけだと教えてくれました。
センサーに Equal が含まれている場合、複数のリレーションによってセンサーを制限することはできません
- 明らかに、値のフィルターは現時点では意味がありません。同じ(広い)行で複数の列をフィルタリングするために、クエリでセンサーと値の関係を表現する方法がわかりません。
IN
最初の質問に対する解決策は、CQL の句を使用することであることは知っています。ただし、これは2番目の問題を解決しません。
このシナリオはカサンドラにも適していますか?
よろしくお願いします。