В свое время инженеры Google решили отказаться от использования параллельных СУБД и сделали ставку на технологию MapReduce, которая позволяет индексировать информацию World Wide Web посредством распределенной сети, объединяющей недорогие серверы на базе ПК. В январе 2008 года компания Google с помощью MapReduce ежедневно обрабатывала порядка 20 Пбайт данных.
Внутреннее тестирование в конце ноября показало, что процедура сортировки 1 Тбайт данных посредством программного обеспечения MapReduce, выполняемая на тысяче серверов, занимает 68 секунд.
Благодаря таким результатам у технологии MapReduce и ее версии с открытым кодом Hadoop появилось множество поклонников, полагающих, что при работе в крупных grid-средах и построении инфраструктуры облачных вычислений новая технология превосходит традиционные реляционные системы управления базами данных, существующие уже 40 лет, и в конечном итоге полностью вытеснит их.
Ведущий технический эксперт корпорации Microsoft Дэвид Девитт и легенда мира систем управления базами данных директор по технологиям компании Vertica Systems Майкл Стоунбрейкер, принимавшие участие в составлении отчета, давно утверждали, что технологии MapReduce не хватает многих ключевых функций, ставших стандартными для СУБД, и в общем случае она представляет собой "существенный шаг назад".
В этом смысле отчет, озаглавленный A Comparison of Approaches to Large-Scale Data Analysis ("Сравнение подходов, применяемых при анализе масштабных массивов данных"), весьма показателен и полностью отражает острый характер дискуссии, развернувшейся вокруг технических достоинств каждого из подходов. Ассоциация Association for Computing Machinery, объединяющая 92 тыс. членов, намерена опубликовать его в июньском номере журнала ACM SIGMOD Record, посвященном организации управления данными.
Помимо Девитта и Стоунбрейкера, авторами отчета были пятеро исследователей из университета Брауна, Йельского университета, Массачусетского технологического института и Университета штата Висконсин.
В ходе тестирования Девитт и Стоунбрейкер сравнивали два параллельных кластера из 100 узлов, работавших под управлением строковой СУБД одного из крупнейших производителей реляционных систем и СУБД Vertica с хранением данных по столбцам, с аналогичной конфигурацией MapReduce. На серверах, оснащенных процессорами Intel Core 2 Duo с тактовой частотой 2,4 ГГц, оперативной памятью емкостью 4 Гбайт, жесткими дисками SATA-I объемом 250 Гбайт и портами Gigabit Ethernet, была установлена 64-разрядная операционная система Red Hat Enterprise Linux.
Итак, каковы же результаты? СУБД работали значительно быстрее и требовали для решения каждой задачи меньшего объема кода, однако процедура настройки и загрузки данных занимала более продолжительное время. Кластеры СУБД на различных аналитических задачах демонстрировали производительность, превышавшую показатели MapReduce в 3,1-6,5 раза.
Кроме того, технология MapReduce требовала от разработчиков написания дополнительного кода или выполнения вручную тех операций, которые большинством СУБД SQL обрабатывались автоматически.
По итогам тестирования можно сделать вывод, что MapReduce, вероятно, лучше подходит для разработки силами небольшого числа программистов и для решения узкого спектра задач. Однако отсутствие четких ограничений препятствует реализации долгосрочных и крупномасштабных проектов.
Аналитик отрасли баз данных Курт Монаш согласен с таким заключением.
"Результаты достаточно четко свидетельствуют в пользу традиционных СУБД, -- отметил он. -- На сегодняшний день системы управления базами данных являются более зрелым продуктом".
Исследователи перечислили около десяти поставщиков СУБД с параллельной обработкой, в том числе компании Teradata, Aster Data, Netezza, DATAllegro (ныне Microsoft), Dataupia, Vertica, ParAccel, Hewlett-Packard, Greenplum, IBM и Oracle.
Полученные результаты укрепили уверенность Монаша в том, что MapReduce демонстрирует превосходные результаты только при решении ограниченного спектра задач, например выполняемых Google процедур индексирования и текстового поиска, а также добычи данных.
В других случаях использовать MapReduce имеет смысл, лишь если применение традиционных, основанных на SQL-аппарате СУБД по каким-то причинам оказывается неудобным.
Развертывание параллельных СУБД в крупномасштабных grid-средах, предназначенных для обработки сотен терабайтов или даже петабайтов данных, представляет собой гораздо более сложную процедуру по сравнению с установкой и настройкой конфигурации Hadoop. Кроме того, загрузка данных в среду MapReduce или Hadoop осуществлялась втрое быстрее, чем в среду Vertica, и в 20 раз быстрее, чем в среду неназванной СУБД.
Для тестирования исследователи выбрали кластеры, объединяющие 100 серверов, а не тысячу, как это происходит у Google.
Чрезвычайная эффективность современных СУБД исключает необходимость развертывать такое большое количество оборудования при обработке данных объемом 1-2 Пбайт, утверждают исследователи. А поскольку в мире чрезвычайно ограниченное число наборов данных приближается по своему объему к петабайту, неясно, многим ли пользователям MapReduce действительно понадобится тысяча узлов.