Открыть сервис

Графы свойств

Граф свойств (англ. property graph) — это модель данных, в которой информация представлена в виде ориентированного мультиграфа, где как вершины (узлы), так и рёбра (связи) могут содержать произвольные наборы атрибутов (свойств) в формате «ключ-значение». Данная модель является одной из основных в области графовых баз данных и позволяет эффективно моделировать сложные взаимосвязи между сущностями, характерные для социальных сетей, рекомендательных систем, сетевых топологий и систем управления знаниями.

История и происхождение

Концепция графов как математической абстракции восходит к работам Леонарда Эйлера XVIII века, однако практическое применение графовых структур для хранения и обработки данных в вычислительных системах началось значительно позже. В 2000-х годах, с ростом объёмов данных и усложнением связей между ними, реляционные базы данных стали демонстрировать ограничения при моделировании глубоко связанных структур (например, друзей друзей в социальных сетях). Это привело к появлению специализированных графовых баз данных.

Термин «граф свойств» (property graph) был формализован и популяризирован в 2010-х годах, в первую очередь благодаря разработке таких систем, как Neo4j (компания Neo Technology, США), которая в 2010 году выпустила первую стабильную версию своей графовой СУБД. В 2015 году проект Apache TinkerPop (инкубатор Apache Software Foundation) представил спецификацию Property Graph Model (PGM), ставшую де-факто стандартом для многих графовых баз данных, включая Neo4j, Amazon Neptune, JanusGraph и ArangoDB. В 2019 году был опубликован стандарт GQL (Graph Query Language) — ISO/IEC 39075:2024, который унифицировал язык запросов для графов свойств.

Ключевые элементы модели

Модель графа свойств базируется на четырёх основных компонентах:

Вершины (узлы)

Вершины представляют собой сущности предметной области (например, человека, компанию, товар, город). Каждая вершина имеет уникальный идентификатор (обычно глобальный или локальный для графа) и может быть помечена одной или несколькими метками (labels), которые определяют её тип или роль. Например, вершина может иметь метки Person и Employee.

Рёбра (связи)

Рёбра — это направленные связи между двумя вершинами. Каждое ребро имеет:

  • Начальную вершину (source node)
  • Целевую вершину (target node)
  • Тип (type) — строковое обозначение отношения (например, KNOWS, WORKS_AT, PURCHASED)
  • Уникальный идентификатор (в пределах графа)

Рёбра в графе свойств всегда направлены, что позволяет моделировать асимметричные отношения (например, «подписан на» ≠ «подписчик»). В графе могут существовать кратные рёбра одного типа между одними и теми же вершинами.

Свойства (атрибуты)

Свойства — это пары «ключ-значение», которые могут быть присоединены как к вершинам, так и к рёбрам. Ключ — строка, значение — скалярный тип данных (число, строка, булево значение, дата, список, словарь) или null. Например, вершина с меткой Person может иметь свойства: name: "Иван Петров", age: 35, city: "Москва". Ребро WORKS_AT может иметь свойство since: 2020-01-15.

Метки и типы

Метки вершин и типы рёбер служат для категоризации и фильтрации. Они не являются обязательными, но их использование значительно упрощает написание запросов и индексацию. В отличие от реляционных таблиц, одна вершина может иметь несколько меток одновременно (например, Student и Athlete).

Отличия от других моделей данных

Реляционная модель

В реляционных базах данных связи между сущностями реализуются через внешние ключи и операции JOIN. Для глубоких запросов (например, «найти всех друзей друзей друзей») требуется многократное соединение таблиц, что приводит к экспоненциальному росту времени выполнения. В графе свойств такой запрос выполняется за один проход по рёбрам, что делает его значительно более эффективным для сильно связанных данных.

Граф RDF (Resource Description Framework)

Модель RDF, используемая в семантическом вебе (стандарт W3C), представляет данные в виде триплетов «субъект — предикат — объект». В отличие от графа свойств, RDF не поддерживает свойства на рёбрах (предикат является просто URI, а не объектом с атрибутами). Кроме того, RDF требует использования глобальных URI для идентификации сущностей, что усложняет работу с внутренними данными. Граф свойств более гибок и интуитивен для прикладных задач, не связанных с семантической интеграцией данных.

Документоориентированная модель (NoSQL)

Документные базы (например, MongoDB) хранят данные в виде JSON-подобных документов, которые могут содержать вложенные структуры. Однако для моделирования сложных связей (например, многие-ко-многим) требуется дублирование данных или ссылки, что усложняет обновление и целостность. Граф свойств решает эту проблему за счёт явного представления связей.

Применение

Графы свойств находят широкое применение в различных областях, где важны сложные взаимосвязи:

Социальные сети и рекомендательные системы

Моделирование пользователей, их друзей, подписок, лайков, комментариев и покупок. Платформы, такие как LinkedIn, Facebook (принадлежит компании Meta, признанной экстремистской и запрещённой в РФ), используют графовые базы данных для рекомендаций контента и поиска связей.

Управление идентификацией и доступом (IAM)

Графы свойств позволяют моделировать иерархии ролей, разрешений и организационных структур. Например, в системе управления доступом можно представить пользователя, его группы, роли и права доступа к ресурсам, а затем эффективно вычислять, имеет ли пользователь доступ к определённому объекту.

Анализ мошенничества (Fraud Detection)

В финансовом секторе графы свойств используются для выявления подозрительных схем, таких как кольцевые переводы, использование подставных счетов или аномальные паттерны транзакций. Поиск циклов и путей в графе позволяет автоматически обнаруживать мошеннические сети.

