/ / Как да се справяме с логиката на уеб приложението и паралелността на базата данни? - уеб, паралелност, състояние на състезанието, база данни

Как да се справим с логиката на уеб приложенията и с конкурентността на базата данни? - уеб, конкурентност, състезателно условие, база данни - конкурентност

Нека кажем, че имам наречена таблица items, Потребителят на моя webapp може да изтрие ред на items таблица, но не искам да оставя таблицата празна.

Така че в момента имам подобен код в моето приложение:

if (itemsCount() <= 1) {
don"t delete;
}
else {
delete;
}

Но осъзнавам, че този код е уязвим за проблем с едновременността. Например, ако в момента размерът на items е 2 и има две нишки, изпълняващи този код почти по едно и също време, таблицата може да се изпразни.

Мисля, че този проблем е доста често срещан за хората, които пишат уеб приложения. Хората трябва вече да са го решили. Какви са наличните решения за това?

Отговори:

0 за отговор № 1

Най-често срещаното решение е да се използва транзакцияМениджър. Във вашия случай Transaction Manager ще координира изпълнението на нишката, за да се увери, че само една нишка наведнъж има достъп и актуализира таблицата.

Не споменахте кой език и каква среда използвате, но ако приемем Java и JEE, управлението на транзакциите е доста лесно. тук.