2012-06-03 19 views
5

Làm thế nào để bạn tạo một counterfamily truy cập với CQL3 trong cassandra?Làm thế nào để bạn tạo ra một cột truy cập gia đình với CQL3 trong cassandra

Tôi đã từng sử dụng: TẠO NGƯỜI SỬ DỤNG COLUMNFAMILY (tên người dùng varchar PRIMARY KEY, bộ đếm hình ảnh) VỚI default_validation = counter AND comment = 'User Stats';

Bây giờ khi tôi chạy trong CQL3 tôi nhận được: Bad Request: default_validation không phải là một đối số từ khóa có giá trị trong CREATE COLUMNFAMILY

Trả lời

3

CQL3 không còn dính với "tên cột năng động" mô hình. Nó vẫn có thể tạo các hàng cassandra rộng tùy ý, nhưng chúng trông giống như các bảng hẹp "bình thường" trong CQL, với tất cả các cột có tên và được định nghĩa. Đây là lý do tại sao CQL3 không còn hỗ trợ cài đặt số default_validation hoặc comparator, v.v.

Bạn nên đọc và hiểu http://www.datastax.com/dev/blog/schema-in-cassandra-1-1 trước khi thực hiện bất kỳ điều gì bất thường trong CQL3.

Câu trả lời cho câu hỏi của bạn, tuy nhiên, là nó đơn giản như rời khỏi default_validation:

CREATE TABLE userstats (
    username varchar PRIMARY KEY, 
    images counter 
) WITH comment='User Stats'; 

Mặc dù nó không rõ ràng cho dù bạn có ý định sử dụng nhiều quầy mỗi hàng ở đó, kể từ khi bạn muốn có một default_validation . Nếu bạn đã làm, và comparator của bạn có thể đã được varchar, bạn có thể làm:

CREATE TABLE userstats (
    username varchar, 
    countername varchar, 
    value counter, 
    PRIMARY KEY (username, countername) 
) WITH comment='User Stats'; 

..và hãy images chỉ là một trong những counternames.

+0

Tôi đã cố sử dụng lệnh được đề xuất của bạn từ lời nhắc CQL3 và nhận: TSocket đọc 0 byte – mithrix

+1

Theo kinh nghiệm của tôi, cqlsh bị tụt hậu so với các tính năng. Bạn nên thử sử dụng execute_cql trực tiếp – Alar

+1

@Alar cqlsh không tụt lại phía sau trong các tính năng cql, vì việc xử lý cql thực tế được thực hiện ở phía Cassandra. Cqlsh chỉ giúp làm cho đầu ra trông đẹp mắt và cung cấp chức năng hoàn thiện tab và chức năng readline. Nó đang sử dụng cùng một cuộc gọi tiết kiệm. –