Сохранение данных в БД в 3-звенной архитектуре
От: alesterre Удмуртия  
Дата: 31.01.13 20:01
Оценка:
На сервере в памяти хранятся данные, по запросу клиента изменяются, рассылаются другим клиентам. Данные небольшие и операции относительно простые, поэтому все работает быстро и надежно.

Но эти данные нужно сначала достать из базы данных, а потом как-то сохранить. И здесь начинаются тормоза. В частности, сохранение графа объектов происходит в общем случае дольше, чем интервал между соседними изменениями данных (пользователь довольно быстро кликает мышью по кнопке, либо несколько пользователей одновременно). В итоге сервер параллельно сохраняет в базе несколько слегка разных версий одного и того же набора данных, что в худшем случае приводит к дедлокам транзакций. Как в такой ситуации правильно организовать загрузку и сохранение данных? Загружать один раз и держать в памяти как можно дольше? Сохранять как можно реже, когда данные никто не трогает?

Не могу придумать простое решение, по которому сразу можно было бы сказать, что оно работает, и не терзаться сомнениями вида "а что, если?" Как вообще принято делать? Задача выглядит абсолютно стандартной, но что-то ничего толкового не гуглится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.