MapReduce против баз данных

25 январь, 2008 - 11:11Александр Москалюк

Если есть свободное время и интерес к последним течениям в области баз данных, то можно ознакомиться со статьей MapReduce: a major step backwards Дэвида Дьюуитта, и несколько ответов на нее - от Грега Линдена, который теперь в Microsoft, и от Марка Чу-Каролла, который в Google, однако поддерживает MapReduce не из-за работодателя, а по собственной инициативе.

Авторы статьи в Database Column утверждают, что MapReduce - это шаг назад, т.к. вместо дизайна кластера баз данных инженеры занялись изобретением велосипеда, отказавшись от реляционной модели хранения данных, и положившись на файлы, таким образом отказавшись от индексации и прочих благ. Их оппоненты утверждают, что существует ряд задач, для которых MapReduce практически идеален, а вот базы данных трудно адаптировать.

Из своего опыта все-таки соглашусь с оппонентами. В моей нынешней компании приходится работать как с распределенными базами данных, так и с обширными обьемами данных, которые хранятся в файлах. Мы используем MySQL для баз данных и написанную в домашних условиях утилиту для прогона запросов по нескольким тысячам БД и аггрегации результатов в единое целое, что в принципе работает неплохо. Для распределенных подсчетов используется Hadoop, для которого написание сценариев map и reduce занимает в среднем полчаса, и в итоге тоже работает неплохо.