В CQL имеется инструкция BEGIN BATCH ... APPLY BATCH, которая позволяет группировать несколько вставок, чтобы разработчик мог построить строку такого пакетного запроса и выполнить ее. [http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra-2-0]
Следующая работал для меня:
PreparedStatement ps = session.prepare(
"BEGIN BATCH" +
"INSERT INTO messages (user_id, msg_id, title, body) VALUES (?, ?, ?, ?);" +
"INSERT INTO messages (user_id, msg_id, title, body) VALUES (?, ?, ?, ?);" +
"INSERT INTO messages (user_id, msg_id, title, body) VALUES (?, ?, ?, ?);" +
"APPLY BATCH");
session.execute(ps.bind(uid, mid1, title1, body1, uid, mid2, title2, body2, uid, mid3, title3, body3));
Если вы не знаете заранее, что заявления, которые вы хотите выполнить, вы можете использовать следующий синтаксис (Scala):
var statement: PreparedStatement = session.prepare("INSERT INTO people (name,age) VALUES (?,?)")
var boundStatement = new BoundStatement(statement)
val batchStmt = new BatchStatement()
batchStmt.add(boundStatement.bind("User A", "10"))
batchStmt.add(boundStatement.bind("User B", "12"))
session.execute(batchStmt)
Примечание: BatchStatement может содержать инструкцию до 65536. Узнал это трудно. :-)
Какой драйвер вы используете? Вы используете CQL? Какая версия Кассандры? – Richard
Cassandra version is1.2.x, и я использую hector apis. – ajjain