Đây là một ví dụ về kịch bản mà tôi đang gặp phải. Nói rằng tôi có gia đình cột này:Truy vấn các cột CompositeType trong Cassandra bằng Hector
create column family CompositeTypeCF
with comparator = 'CompositeType(IntegerType,UTF8Type)'
and key_validation_class = 'UTF8Type'
and default_validation_class = 'UTF8Type'
Dưới đây là một số mã Java mẫu sử dụng Hector như thế nào tôi sẽ đi về cách chèn một số dữ liệu vào gia đình cột này:
Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "192.168.1.6:9160");
Keyspace keyspaceOperator = HFactory.createKeyspace("CompositeTesting", cluster);
Composite colKey1 = new Composite();
colKey1.addComponent(1, IntegerSerializer.get());
colKey1.addComponent("test1", StringSerializer.get());
Mutator<String> mutator = HFactory.createMutator(keyspaceOperator, StringSerializer.get());
Mutator<String> addInsertion = mutator.addInsertion("rowkey1", "CompositeTypeCF",
HFactory.createColumn(colKey1, "Some Data", new CompositeSerializer(), StringSerializer.get()));
mutator.execute();
này hoạt động, và nếu tôi đi đến cassandra-cli và làm một danh sách tôi nhận được điều này:
$ list CompositeTypeCF;
Using default limit of 100
-------------------
RowKey: rowkey1
=> (column=1:test1, value=Some Data, timestamp=1326916937547000)
Câu hỏi của tôi bây giờ là: Làm cách nào để truy vấn dữ liệu này trong Hector? Về cơ bản tôi sẽ cần phải truy vấn nó trong một vài cách sau:
- Hãy cho tôi toàn bộ hàng nơi Row Key = "rowkey1"
- Hãy cho tôi những dữ liệu cột nơi phần đầu của tên cột = một số giá trị số nguyên
- Hãy cho tôi tất cả các cột nơi phần đầu của tên cột nằm trong một phạm vi nhất định
bạn có thể giải thích tại sao chúng ta cần GREATER_THAN_EQUAL trong thành phần cuối cùng không? Tôi đã đi qua bài báo, nhưng mọi thứ vẫn chưa rõ ràng. –
Tôi đã hỏi câu hỏi này như một câu hỏi riêng biệt để tôi có thể thưởng điểm u! –
Tôi không biết, tôi đã thử nghiệm một số mã mẫu để thuyết phục bản thân rằng nó hoạt động cho những gì tôi cần. – libjack