Поведение Cassandra BatchStatement - Java-драйвер datastax

Я хотел бы получить разъяснения по поводу выполнения BatchStatement.

Я добавил много операторов вставки / обновления для разных таблиц в пакет. Когда я выполняю пакет, я ожидаю, что, если какой-либо один запрос не удастся, все остальные вставки / обновления не будут успешными. Но этого не происходит. Я вижу частичные обновления / вставки.

Как я могу этого добиться? [если какой-либо один запрос завершился неудачно, все обновления / вставки пакета не должны происходить. ]

Как я могу получить / распечатать точный проблемный запрос, который привел к сбою выполнения пакета?

Какова цель пакетной выписки LOGGED?

http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/BatchStatement.Type.html#LOGGED.

Какова цель включения трассировки в BatchStatement? Как я могу распечатать трассировку для устранения проблем с запросами?

http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/Statement.html#enableTracing%28%29

Мой код выглядит так,

BatchStatement batch = new BatchStatement();
batch.add(ps1.bind(xxx));
batch.add(ps2.bind(xxx));
batch.add(ps3.bind(xxx));
session.execute(batch);

Спасибо,

Рамеш


person rameshj    schedule 26.03.2014    source источник


Ответы (1)


Прочтите мой ответ о том, как атомные партии работают в Cassandra, здесь:

Атомарные партии в Cassandra

Записанный пакет будет включать атомарный пакет. Это означает, что они обращаются к одному координатору.

Вы можете включить трассировку сообщений CAssandra 1.2 для любого запроса, а не только для пакетов. С каждым запросом будет связан UUID. Вы можете использовать этот UUID для получения журнала трассировки.

См. Пример: http://www.datastax.com/doc-source/developer/java-driver/tracing_t.html.

person Arya    schedule 26.03.2014