2013-08-13 58 views
9

Một phần chính của Cassandra mà tôi không hiểu đầy đủ là các truy vấn phạm vi của nó. Tôi biết rằng Cassandra nhấn mạnh môi trường phân tán và tập trung vào hiệu suất, nhưng có lẽ vì điều đó, nó hiện chỉ hỗ trợ một số loại truy vấn phạm vi mà nó có thể kết thúc hiệu quả, và điều tôi muốn biết là: bởi Cassandra.Phạm vi truy vấn trong Cassandra (CQL 3.0)

Theo như tôi biết, Cassandra hỗ trợ các truy vấn phạm vi sau đây:

1: Phạm vi truy vấn trên Tiểu học trọng điểm với từ khóa TOKEN, ví dụ:

CREATE TABLE only_int (int_key int PRIMARY KEY); 
... 
select * from only_int where token(int_key) > 500; 

2: Phạm vi truy vấn với tình trạng một sự bình đẳng trên chỉ mục phụ với từ khóa ALLOW FILTERING, ví dụ:

CREATE TABLE example (
    int_key int PRIMARY KEY, 
    int_non_key int, 
    str_2nd_idx ascii 
); 
CREATE INDEX so_example_str_2nd_idx ON example (str_2nd_idx); 
... 
select * from example where str_2nd_idx = 'hello' and int_non_key < 5 allow filtering; 

Nhưng tôi tự hỏi nếu tôi bỏ lỡ điều gì đó d tìm kiếm một câu trả lời chuẩn mà liệt kê tất cả các loại truy vấn phạm vi được hỗ trợ bởi CQL hiện tại (hoặc một số công việc xung quanh cho phép nhiều loại truy vấn phạm vi).

Trả lời

4

Ngoài các truy vấn bạn đã đề cập, bạn cũng có thể có truy vấn về nhóm cột "Composite Key" (bạn cần phải thiết kế DB bằng cách sử dụng các phím tổng hợp, nếu phù hợp với các ràng buộc của bạn). Đối với một ví dụ/thảo luận về điều này hãy xem Query using composite keys, other than Row Key in Cassandra. Khi sử dụng phím Composite, bạn có thể thực hiện các loại truy vấn khác, cụ thể là các truy vấn "phạm vi" không sử dụng "khóa phân vùng" (phần tử đầu tiên của khóa tổng hợp) - thông thường bạn cần đặt tham số "cho phép lọc" để cho phép các truy vấn này và cũng có thể thực hiện các thao tác "sắp xếp theo" trên các yếu tố đó, điều này có thể rất thú vị trong nhiều tình huống. Tôi nghĩ rằng các gia đình cột khóa tổng hợp cho phép khắc phục một số hạn chế (cần thiết) (để cấp hiệu suất) của mô hình dữ liệu cassandra khi so sánh với mô hình "cực kỳ linh hoạt" (nhưng chậm) của RDBMS ...

5

Bạn có thể tìm kiếm các phím phân cụm. Một khóa chính có thể được tạo thành bằng một phím phân vùng và sau đó là các phím phân cụm.

ví dụ định nghĩa như thế này một

CREATE TABLE example (
    int_key int, 
    int_non_key int, 
    str_2nd_idx ascii, 
    PRIMARY KEY((int_key), str_2nd_idx) 
); 

sẽ cho phép bạn thực hiện các truy vấn như thế này mà không sử dụng thẻ

select * from example where str_2nd_idx < 'hello' allow filtering; 

Trước khi tạo một bảng trong cassandra bạn nên bắt đầu từ suy nghĩ về câu hỏi và những gì bạn muốn hỏi từ mô hình dữ liệu trong cassandra.

-1

1) Tạo bảng:

create table test3(name text,id int,address text,num int,primary key(name,id,address))with compact storage; 

2) Chèn dữ liệu vào bảng:

insert into test3(name,id,address,num) values('prasad',1,'bangalore',1) ; 

insert into test3(name,id,address,num) values('prasad',2,'bangalore',2) ; 

insert into test3(name,id,address,num) values('prasad',3,'bangalore',3) ; 

insert into test3(name,id,address,num) values('prasad',4,'bangalore',4) ; 

3)

select * from test3 where name='prasad' and id <3; 

4)

name | id | address | num 


--------+----+-----------+----- 

prasad | 1 | bangalore | 1 

prasad | 2 | bangalore | 2 
+0

Câu hỏi đặt ra là về tất cả các loại truy vấn phạm vi được hỗ trợ, KHÔNG làm cách nào để thực hiện các truy vấn phạm vi. – keelar

Các vấn đề liên quan