使用 Astyanax 实现以下目标:
使用 cqlsh:
cqlsh:TEST_KS> INSERT INTO "MESSAGE_CF" (KEY, "DELETED_RECEIVER", "DELETED_SENDER", "SENDER")
VALUES ('user-1241324', 'Yes', 'No', 'user@mail.com');
cqlsh:TEST_KS> SELECT * FROM "MESSAGE_CF";
key | DELETED_RECEIVER | DELETED_SENDER | RECEIVER | SENDER
--------------+------------------+----------------+----------+---------------
user-1241324 | Yes | No | null | user@mail.com
使用 Astyanax:
Keyspace keyspace = Astyanax.getKeyspaceContext();
ColumnFamily<String, String> mail = new ColumnFamily<String, String>(
keyspace.getKeyspaceName(), // CF Name
StringSerializer.get(), // Key Serializer
StringSerializer.get()); // Column Serializer
// You could start looping here to alter what data is being inserted
// or make the method take in parameters and call it multiple times.
String cqlStatement =
"INSERT INTO MESSAGE_CF (KEY, DELETED_RECEIVER, DELETED_SENDER, SENDER) "
+ "VALUES ('user-1281324', 'Yes', 'No', 'user@mail.com');";
// execute the insertion
OperationResult<CqlResult<String, String>> result =
keyspace.prepareQuery(mail).withCql(cqlStatement).execute();
// stop looping
注意:我无法使用准备好的语句来实现这一点,Astyanax 在他们的wiki(在准备好的 CQL 下)显示支持准备好的语句,但我使用的是 astyanax-1.56.21 并且asPreparedStatement()
缺少该功能。
此外,为此,不要忘记将您的 AstyanaxContext 设置为使用 CQL3。
new com.netflix.astyanax.impl.AstyanaxConfigurationImpl()
.setCqlVersion("3.0.0")) //using CQL3
更新
查看批处理关键字。批处理加速能力的主要因素是它节省了往返行程。管理 CQL 语句将更加困难,但它确实提高了更新速度。它可以执行 CUD 操作(插入、更新和删除),但不能执行 SELECT。另外,我建议您通读CQL3 文档以了解 cql 可以做什么。