BigTable: Когда я должен включить однорядную транзакцию? - PullRequest
1 голос
/ 23 марта 2019

Документы Cloud Bigtable для однострочных транзакций гласят:

Cloud Bigtable также поддерживает некоторые операции записи, которые требуют транзакции в других базах данных:

  • Операции чтения-изменения-записи, включая приращения и добавления.Операция чтения-изменения-записи считывает существующее значение;увеличивает или добавляет существующее значение;и записывает обновленное значение в таблицу.

  • Операции проверки и изменения, также известные как условные мутации или условные записи.В операции проверки и изменения, Cloud Bigtable проверяет строку, чтобы определить, соответствует ли она указанному условию.Если условие выполнено, Cloud Bigtable записывает новые значения в строку.

Итак, если я правильно понимаю, если я использую «Чтение-изменение-запись» или «Проверка»-and-mutate ", требующие включения однострочных транзакций.

Эти операции являются методами API, такими как CheckAndMutateRow , верно?Так что, если программа использует этот метод и однострочные транзакции не включены?Сбой приложения?Я в правильном направлении?

Моя цель - понять, как, когда и где (в приложении) используется настройка однострочных транзакций в профиле приложения.

Спасибо!

Габриэль

Ответы [ 2 ]

3 голосов
/ 25 марта 2019

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

Обратите внимание, как указал Джефф вего комментарий, что они включены по умолчанию, в частности, если ваш экземпляр был создан с одним кластером.Это просто для того, чтобы избежать поломки устаревших клиентов, так как это различие не имело значения до запуска репликации.

Чтобы немного больше понять, почему существует этот параметр, см. Раздел здесь о конфликтах между однорядными транзакциями при использовании репликации.

0 голосов
/ 23 марта 2019

Итак, если я правильно понимаю, если я использую операции «Чтение-изменение-запись» или «Проверка и изменение», то требуется включение однострочных транзакций.

Это не правильно.Использование этих API приводит к транзакциям в одну строку, вам не нужно ничего предварительно включать.

Эти операции являются методами API, такими как CheckAndMutateRow, верно?

Да.

Так что, если программа использует этот метод и однострочные транзакции не включены?

Ничего не нужно включать.Вызов этих API приводит к элементарной операции над строками, которые вы пытаетесь изменить.

Будет ли сбой приложения?

Это не применимо, см. Выше.

...