LinkedIn открыл (https://engineering.linkedin.com/pinot/open-sourcing-pinot-s... исходные тексты хранилища Pinot, ориентированного на выполнение аналитических запросов. Хранилище ориентировано (https://github.com/linkedin/pinot/wiki) на работу в условиях постоянного добавления новых данных (изменение уже сохранённой информации не поддерживается) и рассчитано на обеспечение минимальной задержки между добавлением данных и их обработки в реальном времени. Данные в хранилище могут загружаться из разных источников, начиная Hadoop и обычных файлов и заканчивая загрузки информации из online-источников, таких как Kafka. Код проекта написан на Java и распространяется (https://github.com/linkedin/pinot) под лицензией Apache.
Заявлено обеспечение горизонтальной масштабируемости и возможность хранения огромных объёмов данных. Например, в LinkedIn в Pinot хранится около ста миллирдов записей и ежедневно добавляется более миллиарда новых записей. Ежедневно выполняется около 100 миллионов аналитических запросов, интенсивность которых доходит до тысяч запросов в секунду. Отзывчивость при выполнении запросов составляет около 10 мс. Pinot используется в LinkedIn уже два года и лежит в основе реализации более 25 клиентских и 30 внутренних сервисов, таких как предоставление данных о пользователях посмотревших профиль и сообщения.
В системе предусмотрены средства обеспечения отказоустойчивости и сохранения живучести при возникновении программных и аппаратных ошибок. Pinot подразумевает встраивание репликации и резервного копирования непосредственно в цикл обработки добавляемых в хранилище данных. С одной стороны такой подход приводит к значительному упрощению архитектуры (https://github.com/linkedin/pinot/wiki/Architecture), но, с другой стороны, приводит к возникновению секундной задержки между добавлением данных и их доступностью для запросов. Для управления Pinot-кластером применяется Apache Helix (http://helix.apache.org/).
Обращение к хранилищу производится через привычный SQL-подобный интерфейс, поддерживающий типовые операции фильтрации выборки, агрегирования, сортировки и группировки данных. Для обеспечения предсказуемого времени выполнения запроса операции слияния таблиц (JOIN) не поддерживаются. Данные размещаются в таблицах базы данных, ориентированной на столбцы (column-oriented (https://en.wikipedia.org/wiki/Column-oriented_DBMS)). Поддерживаются различные схемы сжатия и возможность размещения нескольких значений в одном поле. Pinot предоставляет подключаемую систему индексов, в котором можно применять различные типы технологии индексации.
<center><a href="https://github.com/linkedin/pinot/wiki/Architecture">... src="https://www.opennet.ru/opennews/pics_base/0_1434214419.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>
URL: https://engineering.linkedin.com/pinot/open-sourcing-pinot-s...
Новость: https://www.opennet.ru/opennews/art.shtml?num=42415