|
Тема |
Re: Има нещо генерално сбъркано .. [re: Maнoлчo] |
|
Автор |
salle (един такъв) |
|
Публикувано | 16.07.05 10:32 |
|
|
> Не съхранявам информация в приложението.
Там е работата, че го правиш но не го осъзнаваш
Работи в следната посока:
Раздели ясно два вида дейност или режими на клиентската част:
1) Режим четене (Само за четене)
2) Режим промени (Редактиране)
Ти смесваш двата в един общ и оттам това неявно съществуване на данни в клиентската част.
Когато клиентът влиза в режим 2) той информира по съответния начин БД за да предпази системата от конфликти.
Пример с явно заключване:
SELECT id FROM users WHERE id = 19 FOR UPDATE;
Тази заявка заключва реда за писане (изключващо) така, че никоя друга сесия не може да го променя.
Ако друг клиент се опита да промени нещо по този ред той ще трябва да чака докато първият клиент приключи работата си.
Друг вариант е при който работейки в ниво на изолация REPEATEBLE READ или SERIALIZABLE две транзакции могат да променят едновременно едни и също данни като в момента на приключване сървърът ще се погрижи да разреши конфликтите по един или друг начин.
Много е вероятно едната транзакция просто да бъде отхвърлена което осигурява цялостност на данните. Друг вариант е едната транзакция да бъде заставена да чака заради неявно заключване.
Изобщо проблемът който поставяш е основен в теорията на Базите Данни и решим във всеки един случай независимо от продукта който използваш. В смисъл, че всеки продукт предлага средства.
|
| |
|
|
|