Пессимисти c в КосмосДБ - PullRequest
0 голосов
/ 07 марта 2020

Меня интересует, как вести себя в случае, если многопользовательская система сталкивается с параллельными обновлениями. В основном мы используем хранимую процедуру для реализации нашей логики c. Я знал, что ETag имеет встроенный оптимистический c контроль параллелизма и использует код состояния ответа HTTP 412, чтобы узнать систему, сталкивающуюся с условным отказом (мы можем рассматривать это как параллельные обновления).

Но после того, как я прочитал больше о документах msdn, я не увидел встроенного пессимиста c параллелизма, я заметил, что существует код состояния HTTP 449 (повтор с), но я не знаю, это флаг, чтобы приложение знало, что есть обновление параллелизма?

Я говорю в контексте одного мастера - одной записи. Мы планируем переместить нашу систему бронирования из локальной среды в облачную и использовать CosmosDB в качестве базы данных, но в старой версии (локальной) мы используем SQL Сервер с режимом сериализации в хранимой процедуре, чтобы ограничить несогласованное состояние наших данных.

Пожалуйста, сообщите или дайте мне некоторую информацию для реализации пессимистического c параллелизма в CosmosDB или в основном в облаке.

1 Ответ

0 голосов
/ 08 марта 2020

449 означает, что вам нужно повторить запрос. Если вы вернете это обратно в клиент SDK, выполните новое чтение и повторите попытку.

Для базы данных, такой как Cosmos DB, вам потребуется реализовать распределенную блокировку. У Мартина Клеппмана есть статья, Как сделать распределенную блокировку , которая может оказаться полезной.

Однако следует помнить, что это может существенно повлиять на вашу пропускную способность. Вот почему Космос не обеспечивает пессимистическую блокировку c.

Надеюсь, что это полезно.

...