Распознавание измененных данных в многопользовательской базе данных

У меня есть база данных, к которой будут обращаться несколько пользователей. Например, User 1 извлекает список всех доступных наборов данных в таблице "Test". User 2 делает то же самое, и впоследствии оба пользователя получают одинаковые наборы данных.

Итак, теперь, если User 1 хочет записать ABC в набор данных с помощью Index 1, он может это сделать, и набор данных будет постоянным. Но если User 2 СЕЙЧАС хочет записать ABB в набор данных с помощью Index 1, как он может узнать, что набор данных уже обновлен?

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

Или есть какие-то другие подходы?


person Marcel    schedule 06.07.2017    source источник
comment
ключевое слово - оптимистическая блокировка. Решение номер 2: - Используйте тип данных временной метки. NET-Pessimistic-and-opt" rel="nofollow noreferrer">codeproject.com/Articles/114262/   -  person levent    schedule 06.07.2017
comment
Предполагая, что ваше приложение является асинхронным, и вы извлекаете данные, просматриваете их, а затем вносите изменения, вам необходимо обрабатывать проверку на изменение данных в той же операции sql, что и запись в БД, поэтому вы можете использовать алгоритмы хеширования, чтобы узнать, есть ли обновленный атасет, но если вы сделаете это, а затем вернетесь, чтобы написать, вы все еще открыты для разногласий   -  person theo    schedule 06.07.2017


Ответы (1)


Здесь есть несколько возможных ответов, и многое зависит от архитектуры вашего приложения.

Будут ли два пользователя одновременно работать над одной и той же строкой? И если это так, если у них разные представления о том, какие данные должны там быть, это звучит как бизнес-проблема, которую необходимо рассмотреть и решить.

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

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

person theo    schedule 06.07.2017