Я использую версию cassandra 2.x и имею требование вставить/обновить одну строку до нескольких таблиц. все таблицы имеют другой первичный ключ. Как добавить несколько назначений для обновления и более одного имени таблицы до QueryBuilder
. Использование драйвера datastax. Любой указатель был бы полезен.Обновить строку в нескольких таблицах в Cassandra
1
A
ответ
1
Кто-то еще спросил how to batch update multiple tables в группе google. Они referred to a C# driver example обновления нескольких таблиц. Этот принцип применим к Java, и я скопировал соответствующий метод BatchStatement
из cassandra java driver.
Соответствующий код цитировал драйвера Java ниже:
/**
* Adds a new statement to this batch.
* <p/>
* Note that {@code statement} can be any {@code Statement}. It is allowed to mix
* {@code RegularStatement} and {@code BoundStatement} in the same
* {@code BatchStatement} in particular. Adding another {@code BatchStatement}
* is also allowed for convenience and is equivalent to adding all the {@code Statement}
* contained in that other {@code BatchStatement}.
* <p/>
* When adding a {@code BoundStatement}, all of its values must be set, otherwise an
* {@code IllegalStateException} will be thrown when submitting the batch statement.
* See {@link BoundStatement} for more details, in particular how to handle {@code null}
* values.
* <p/>
* Please note that the options of the added Statement (all those defined directly by the
* {@link Statement} class: consistency level, fetch size, tracing, ...) will be ignored
* for the purpose of the execution of the Batch. Instead, the options used are the one
* of this {@code BatchStatement} object.
*
* @param statement the new statement to add.
* @return this batch statement.
* @throws IllegalStateException if adding the new statement means that this
* {@code BatchStatement} has more than 65536 statements (since this is the maximum number
* of statements for a BatchStatement allowed by the underlying protocol).
*/
public BatchStatement add(Statement statement) {
// We handle BatchStatement here (rather than in getIdAndValues) as it make it slightly
// easier to avoid endless loop if the use mistakenly pass a batch that depends on this
// object (or this directly).
if (statement instanceof BatchStatement) {
for (Statement subStatements : ((BatchStatement) statement).statements) {
add(subStatements);
}
} else {
if (statements.size() >= 0xFFFF)
throw new IllegalStateException("Batch statement cannot contain more than " + 0xFFFF + " statements.");
statements.add(statement);
}
return this;
}
Основная идея заключается в создании переменной для каждого обновления таблицы и добавления каждой из переменных функции BatchStatement
.
+0
Этот конкретный пример для csharp, я использую java-драйвер. – NewJavaBee
Смежные вопросы
- 1. Обновить значение в нескольких таблицах Sql-сервер
- 2. MYSQL: Как обновить UUID в нескольких таблицах
- 3. Несколько столбцов в таблицах Cassandra
- 4. обновить запрос в linq для обновления данных в нескольких таблицах
- 5. Обновить одно значение в нескольких таблицах в базе данных
- 6. колонка Обновление в нескольких таблицах
- 7. Поиск в нескольких таблицах
- 8. Поиск в нескольких таблицах
- 9. ВЫБРАТЬ в нескольких таблицах
- 10. Как Понизить/обновить несколько столбцов в нескольких таблицах
- 11. Entity Framework: создать/обновить общее поле в нескольких таблицах
- 12. Обновить столбец идентификатора пользователя в нескольких таблицах mysql
- 13. # 1452 - Невозможно добавить или обновить дочернюю строку в 2 таблицах
- 14. Как обновить выбранную строку в таблицах данных jquery
- 15. Обновление одного столбца, найденного в нескольких таблицах
- 16. Обновить время и оставшееся время для выхода в строку cassandra
- 17. Как обновить колонку в Cassandra
- 18. обновить несколько строк сразу в двух таблицах
- 19. как искать в нескольких таблицах?
- 20. Multiple присоединяется в нескольких таблицах
- 21. Сортировка счет в нескольких таблицах
- 22. Sequelize save в нескольких таблицах
- 23. Поиск MySQL В нескольких таблицах
- 24. Граф объекты в нескольких таблицах
- 25. Выбор нескольких столбцов в таблицах
- 26. SQL Запросы в нескольких таблицах
- 27. Mysql, поиск в нескольких таблицах
- 28. Laravel Отношение в нескольких таблицах
- 29. Поиск в нескольких таблицах mysql
- 30. счетное поле в нескольких таблицах
Выполняет ли инструкция 'batch' вашу потребность? Если вы не знакомы с пакетными операторами, см. Этот [SO ответ] (http://stackoverflow.com/questions/28348717/how-do-atomic-batches-work-in-cassandra/28348718#28348718) об атомарности в пакетных операторах. – Nathan
Я знаком с Batch, но не знаю, как я могу подготовить BatchStatement с несколькими таблицами. – NewJavaBee
Глядя на это снова, требуется атомарность? В противном случае вы просто создадите несколько подготовленных операторов и выполните их после события. – Nathan