2013-09-26 3 views
2

Существуют ли какие-либо шаблоны программного обеспечения, которые позволяли бы совершать транзакции по нескольким таблицам в хранилище таблиц Azure?Шаблон транзакции для хранения таблиц Azure на нескольких таблицах?

Я хочу написать (или удалить) несколько организаций из разных таблиц в слитно, как ...

try { 
    write entity to table A 
    write entity to table B 
} catch { 
    delete entity from table A 
    delete entity from table B 
} 

В ходе вышеуказанной операции я также хочу, чтобы никто не писать/удалять одни и те же объекты (такие же таблица, ключ раздела и строка строки).

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

+0

Можете ли вы предоставить более подробную информацию? Когда вы пишете данные, написано ли это через какой-то фоновый процесс? Желаете ли вы получить блокировку на основе данных, то есть когда один процесс записывает данные, тот же набор данных не должен записываться каким-либо другим процессом или вам нужен только один процесс (из многих) для записи данных? –

ответ

1

Единственный способ гарантировать, что никто другой не изменяет строки в таблице во время работы над ними, заключается в том, чтобы добавить накладные расходы на лизинг blob. Вы можете иметь один экземпляр/поток, захватив аренду blob и делать все, что ему нужно. Затем, когда это будет сделано, отпустите blob. Если он не может захватить аренду, ему либо придется подождать, либо повторить попытку позже.

Другие операции на основе таблиц, такие как пессимистический параллелизм, фактически не позволят кому-либо изменить записи.

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