Параллелизм MySQL, как он работает и нужно ли мне обрабатывать его в моем приложении

Прокси, Декоратор, Адаптер и Мост являются всеми вариациями на "обертывание" класса. Но их использование отличается.

  • Прокси мог использоваться, когда Вы хотите к ленивому - инстанцируют объекта или скрывают то, что Вы называете удаленный сервис или управляете доступом к объекту.

  • Декоратора также называют "Умным Прокси". Это используется, когда Вы хотите добавить функциональность к объекту, но не путем расширения что тип объекта. Это позволяет Вам делать так во времени выполнения.

  • Адаптер используется, когда у Вас есть абстрактный интерфейс, и Вы хотите отобразить тот интерфейс на другой объект, который имеет подобную функциональную роль, но другой интерфейс.

  • Мост очень похож на Адаптер, но мы называем его Мостом, когда Вы определяете и абстрактный интерфейс и конкретную реализацию. Т.е. Вы не адаптируетесь к некоторому или стороннему коду прежней версии, Вы - разработчик всего кода, но необходимо смочь выгрузить различные реализации.

  • Фасад является более высоким уровнем (чтение: более простой), взаимодействуют через интерфейс к подсистеме одного или нескольких классов. Предположим, что у Вас есть сложное понятие, которое требует нескольких объектов представить. Внесение изменений в тот набор объектов сбивает с толку, потому что Вы не всегда знаете, какой объект имеет метод, который необходимо назвать. Это - время для записи Фасада, который предоставляет высокоуровневые методы для всех сложных операций, которые можно сделать к набору объектов. Пример: Модель предметной области для школьного раздела, с методами как countStudents(), reportAttendance(), assignSubstituteTeacher(), и так далее.

26
задан medium 12 May 2018 в 12:08
поделиться

1 ответ

SQL-операторы являются атомарными. То есть, если вы выполните что-то вроде этого:

UPDATE Cars SET Sold = Sold + 1

Никто не может изменить переменную Sold во время этого оператора. Он всегда увеличивается на 1, даже если кто-то другой выполняет одно и то же выражение одновременно.

Проблема возникает, если у вас есть утверждения, которые зависят друг от друга:

a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;

Между этими запросами другой пользователь может изменить таблицу Cars и обновить Sold. Чтобы предотвратить это, включите его в транзакцию:

BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;

Транзакции поддерживаются InnoDB, но не MyISAM.

29
ответ дан 28 November 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: