私たちは RDBMS のバックグラウンドを持っており、分散データベースの機能を活用するために、既存のデータ ストアを cassandra に移植しようとしています。私たちの要件は、キーに関して値を保存することです。おそらくキーは時間になり(エポック時間を使用する予定です)、キー範囲間の値を取得します
テストでは、ColumnFamily を作成し、cql を使用してデータを挿入しました (経由cqlsh
):
CREATE COLUMNFAMILY Log( KEY int PRIMARY KEY,Val1 varchar,Val2 varchar);
INSERT INTO Log (KEY,val1, val2) VALUES (1,'673153106.00','448768737.33');
INSERT INTO Log (KEY,val1, val2) VALUES (2,'673153106.50','448768737.67');
INSERT INTO Log (KEY,val1, val2) VALUES (3,'673153107.00','448768738.00');
INSERT INTO Log (KEY,val1, val2) VALUES (4,'673153107.50','448768738.33');
INSERT INTO Log (KEY,val1, val2) VALUES (5,'673153108.00','448768738.67');
INSERT INTO Log (KEY,val1, val2) VALUES (6,'673153108.50','448768739.00');
INSERT INTO Log (KEY,val1, val2) VALUES (7,'673153109.00','448768739.33');
INSERT INTO Log (KEY,val1, val2) VALUES (8,'673153109.50','448768739.67');
INSERT INTO Log (KEY,val1, val2) VALUES (9,'673153110.00','448768740.00');
INSERT INTO Log (KEY,val1, val2) VALUES (10,'673153110.50','448768740.33');
しかし、私たちの選択は正しいデータを返すことができません
select * from Log where KEY>4 and KEY<9;
キー| val1 | val2 | 10 | 673153110.50 | 448768740.33 | 8 | 673153109.50 | 448768739.67 |
select * from Log where KEY>4 and KEY<9;
不正な要求: 開始キーの md5 ソートが終了キーの md5 の後にソートされます。これは許可されていません。RandomPartitioner の下では、おそらく終了キーをまったく指定しないでください。
私たちは何か間違ったことをしていますか?ランダムパーティションを使用してキー範囲の間で値を選択する解決策はありますか?