Биоинформатика и геномика

Моделирование взаимодействий белков, метаболических путей, генетических связей и филогенетических деревьев. Например, база данных STRING (Search Tool for the Retrieval of Interacting Genes/Proteins) использует графовую модель для представления известных и предсказанных взаимодействий между белками.

Логистика и транспорт

Оптимизация маршрутов, управление цепочками поставок, моделирование транспортных сетей. Графы свойств позволяют хранить не только топологию дорог (вершины — перекрёстки, рёбра — дороги), но и атрибуты каждого участка (длина, скорость, ограничения, стоимость проезда).

Языки запросов

Для работы с графами свойств разработаны специализированные языки запросов:

  • Cypher — декларативный язык, изначально созданный для Neo4j, ныне стандартизированный как часть GQL. Запросы пишутся в виде ASCII-арта графа: MATCH (a:Person)-[:KNOWS]->(b:Person) WHERE a.name = "Иван" RETURN b. Поддерживает паттерн-матчинг, агрегацию, создание и обновление данных.
  • Gremlin — язык, входящий в стек Apache TinkerPop. Поддерживает как декларативный, так и процедурный стиль (граф-обход). Запросы могут быть написаны на Java, Groovy, Python, JavaScript и других языках. Пример: g.V().has('name', 'Иван').out('KNOWS').values('name').
  • SPARQL — язык для запросов к RDF-графам, но может быть адаптирован для графов свойств через специальные расширения (например, Property Graph SPARQL).
  • GQL (ISO/IEC 39075:2024) — международный стандарт, объединяющий лучшие практики Cypher и SQL. Поддерживает паттерн-матчинг, пути, агрегацию и вложенные запросы.

Преимущества и ограничения

Преимущества

  • Наглядность моделированияструктура данных в графе свойств визуально соответствует реальным взаимосвязям.
  • Высокая производительность при обходах — количество шагов для нахождения связанных данных линейно зависит от глубины запроса, а не от размера всей базы.
  • Гибкость схемы — метки и свойства могут добавляться и изменяться без необходимости миграции всей базы данных (схема-on-read).
  • Поддержка сложных паттернов — поиск циклов, путей, кратчайших маршрутов, кластеризация.

Ограничения

  • Сложность горизонтального масштабирования — в отличие от реляционных баз, графовые базы данных сложнее шардировать, так как связи между узлами могут пересекать границы шардов.
  • Отсутствие стандартизации до 2024 года — до принятия GQL существовала фрагментация языков запросов (Cypher, Gremlin, SPARQL), что затрудняло миграцию между системами.
  • Меньшая зрелость инструментов — по сравнению с реляционными СУБД, экосистема графовых баз данных (инструменты администрирования, мониторинга, резервного копирования) менее развита.
  • Потребление памяти — хранение метаданных для каждого ребра и свойства может быть более затратным, чем в реляционных таблицах.

Примеры реализации

Neo4j (США)

Наиболее популярная графовая база данных, реализующая модель графа свойств. Поддерживает язык Cypher, ACID-транзакции, кластеризацию (Causal Clustering) и индексацию. Используется в таких компаниях, как eBay, Walmart, Cisco, UBS.

Amazon Neptune (США)

Полностью управляемый сервис графовых баз данных от Amazon Web Services. Поддерживает как модель графа свойств (через Gremlin и SPARQL), так и модель RDF. Обеспечивает высокую доступность и автоматическое резервное копирование.

JanusGraph (США, проект Linux Foundation)

Открытая графовая база данных, поддерживающая Apache TinkerPop. Может использовать Apache Cassandra, HBase или Google Bigtable в качестве бэкенда для хранения данных. Ориентирована на крупномасштабные системы (сотни миллиардов вершин и рёбер).

ArangoDB (Германия)

Мультимодельная база данных, поддерживающая графы свойств, документы и ключ-значение. Использует собственный язык запросов AQL (ArangoDB Query Language), который позволяет комбинировать операции над графами и документами в одном запросе.

Интересные факты

  • В 2017 году компания Neo Technology (ныне Neo4j) провела исследование, показавшее, что использование графа свойств для моделирования социальной сети с 1 миллионом пользователей и 10 миллионами связей позволяет выполнять запросы «друзья друзей» в 1000 раз быстрее, чем на реляционной базе данных с оптимизированными индексами.
  • Стандарт GQL (ISO/IEC 39075:2024) стал первым международным стандартом для графовых языков запросов, принятым в 2024 году. В его разработке участвовали представители более 20 стран, включая Россию (через Технический комитет по стандартизации «Информационные технологии»).
  • В 2020 году проект Apache TinkerPop был признан одним из самых активных проектов Apache Software Foundation по количеству коммитов и участников.

Источники

  • Robinson, I., Webber, J., & Eifrem, E. (2015). Graph Databases: New Opportunities for Connected Data. O'Reilly Media.
  • Angles, R., & Gutierrez, C. (2008). Survey of Graph Database Models. ACM Computing Surveys, 40(1), 1–39.
  • Apache TinkerPop Documentation. Property Graph Model. (2023). The Apache Software Foundation.
  • ISO/IEC 39075:2024. Information technology — Graph Query Language (GQL). International Organization for Standardization.
  • Neo4j, Inc. (2022). The Neo4j Graph Platform: Developer Guide. Neo4j, Inc.
  • Amazon Web Services. (2023). Amazon Neptune: Developer Guide. Amazon.com, Inc.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →