Классика баз данных - статьи

       

Разработка классов параллельного обновления


При разработке семантики классов, поддерживающих поведенческий параллелизм важно различать физические и логические конфликты. Физические конфликты являются низкоуровневыми конфликтами, возникающими из-за чтения и записи одних и тех же объектов параллельно выполняемыми транзакциями. Логические конфликты возникают из-за некоммутативности операций, выполняющихся в параллельных транзакциях. Эти конфликты определяются высокоуровневой семантикой объекта, и они должны обнаруживаться для предотвращения перехода базы данных в несогласованное состояние. Для реализации поведенческого параллелизма в классах параллельного обновления (Concurrent Update, CU) базовые механизмы обнаружения физических конфликтов должны быть расширены для включения высокоуровневой семантики. Эти конфликты могут быть обоснованными логическими конфликтами или же физическими конфликтами, которые можно разрешить способом, прозрачным для конечного пользователя, используя внутреннее поведение объекта для слияния изменений.

Чтобы можно было расширить механизм распознавания физических конфликтов с целью реализации классов параллельных обновлений, основная объектная база данных должна быть активной, т.е. она должна поддерживать выполнение операций объектов, чтобы можно было раскрывать высокоуровневую семантику при попытках фиксации объектов в базе данных. Пассивные объектные базы данных, в которых поддерживаются только операции запросов и обновления над основным хранилищем объектов, было бы трудно расширить для обеспечения поведенческого параллелизма, потому что они не могут выполнять методы, требуемые для реализации поведенческой семантики.

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



Содержание раздела