Как поддерживать параллелизм базы данных в длинных логических потоках - PullRequest
2 голосов
/ 22 сентября 2019

Сначала мы используем код структуры сущностей для сохранения отчетов в базе данных SQL, многие объекты имеют много-много отношений, поэтому данные разбиваются на разные таблицы.Чтобы предотвратить дублирование данных, мы сначала проверяем, сохранен ли определенный объект, а затем добавляем отношение к базе данных.

Например, есть объект Person, который может иметь много стран, и объект Country, который можетудерживать несколько объектов Person.

В начале процесса сохранения мы запрашиваем базу данных о существующих странах и обновляем их в объекте Person, если они существуют, или создаем их, если их нет.

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

Мне было интересно, какие хорошие методы существуют для решения этой проблемы с минимальным влиянием на производительность.

Спасибо!

1 Ответ

1 голос
/ 22 сентября 2019

Не похоже, что вы полностью используете возможности выбранного вами ORM.Отношения представляются в ваших возвращенных объектах, если вы используете библиотеку в соответствии с ее документацией .Таким образом, обновление отношения «многие ко многим» для одного объекта будет обновляться для всех других связанных объектов, если EntityID остается прежним.

Если у вас все еще возникают проблемы с доверием целостности этих отношений, я быпредложить использовать функцию массового обновления структуры сущностей

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