使用CQL3迭代Cassandra宽行

JnB*_*ymn 10 cql cassandra cql3

如何使用CQL3引入一系列复合列?

考虑以下:

CREATE TABLE Stuff (
    a int,
    b text,
    c text,
    d text,
    PRIMARY KEY (a,b,c)
);
Run Code Online (Sandbox Code Playgroud)

在Cassandra中,这实际上有效地创建了一个具有整数行(值为a)和CompositeColumns的ColumnFamily,其中包含b和c的值以及文字字符串'd'.当然,这一切都被CQL3所掩盖,因此我们会认为我们正在插入单独的数据库行......但我离题了.

并考虑以下一组输入:

INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','P','whatever0');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','Q','whatever1');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','R','whatever2');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','S','whatever3');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','T','whatever4');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','P','whatever5');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','Q','whatever6');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','R','whatever7');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','S','whatever8');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','T','whatever9');
Run Code Online (Sandbox Code Playgroud)

在我目前的用例中,我想一次读取Stuff的所有值,n值.我该怎么做呢?这是我目前使用的n=4:

SELECT * FROM Stuff WHERE a=1 LIMIT 4;
Run Code Online (Sandbox Code Playgroud)

正如所料,我得到:

 a | b | c | d
---+---+---+-----------
 1 | A | P | whatever0
 1 | A | Q | whatever1
 1 | A | R | whatever2
 1 | A | S | whatever3
Run Code Online (Sandbox Code Playgroud)

我遇到的麻烦是如何获得接下来的4?这是我的尝试:

SELECT * FROM Stuff WHERE a=1 AND b='A' AND c>'S' LIMIT 4;
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我们将b限制为等于'A' - 这是合理的事情!但我在CQL3语法中没有发现任何东西,它允许我继续迭代.我希望我可以这样做:

SELECT * FROM Stuff WHERE a=1 AND {b,c} > {'A','S'} LIMIT 4;
Run Code Online (Sandbox Code Playgroud)

我如何实现我想要的结果.即,如何使CQL3返回:

 a | b | c | d
---+---+---+-----------
 1 | A | T | whatever0
 1 | B | P | whatever1
 1 | B | Q | whatever2
 1 | B | R | whatever3
Run Code Online (Sandbox Code Playgroud)

小智 5

自动分页完成https://issues.apache.org/jira/browse/CASSANDRA-4415,它发布到Cassandra 2.0.1

  • 仅仅为了我的理解,我已经安装了cassnadra 2.0.6并使用cqlsh我试图对CF(它有大约20K记录)进行选择查询而没有给出限制,我的查询结果是10K并显示一条消息"**默认LIMIT为10000.指定您自己的LIMIT子句以获得更多结果.**"..那么自动分页在哪里,或者在做什么/理解是错误的. (4认同)