MapReduce и параллельные СУБД

         

Полуструктурированные данные


В отличие от СУБД, системам MR не требуется, чтобы пользователи определяли схемы своих данных. Поэтому такие системы легко сохраняют и обрабатывают так называемые "полуструктурированные" ("semistructured") данные. По нашему опыту, такие данные часто имеют вид пар "ключ-значение", где число атрибутов, присутствующих в записях, меняется. Этот стиль данных типичен для журналов Web-трафика, происходящих из разных источников.

При использовании реляцинной СУБД единственный способ моделирования таких данных состоит в применении таблицы с большим числом атрибутов, пригодной для размещения записей нескольких типов. В каждой строке атрибуты, которые отсутствуют в сохраняемой в этой строке записи, содержат неопределенное значение (NULL). В СУБД, сохраняющих данные по строкам (row-based), работа с такими "широкими" таблицами, вообще говоря, может приводить к плохой производительности. С другой стороны, в поколоночных (column-based) СУБД эта проблема смягчается за счет чтения с диска значений только значимых атрибутов и автоматического подавления неопределенных значений . Было продемонстрировано, что эти методы обеспечивают хорошую производительность при работе с наборами RDF-данных, и мы ожидаем того же при работе с более простыми данными "ключ/значение".

В той степени, в которой полуструктурированные данные соответствуют обсуждавшейся выше концепции "стряпни" данных (т.е. данные подготавливаются для загрузки во внутреннюю систему обработки данных), системы в стиле MR хорошо подходят для работы с ними. Если же набор полуструктурированных данных предназначается для использования с помощью аналитических запросов, то, по нашему мнению, лучшим решением будет параллельная СУБД с поколоночным хранением данных.



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