Я следил за this link to use a batch transaction without using BATCH keyword.Какое решение для работы с несколькими столами ACID в cassandra
Cluster cluster = Cluster.builder()
.addContactPoint(“127.0.0.1")
.build();
Session session = cluster.newSession();
//Save off the prepared statement you're going to use
PreparedStatement statement = session.prepare(“INSERT INTO tester.users (userID, firstName, lastName) VALUES (?,?,?)”);
//
List<ResultSetFuture> futures = new ArrayList<ResultSetFuture>();
for (int i = 0; i < 1000; i++) {
//please bind with whatever actually useful data you're importing
BoundStatement bind = statement.bind(i, “John”, “Tester”);
ResultSetFuture resultSetFuture = session.executeAsync(bind);
futures.add(resultSetFuture);
}
//not returning anything useful but makes sure everything has completed before you exit the thread.
for(ResultSetFuture future: futures){
future.getUninterruptibly();
}
cluster.close();
Мой вопрос с данным подходом является возможность INSERT, UPDATE или удалить данные из другой таблицы, и если какой-либо из тех, кто не в состоянии все должно быть неисправно при сохранении той же производительности (как описано в ссылке).
При таком подходе, что я пытался, я пытался вставить, удалить данные из другой таблицы и один запрос получил отказ, поэтому все предыдущие запросы были выполнены и обновлены db.
С BATCH
Я вижу, что если какой-либо оператор не получился, вся заявка будет сбой. Но использование BATCH
на разных таблицах - это анти-шаблон, так что такое решение?
в ссылке gicen только о LWT упоминается не о глобальной блокировке или глобальной координации – manish