База данных графов, разработанная коммуникационным агентством Великобритании и оптимизированная для получения данных об интересующих узлах, стала доступной на Github.
Gaffer — это база данных графов, которую вы можете использовать для хранения крупномасштабных графов, в которых узлы и ребра имеют статистику, такую как подсчеты, гистограммы и эскизы. Это база данных графов, а не система обработки графов, и она отличается от других систем хранения графов, поскольку вы можете обновлять свойства в самом хранилище.
Например, если ребра в графе имеют статистику подсчета, то при новом наблюдении за ребром ребро можно просто вставить в граф со счетом 1. Если это ребро уже существует в графе, то это счет 1 будет добавлен к существующему краю.
Как объясняется о базе данных на Github:
«Возможность выполнять эти обновления без необходимости помещать обновления запроса является ключом к способности принимать большие объемы данных».
Типы статистики, которые вы можете использовать, включают карты, наборы, гистограммы, эскизы гиперлогов и растровые изображения, используемые для хранения временных меток.
Способ хранения свойств в графе — еще один интересный и умный прием. Свойства хранятся отдельно для разных временных окон, поэтому график не просто увеличивается в размерах и становится неработоспособным.
Вы можете сохранить ежедневные сводки свойств, чтобы старые свойства по существу архивировались, как и края, которые не были видны в течение определенного периода. Этот метод также означает, что пользователь может указать интересующий период времени во время запроса, и Gaffer будет агрегировать свойства в течение этого временного окна перед возвратом результатов пользователю.
Вы также получаете хороший контроль над просмотром данных. Документация Github объясняет:
«Например, у нас может быть граф, содержащий ряд типов ребер, например красный, синий и зеленый, и во время запроса мы можем выбрать просмотр только красных ребер в определенном временном окне».
Вы не ограничены только краевым анализом. У вас могут быть базы данных без каких-либо краев, что означает, что Gaffer можно использовать для приложений машинного обучения, где вам нужно отслеживать любые «векторы функций», описывающие набор элементов в актуальном состоянии.
Gaffer использует Accumulo для хранения данных, хотя вы можете переключиться на другие хранилища, если хотите. Он использует стек итератора Accumulo для эффективного слияния свойств на стороне сервера и для фильтрации результатов во время запроса.
Принимая во внимание, что он был разработан GCHQ, британской службой анализа сигналов, требования, которым он был разработан, делают интересным чтение:
Позволяет создавать графики с обобщенными свойствами в Accumulo с минимальным количеством кода.
Обеспечьте гибкость статистики, описывающей объекты и ребра.
Позволяют легко добавлять новые типы узлов и ребер.
Разрешить быстрый поиск данных об интересующих узлах.
Работайте с данными с разными уровнями безопасности — все данные видны, и это используется для ограничения доступа к данным на основе их полномочий.
Поддержка автоматического удаления устаревших данных.
Это не только очень полезная структура графической базы данных, она показывает, что GCHQ использует современные методы анализа данных новаторскими способами для отслеживания потенциальных террористов.