Архитектуры ООСУБД. Анализ реализаций


Параллельность в архитектуре, основанной на страницах


«Блокировки и права получаются на уровне страниц, и в каждой странице может содержаться много объектов, так что возможны ложные ожидания и ложные синхронизационные тупики.»

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

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

А что насчет создания объектов? Клиенты ObjectStore управляют «локальностью ссылок» путем использования сущностей базы данных, называемых кластерами. Кластеры представляют собой «физические» коллекции страниц. Кластер может содержать одну или большее число страниц, но каждая страница содержится только в одном кластере. При использовании API программисты ObjectStore размещают объекты в кластерах, а не в конкретных страницах. По мере размещения объектов в кластерах к последним добавляются новые страницы, и их размер растет. Если два клиента одновременно создают объекты в одном и том же кластере, то по умолчанию ObjectStore размещает эти объекты в разных страницах этого кластера. Коротко говоря, создание объектов редко приводит к конфликтам.

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


Начало  Назад  Вперед



Книжный магазин