我们来自 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 下指定结束键
我们做错了什么吗?有没有使用随机分区在键范围之间选择值的解决方案