Для получения идеальной следующие действия с помощью Astyanax:
С cqlsh:
cqlsh:TEST_KS> INSERT INTO "MESSAGE_CF" (KEY, "DELETED_RECEIVER", "DELETED_SENDER", "SENDER")
VALUES ('user-1241324', 'Yes', 'No', '[email protected]');
cqlsh:TEST_KS> SELECT * FROM "MESSAGE_CF";
key | DELETED_RECEIVER | DELETED_SENDER | RECEIVER | SENDER
--------------+------------------+----------------+----------+---------------
user-1241324 | Yes | No | null | [email protected]
С 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', '[email protected]');";
// 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
UPDATE
Lookinto в batch ключевого слова. Основным фактором ускоряющих способностей партии является то, что он экономит поездки в оба конца. Управлять операциями CQL будет сложнее, но это улучшит скорость обновления. Он может выполнять операции CUD (вставлять, обновлять и удалять), но не может выполнять SELECT. Также я бы посоветовал вам прочитать CQL3 documentation, чтобы узнать, что может сделать cql.
Почему бы не сделать это в петле? –
Можете ли вы показать мне пример? Не уверен, как построить это для цикла. Кстати, CQL не позволяет вставлять несколько строк в один оператор insert (как в SQL), иначе это было бы одним из моих попыток. –