Какой шаблон дизайна обрабатывать атомичность состояния данных с пидантскими моделями при чтении/записи данных из базы дPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Какой шаблон дизайна обрабатывать атомичность состояния данных с пидантскими моделями при чтении/записи данных из базы д

Сообщение Anonymous »

Я хотел бы обсудить свою проблему дизайна, чтобы оценить то, что я делаю правильно, и что я могу сделать лучше, чтобы решить мою текущую проблему. На сегодняшний день я создаю модели Pyndatic бизнес -логики, сохраняющие свое состояние и управление некоторыми функциями логики Pyndatic, такие как проверка и вычисленные поля. Приложение базы данных, такое как MongoDB. Теперь, предполагая, что я смоделировал данные с учетом «денормализации», где у меня есть большая модель, которая содержит вложенные подмодели. Как я могу избежать устаревших чтений и переписей, когда несколько актеров I) чтение из DB в Pyndatic, ii) Изменение данных с помощью Pyndatic iii) сохранение обратно в DICT в DB? < /p>
На сегодняшний день Я видел, как проблема атомальности решена на уровне базы данных, где операции являются атомными, но здесь у меня есть шаг II), который работает на уровне приложения. Должен ли я решить использование сеансов/транзакций для блокировки ресурса базы данных, то есть анализа Pyndatic Model/Dict, или я разрабатываю вещи неправильно?
Например: < Br />model_dict = await db.find_one({"id": "my_model_id"}) # read from db, returns the data state as dict
model = BusinessModel.model_validate(model_dict) # convert the dict into a Pyndatic model
# when converting, Pyndatic features such as validation logics and computed fields are run automatically, changing the data
...
model.key1 = "some other processing"
...
sleep(10)
...
model.key2 = "some other processing"
model_dict_updated = model.model_dump() # convert back the Pyndatic model into a dict
await db.replace_one({"id": "my_model_id"}, model_dict_updated) # overwrite the document back into db
< /code>
Я читаю эти ссылки: < /p>
  • Написать конфликты < /li>
    Транзакции


Подробнее здесь: https://stackoverflow.com/questions/794 ... odels-when
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»