2017-02-21 5 views
0

Я использую Azure Table Storage, и я хочу иметь атомарную запись для нескольких таблиц. Это означает, что я хочу иметь транзакцию, которая записывает объект в две таблицы, и если одна запись не выполняется, транзакция откатывается.Атомные записи для нескольких таблиц

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

служба Таблицы поддерживает пакетные операции на предприятиях, находящихся в той же таблице, и принадлежат к одной и той же группе разделов

Source

Есть ли способ для достижения этой цели многостраничных пишут таблицы? Предполагая, что partitionKey - то же самое?

ответ

0

Есть ли способ достичь этого для нескольких записей в таблице? Предполагая , что разделKey тот же?

Эта функциональность недоступна. Суммарная транзакция сущностей применима только для отдельной таблицы. Вы не можете использовать его для нескольких таблиц.

Что мы сделали в нашем приложении, реализован собственный шаблон «Eventual Consistency». В нашем приложении у нас есть некоторые данные, которые необходимо записать в несколько таблиц. То, что мы делаем там, вместо того, чтобы записывать эти данные непосредственно в несколько таблиц, мы пишем, что в очереди как сообщение.

Затем у нас есть фоновый процесс, который постоянно обследует эту очередь и поднимает сообщения. Затем этот фоновый процесс пытается записать в разные таблицы. Сообщение удаляется только из очереди, если мы можем записать все таблицы.

При записи в таблицу мы принимаем во внимание idempotency, т. Е. Предположим, что данные могут присутствовать в таблице. Таким образом, мы всегда делаем InsertOrReplace (или InsertOrMerge) вместо Insert.

Смежные вопросы