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

       

Параллелизм


Параллелизм в базах данных позиционируется не так, как в обычных языках программирования []. В языках программирования обычно используются потоки управления и синхронизация для определения параллельных процессов, которые взаимодействуют (cooperate) для достижения общей цели, периодически обмениваясь данными или запрашивая разделяемые ресурсы.

В базе данных параллелизм представляется как конкурентный (competitive): несколько транзакций конкурирует за доступ к разделяемым ресурсам. Индивидуальные операции могут перекрываться, если набор транзакций является сериализуемым. Менеджер транзакций может аварийно прекратить выполнение любой транзакции и откатить ее. В базах данных обеспечиваются гарантии общего поведения системы, а в языках программирования обычно такие гарантии отсутствуют.

Параллелизм вызывает существенные проблемы для чистых разновидностей ортогональной персистентности []. Вместо того чтобы настаивать на полной ортогонализации языков программирования, исследования следует сосредотачивать на обеспечении семантически осмысленного поведения транзакций/восстановления [].

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



Содержание  Назад  Вперед