postgresql одновременных транзакций - PullRequest
0 голосов
/ 01 мая 2020

У меня есть проект, над которым я работаю, который использует фоновый поток для вставки данных в базу данных из другого источника. Теперь одна из проблем, с которыми я иногда сталкиваюсь, - когда пользователь взаимодействует с базой данных, возникает ошибка из-за того, что «не удалось сериализовать доступ из-за одновременного обновления».

Поскольку мой источник данных генерирует много данных, мои Фоновый поток всегда занят хранением и вставкой данных, и я написал алгоритм для «повторной попытки», когда строка заблокирована, поэтому я могу справиться со случайной ошибкой, которая возникает в фоновом потоке.

Реальная проблема заключается в том, что мои пользователи в основном взаимодействуют с базой данных через веб-сайт, на котором сопоставление ORM выполняется на разных уровнях, и кажется, что иногда пользователь может изменять ту же запись, над которой работает фоновый поток.

Есть ли какие-либо рекомендации о том, что я мог бы сделать, чтобы я не столкнулся с ошибками сериализации?

1 Ответ

0 голосов
/ 01 мая 2020

Предположительно вашим пользователям были представлены некоторые данные из базы данных, и на основании увиденного они решили что-то изменить. Если данные, к которым они обращались, устарели, почему вы ожидаете, что решение, основанное на устаревшей информации, останется в силе? В общем, им нужно посмотреть на более актуальные данные и решить, хотят ли они по-прежнему вносить изменения.

Если эти решения «легко» принять, то почему люди делают их в первое место? И если их трудно сделать, какой выбор, кроме как заставить людей переделать их? На это могут быть конкретные ответы, но я не вижу общих ответов, а вы не предоставили нам никаких конкретных деталей для работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...