Facebook открыла исходники распределённой реляционной субд для работы с петабайтами

Компания Facebook открыла исходные коды Presto – новой распределённой совокупности управления базами данных, которая, с одной стороны, абсолютно поддерживает обычный язык запросов SQL, а с другой – разрешает строить кластеры, складывающиеся из сотен узлов, и обрабатывать на них петабайты данных.

В дата-центрах Facebook хранится более 300 петабайт информации.

Это уже не первая попытка Facebook совместить удобство реляционных СУБД и масштабируемость, характерную MapReduce и NoSQL-ответам. Пара лет назад инженеры компании создали совокупность хранения данных Hive. В отличие от Presto, её базой служила платформа Hadoop (открытая реализация концепции MapReduce). Помимо этого, Hive не осознавала SQL. Совокупность применяла похожий, но не совпадающий язык запросов.

Создатели Presto заключили , что отказ от MapReduce существенно ускорит обработку запросов. И, наверное, не напрасно: их разработка на порядок превосходит Hive по эффективности загрузки процессора и времени задержки.

В посте Мартина Траверсо, участвовавшего в работе над Presto, коротко обрисовывается архитектура Presto:

“Клиент отправляет SQL координатору Presto. Координатор разбирает запрос, разбирает его, а после этого планирует выполнение запроса. Диспетчер соединяет конвейер выполнения, даёт поручения узлам, каковые расположены ближе всего к данным, и смотрит за продвижением обработки. Клиент извлекает эти из внешней ступени, которая, со своей стороны, заимствует их с ещё более низких уровней”.

На схеме этапы этого пути продемонстрированы в виде зелёных прямоугольников. Parser создаёт разбор, planner планирует, а scheduler – дробит работу между серверами.

Presto реализована на Java. Более того, совокупность способна компилировать в байт-код Java кроме того сами запросы SQL, причём делать это так, дабы по возможности избежать неприятностей с сборкой мусора и выделением памяти. На этом превращения запроса на заканчиваются: виртуальная машина, выполняющая байт-код, “на лету” компилирует его в машинный код. В следствии он выполняется ещё стремительнее.

Разработка Presto началась восемь или девять месяцев назад. В начале 2013 года первые версии данной совокупности стали внедрять в Facebook. Весной соцсеть начала полномасштабный переход на Presto. Сейчас она трудится на нескольких огромных кластерах (количество узлов в одном из них может быть около тысячи), каждый день выполняя более 30 тысяч запросов к петабайту информации.

Исходные коды Presto размещены на сервисе Github: вот её репозиторий. Как при Hive, для новой совокупности в Facebook выбрали свободную лицензию Apache.

Случайное видео:


Интересные записи: