HadoopDB архитектурный гибрид технологий

         

Параллельные СУБД


Направление параллельных системы баз данных возникло на основе исследований, выполненных в середине 1980-х гг., и большинство современных систем выглядят подобно прототипам параллельных СУБД Gamma и Grace . Во всех этих системах поддерживаются стандартные реляционные таблицы и язык SQL и реализуются многие методы повышения производительности, разработанные исследовательским сообществом в последние десятилетия, включая индексацию, сжатие (операции, выполняемые без распаковки данных), материализованные представления, кэширование результатов и совместное использование ресурсов ввода-вывода. Большая часть таблиц (или даже все таблицы) разделяется по нескольким узлам кластера без совместного использования ресурсов; однако механизм разделения данных прозрачен для конечного пользователя. В параллельных системах баз данных используется оптимизатор запросов, приспособленный к распределенной рабочей нагрузке и превращающий SQL-команды в планы запросов, выполнение которых поровну разделяется между несколькими узлами.

Что касается требуемых свойств рабочих нагрузок крупномасштабного анализа данных, описанных в разд. 3, то в параллельных системах баз данных лучше всего поддерживается "свойство производительности", поскольку именно это свойство больше всего требуется для успешной конкуренции на открытом рынке. Достижению высокой производительности способствует использование ряда хитроумных приемов, придуманных на протяжении десятилетий в сообществе баз данных. Особенно высокой производительности параллельные системы баз данных достигают при наличии высококвалифицированного администратора баз данных (database administrator, DBA), который может тщательно спроектировать базу данных, правильно установить и настроить систему и должным образом ее поддерживать. Однако современные достижения в области автоматизации таких задач и расширяющаяся тенденция к использованию заранее настроенных и сконфигурированных специализированных аппаратно-программных систем (appliance) позволяют многим параллельным системам баз данных демонстрировать высокую производительность без специальных действий DBA.


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

Однако в параллельных системах баз данных должным образом не обеспечиваются свойства отказоустойчивости и возможности функционирования в неоднородных средах. Хотя конкретные детали реализаций параллельных систем баз данных различаются, все они исторически опираются на предположения о том, что отказы случаются редко, и что "крупные" кластеры состоят из десятков (а не сотен или тысяч) узлов, и это приводит к инженерным решениям, затрудняющим достижение этих свойств.

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


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