HBase не поддерживает транзакции.Хотя у вас есть что-то вокруг атомарности в одной таблице, вы заметили, как транзакция, если вам нужно обновить более одной.Транзакции означают 4 вещи, которые идут под аббревиатурой ACID .в двух словах
- атомарность - изменения в транзакции происходят вместе ("все или ничего").
- согласованность - состояние должно оставаться действительным
- изоляция - операции внетранзакция не может видеть половинные изменения (промежуточные несогласованные состояния)
- Долговечность - изменения должны сохраняться
Вы должны изменить код HBase, чтобы получить изоляцию, но если вы можете ослабить это требованиеВы можете реализовать координатор транзакций, который примерно сделал бы что-то вроде
- , чтобы сохранить то, что нужно сделать в транзакции, в специальной таблице (журнал транзакций)
- выполнить первое изменение
- выполнить второе изменение
- проверить, что выполненные шаги и пометить транзакцию как выполненную
- при восстановлении, перейти в журнал транзакций и выполнить изменения завершения / отката
Обратите внимание, что, поскольку у вас нет изоляции, иногда откат не возможен, поэтому вам необходимо реализовать логику компенсации (alsо взглянуть на шаблон саги )