Ebay Open Sources Beam


eBay сделал свое хранилище распределенного графа знаний открытым исходным кодом. Beam может использоваться для хранения данных, подобных RDF, и поддерживает запросы, подобные SPARQL. Для хранения используется Apache Kafka. Beam в основном был написан на Go.

Хранилища графов знаний предназначены для моделирования данных, которые сильно взаимосвязаны. В графе знаний данные представлены в виде единой таблицы фактов, где у каждого факта есть субъект, предикат и объект. Beam использует представление данных, подобное RDF, и язык запросов, подобный SPARQL.

Beam распространяется потому, что он предназначен для хранения больших графиков, которые слишком велики для размещения на одном сервере. Он масштабируется по горизонтали, чтобы поддерживать более высокую частоту запросов и большие наборы данных. Разработчики говорят, что, хотя скорость записи не масштабируется, типичное развертывание Beam должно поддерживать десятки тысяч изменений в секунду. Ebay запустил развертывание Beam с 20 серверами для целей разработки около года, в которое был загружен набор данных, содержащий около 2,5 миллиардов фактов, и который не довел Beam до предела своих возможностей.

Архитектура Beam основана на центральном бревне. Все запросы на запись добавляются в центральный журнал, предназначенный только для добавления. Журнал — это сетевая служба, которая внутренне реплицируется для обеспечения отказоустойчивости. Несколько серверов просмотра читают журнал и последовательно применяют его записи. Различные серверы просмотра поддерживают разные состояния. Уровень API принимает запросы от клиентов. Он добавляет запросы на запись в журнал и собирает данные с серверов просмотра для ответа на чтение.

Для журнала используется Apache Kafka, а представление реализовано как DiskView, который может работать в двух режимах: либо индексирование фактов графа знаний по предикату-субъекту, либо по объекту-предикату. Типичное развертывание будет запускать три реплики нескольких разделов каждого режима. DiskView хранит свои факты в RocksDB.

Также есть сервер API, содержащий обработчик запросов. Это реализует язык запросов, похожий на подмножество SPARQL. Он состоит из анализатора, планировщика запросов на основе затрат и механизма параллельного выполнения. Синтаксический анализатор преобразует исходный набор строк запроса в абстрактное синтаксическое дерево (AST). Планировщик объединяет AST со статистикой о данных, чтобы найти эффективный план запроса. Затем исполнитель выполняет план, используя пакетирование и потоковую передачу для повышения производительности.

Beam был сделан с открытым исходным кодом, потому что команда Ebay не может продолжать работать над ним постоянно, чтобы превратить его в законченную, готовую к производству систему. Разработчики говорят, что Beam уже сегодня готов к использованию в автономных, некритичных или исследовательских приложениях. Он также имеет ряд внутренних пакетов, которые могут быть полезны в других проектах, например, его модули разветвления и планировщика запросов. Beam теперь доступен на GitHub.


Добавить комментарий