В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения ) |
Графовая база данных ( GDB ) — это база данных , которая использует графовые структуры для семантических запросов с узлами , ребрами и свойствами для представления и хранения данных. [1] Ключевым понятием системы является граф (или ребро или связь). Граф связывает элементы данных в хранилище с набором узлов и ребер, ребра представляют связи между узлами. Связи позволяют связывать данные в хранилище напрямую и, во многих случаях, извлекать их с помощью одной операции. Графовые базы данных сохраняют связи между данными в качестве приоритета. Запрос связей выполняется быстро, поскольку они постоянно хранятся в базе данных. Связи можно наглядно визуализировать с помощью графовых баз данных, что делает их полезными для сильно взаимосвязанных данных. [2]
Графовые базы данных обычно называют базами данных NoSQL . Графовые базы данных похожи на сетевые модели баз данных 1970-х годов, поскольку обе представляют общие графы, но сетевые модели баз данных работают на более низком уровне абстракции [3] и не имеют простого обхода по цепочке ребер. [4]
Базовый механизм хранения графовых баз данных может различаться. Отношения являются гражданами первого класса в графовой базе данных и могут быть помечены, направлены и им могут быть заданы свойства. Некоторые зависят от реляционного движка и хранят графовые данные в таблице ( хотя таблица является логическим элементом, поэтому этот подход накладывает уровень абстракции между системой управления графовой базой данных и физическими устройствами хранения). Другие используют хранилище «ключ-значение» или документоориентированную базу данных для хранения, что делает их по своей сути структурами NoSQL.
По состоянию на 2021 год [обновлять]ни один язык графовых запросов не был принят повсеместно так же, как SQL для реляционных баз данных, и существует большое разнообразие систем, многие из которых тесно связаны с одним продуктом. Некоторые ранние усилия по стандартизации привели к появлению языков запросов от нескольких поставщиков, таких как Gremlin , SPARQL и Cypher . В сентябре 2019 года члены Объединенного технического комитета ISO/IEC 1 (ISO/IEC JTC 1) одобрили предложение о проекте по созданию нового стандартного языка графовых запросов (ISO/IEC 39075 Information Technology — Database Languages — GQL). GQL предназначен для использования в качестве декларативного языка запросов к базам данных, как SQL. Помимо интерфейсов языка запросов, к некоторым графовым базам данных осуществляется доступ через интерфейсы прикладного программирования (API).
Графовые базы данных отличаются от графовых вычислительных машин. Графовые базы данных — это технологии, которые являются переводами реляционных баз данных онлайн-обработки транзакций (OLTP). С другой стороны, графовые вычислительные машины используются в онлайн-аналитической обработке (OLAP) для массового анализа. [5] Графовые базы данных привлекли значительное внимание в 2000-х годах из-за успехов крупных технологических корпораций в использовании фирменных графовых баз данных, [6] а также внедрения графовых баз данных с открытым исходным кодом .
В одном исследовании сделан вывод о том, что СУРБД «сопоставима» по производительности с существующими механизмами анализа графов при выполнении графовых запросов. [7]
В середине 1960-х годов навигационные базы данных , такие как IMS компании IBM , поддерживали древовидные структуры в своей иерархической модели , но строгую древовидную структуру можно было обойти с помощью виртуальных записей. [8] [9]
Графовые структуры могли быть представлены в базах данных сетевых моделей с конца 1960-х годов. CODASYL , который определил COBOL в 1959 году, определил язык сетевых баз данных в 1969 году.
Размеченные графы могли быть представлены в графовых базах данных с середины 1980-х годов, таких как Логическая модель данных. [10] [11]
Коммерческие объектные базы данных (ODBMS) появились в начале 1990-х годов. В 2000 году Object Data Management Group опубликовала стандартный язык для определения структур объектов и отношений (графов) в своей публикации ODMG'93.
Несколько усовершенствований графовых баз данных появились в начале 1990-х годов и получили дальнейшее развитие в конце 1990-х годов с попытками индексировать веб-страницы.
В середине-конце 2000-х годов стали доступны коммерческие графовые базы данных с гарантиями ACID , такие как Neo4j и Oracle Spatial and Graph .
В 2010-х годах стали доступны коммерческие графовые базы данных ACID, которые можно было масштабировать горизонтально . Кроме того, SAP HANA привнесла в графовые базы данных технологии in-memory и столбчатые технологии. [12] Также в 2010-х годах стали доступны многомодельные базы данных , которые поддерживали графовые модели (и другие модели, такие как реляционные базы данных или документно-ориентированные базы данных ), такие как OrientDB , ArangoDB и MarkLogic (начиная с версии 7.0). В это время графовые базы данных различных типов стали особенно популярны в анализе социальных сетей с появлением компаний социальных сетей. Также в течение десятилетия стали доступны облачные графовые базы данных, такие как Amazon Neptune и Neo4j AuraDB .
Графовые базы данных отображают данные так, как они рассматриваются концептуально. Это достигается путем перевода данных в узлы, а их связей в ребра.
Графовая база данных — это база данных, основанная на теории графов . Она состоит из набора объектов, которые могут быть узлами или ребрами.
Модель графа с помеченными свойствами представлена набором узлов, отношений, свойств и меток. Как узлы данных, так и их отношения именованы и могут хранить свойства, представленные парами ключ-значение . Узлы могут быть помечены для группировки. Ребра, представляющие отношения, обладают двумя качествами: они всегда имеют начальный узел и конечный узел и направлены; [13] делая граф направленным графом . Отношения также могут иметь свойства. Это полезно для предоставления дополнительных метаданных и семантики отношениям узлов. [14] Прямое хранение отношений обеспечивает обход за постоянное время . [15]
В модели графа RDF каждое добавление информации представлено отдельным узлом. Например, представьте себе сценарий, в котором пользователь должен добавить свойство имени для человека, представленного как отдельный узел в графе. В модели графа с маркированным свойством это будет сделано путем добавления свойства имени в узел человека. Однако в RDF пользователь должен добавить отдельный узел, называемый , hasName
соединяющий его с исходным узлом человека. В частности, модель графа RDF состоит из узлов и дуг. Нотация графа RDF или утверждение представлены: узлом для субъекта, узлом для объекта и дугой для предиката. Узел может быть оставлен пустым, литералом и/или идентифицирован URI . Дуга также может быть идентифицирована URI. Литерал для узла может быть двух типов: простой (нетипизированный) и типизированный. Простой литерал имеет лексическую форму и, необязательно, языковой тег. Типизированный литерал состоит из строки с URI, который идентифицирует определенный тип данных. Пустой узел может использоваться для точной иллюстрации состояния данных, когда данные не имеют URI . [16]
Графовые базы данных являются мощным инструментом для графоподобных запросов. Например, вычисление кратчайшего пути между двумя узлами в графе. Другие графоподобные запросы могут быть выполнены над графовой базой данных естественным образом (например, вычисление диаметра графа или обнаружение сообщества).
Графы гибкие, что означает, что они позволяют пользователю вставлять новые данные в существующий граф без потери функциональности приложения. Нет необходимости для проектировщика базы данных планировать обширные детали будущих вариантов использования базы данных.
Базовый механизм хранения графовых баз данных может различаться. Некоторые зависят от реляционного движка и «хранят» графовые данные в таблице ( хотя таблица является логическим элементом, поэтому этот подход накладывает еще один уровень абстракции между графовой базой данных, системой управления графовой базой данных и физическими устройствами, где данные фактически хранятся). Другие используют хранилище «ключ-значение» или документоориентированную базу данных для хранения, что делает их по своей сути структурами NoSQL . Узел будет представлен как любое другое хранилище документов, но ребра, которые связывают два разных узла, содержат специальные атрибуты внутри своего документа; атрибуты _from и _to.
Производительность поиска данных зависит от скорости доступа от одного конкретного узла к другому. Поскольку смежность без индексов заставляет узлы иметь прямые физические адреса ОЗУ и физически указывать на другие соседние узлы, это приводит к быстрому извлечению. Собственная графовая система с смежностью без индексов не должна проходить через какие-либо другие типы структур данных для поиска связей между узлами. Непосредственно связанные узлы в графе сохраняются в кэше после извлечения одного из узлов, что делает поиск данных даже быстрее, чем при первом извлечении узла пользователем. Однако такое преимущество имеет свою цену. Смежность без индексов жертвует эффективностью запросов, которые не используют обходы графа . Собственные графовые базы данных используют смежность без индексов для обработки операций CRUD над сохраненными данными.
Было признано несколько категорий графиков по типу данных. Gartner предлагает пять основных категорий графиков: [17]
Начиная с работы Эдгара Ф. Кодда 1970 года о реляционной модели [18] , реляционные базы данных стали фактическим отраслевым стандартом для крупномасштабных систем хранения данных. Реляционные модели требуют строгой схемы и нормализации данных , которая разделяет данные на множество таблиц и удаляет любые дублирующиеся данные в базе данных. Данные нормализуются для сохранения согласованности данных и поддержки транзакций ACID . Однако это накладывает ограничения на то, как можно запрашивать отношения.
Одной из мотиваций дизайна реляционной модели было достижение быстрого доступа построчно. [18] Проблемы возникают, когда необходимо сформировать сложные отношения между хранимыми данными. Хотя отношения можно анализировать с помощью реляционной модели, требуются сложные запросы, выполняющие множество операций соединения по многим различным атрибутам в нескольких таблицах. При работе с реляционными моделями следует также учитывать ограничения внешнего ключа при извлечении отношений, что приводит к дополнительным накладным расходам.
По сравнению с реляционными базами данных графовые базы данных часто быстрее для ассоциативных наборов данных [ нужна цитата ] и более точно соответствуют структуре объектно-ориентированных приложений. Они могут масштабироваться более естественно [ нужна цитата ] для больших наборов данных, поскольку им обычно не нужны операции соединения , которые часто могут быть дорогими. Поскольку они меньше зависят от жесткой схемы, их позиционируют как более подходящие для управления специальными и меняющимися данными с развивающимися схемами.
Напротив, системы управления реляционными базами данных обычно быстрее выполняют ту же операцию с большим количеством элементов данных, позволяя манипулировать данными в их естественной структуре. Несмотря на преимущества графовых баз данных и недавнюю популярность по сравнению с [ требуется цитата ] реляционными базами данных, рекомендуется, чтобы сама графовая модель не была единственной причиной замены существующей реляционной базы данных. Графовая база данных может стать актуальной, если есть доказательства улучшения производительности на порядки и снижения задержки. [19]
Реляционная модель собирает данные вместе, используя информацию в данных. Например, можно искать всех «пользователей», чей номер телефона содержит код города «311». Это можно сделать, выполнив поиск в выбранных хранилищах данных или таблицах , просматривая выбранные поля телефонных номеров для строки «311». Это может быть трудоемким процессом в больших таблицах, поэтому реляционные базы данных предлагают индексы , которые позволяют хранить данные в меньшей подтаблице, содержащей только выбранные данные и уникальный ключ (или первичный ключ) записи. Если номера телефонов индексированы, тот же поиск будет выполняться в меньшей индексной таблице, собирая ключи соответствующих записей, а затем просматривая основную таблицу данных для записей с этими ключами. Обычно таблица хранится таким образом, что позволяет выполнять поиск по ключу очень быстро. [20]
Реляционные базы данных изначально не содержат идею фиксированных отношений между записями. Вместо этого связанные данные связываются друг с другом путем сохранения уникального ключа одной записи в данных другой записи. Например, таблица, содержащая адреса электронной почты пользователей, может содержать элемент данных с именем userpk
, который содержит первичный ключ записи пользователя, с которой он связан. Чтобы связать пользователей и их адреса электронной почты, система сначала ищет первичные ключи выбранных записей пользователей, ищет эти ключи в столбце userpk
в таблице электронной почты (или, что более вероятно, в их индексе), извлекает данные электронной почты, а затем связывает записи пользователей и электронной почты, чтобы создать составные записи, содержащие все выбранные данные. Эта операция, называемая соединением , может быть вычислительно затратной. В зависимости от сложности запроса, количества соединений и индексирования различных ключей системе может потребоваться выполнить поиск по нескольким таблицам и индексам, а затем отсортировать все это, чтобы сопоставить их вместе. [20]
Напротив, графовые базы данных напрямую хранят связи между записями. Вместо того, чтобы находить адрес электронной почты, просматривая ключ пользователя в userpk
столбце, запись пользователя содержит указатель, который напрямую ссылается на запись адреса электронной почты. То есть, выбрав пользователя, указатель можно перейти непосредственно к записям электронной почты, нет необходимости искать в таблице электронной почты, чтобы найти соответствующие записи. Это может устранить дорогостоящие операции соединения. Например, если кто-то ищет все адреса электронной почты для пользователей в коде города «311», движок сначала выполнит обычный поиск, чтобы найти пользователей в «311», но затем извлечет адреса электронной почты, следуя ссылкам, найденным в этих записях. Реляционная база данных сначала найдет всех пользователей в «311», извлечет список первичных ключей, выполнит еще один поиск любых записей в таблице электронной почты с этими первичными ключами и свяжет соответствующие записи вместе. Для этих типов общих операций графовые базы данных теоретически будут быстрее. [20]
Истинная ценность графового подхода становится очевидной, когда выполняется поиск, который имеет глубину более одного уровня. Например, рассмотрим поиск пользователей, у которых есть «подписчики» (таблица, связывающая пользователей с другими пользователями) в коде города «311». В этом случае реляционная база данных должна сначала найти всех пользователей с кодом города в «311», затем найти любого из этих пользователей в таблице подписчиков, а затем, наконец, найти таблицу пользователей, чтобы извлечь соответствующих пользователей. Напротив, графовая база данных будет искать всех пользователей в «311», затем следовать обратным ссылкам через отношение подписчиков, чтобы найти пользователей-подписчиков. Это позволяет избежать нескольких поисков, поисков и использования памяти, связанных с хранением всех временных данных из нескольких записей, необходимых для построения вывода. В терминах нотации «большой О» этот запрос будет занимать время, т. е. пропорционально логарифму размера данных. Напротив, реляционная версия будет выполнять несколько поисков, плюс время, необходимое для объединения всех записей данных. [20]
Относительное преимущество поиска графа растет с ростом сложности запроса. Например, кто-то может захотеть узнать «тот фильм о подводных лодках с актером, который был в том фильме, с тем другим актером, который играл главную роль в « Унесенных ветром ». Для этого сначала требуется, чтобы система нашла актеров в «Унесенных ветром » , нашла все фильмы, в которых они снимались, нашла всех актеров во всех этих фильмах, которые не были главными в « Унесенных ветром» , а затем нашла все фильмы, в которых они снимались, наконец, отфильтровав этот список по тем, описания которых содержат «подводная лодка». В реляционной базе данных это потребовало бы нескольких отдельных поисков по таблицам фильмов и актеров, выполнения еще одного поиска по фильмам о подводных лодках, нахождения всех актеров в этих фильмах, а затем сравнения (больших) собранных результатов. Напротив, база данных графа будет проходить от «Унесенных ветром» до Кларка Гейбла , собирать ссылки на фильмы, в которых он снимался, собирать ссылки из этих фильмов на других актеров, а затем следовать ссылкам из этих актеров обратно к списку фильмов. Полученный список фильмов можно затем искать по запросу «подводная лодка». Все это можно сделать с помощью одного поиска. [21]
Свойства добавляют еще один уровень абстракции к этой структуре, что также улучшает многие общие запросы. Свойства по сути являются метками, которые можно применять к любой записи, или в некоторых случаях также к ребрам. Например, можно пометить Кларка Гейбла как «актер», что затем позволит системе быстро находить все записи, которые являются актерами, в отличие от режиссера или оператора камеры. Если метки на ребрах разрешены, можно также пометить связь между « Унесенными ветром» и Кларком Гейблом как «ведущий», и, выполняя поиск по людям, которые являются «ведущим» «актером» в фильме « Унесенные ветром », база данных выдаст Вивьен Ли , Оливию де Хэвилленд и Кларка Гейбла. Эквивалентный запрос SQL должен будет полагаться на добавленные данные в таблице, связывающие людей и фильмы, что усложняет синтаксис запроса. Такого рода метки могут улучшить производительность поиска при определенных обстоятельствах, но, как правило, более полезны для предоставления дополнительных семантических данных для конечных пользователей. [21]
Реляционные базы данных очень хорошо подходят для плоских макетов данных, где связи между данными находятся только на одном или двух уровнях в глубину. Например, бухгалтерской базе данных может потребоваться поиск всех позиций для всех счетов-фактур для данного клиента, запрос с тремя соединениями. Графовые базы данных нацелены на наборы данных, которые содержат гораздо больше ссылок. Они особенно хорошо подходят для систем социальных сетей , где отношения «друзья» по сути неограниченны. Эти свойства делают графовые базы данных естественным образом подходящими для типов поиска, которые все чаще встречаются в онлайн-системах и в средах больших данных . По этой причине графовые базы данных становятся очень популярными для крупных онлайн-систем, таких как Facebook , Google , Twitter и подобных систем с глубокими связями между записями.
Для дальнейшей иллюстрации представьте себе реляционную модель с двумя таблицами: people
таблица (со столбцом person_id
и person_name
) и friend
таблица (со столбцом friend_id
и person_id
, который является внешним ключом таблицы people
). В этом случае поиск всех друзей Джека приведет к следующему SQL-запросу.
SELECT p2 . person_name FROM people p1 JOIN friend ON ( p1 . person_id = friend . person_id ) JOIN people p2 ON ( p2 . person_id = friend . friend_id ) WHERE p1 . person_name = 'Джек' ;
Тот же запрос можно перевести как --
СОВПАДЕНИЕ ( стр.1 : персона { имя : 'Джек' } ) -[ : ДРУГ_С_ИМЕНЕМ ] - ( стр.2 : персона ) ВОЗВРАТ стр.2.имя
ПРЕФИКС foaf : <http://xmlns.com/foaf/0.1/>SELECT ?name WHERE { ?s a foaf : Person . ?s foaf : name "Jack" . ?s foaf : knows ?o . ?o foaf : name ?name . }
ПРЕФИКС foaf : <http://xmlns.com/foaf/0.1/>SELECT ?name WHERE { ?s foaf : name "Джек" ; foaf : knows ?o . ?o foaf : name ?name . }
SELECT people.name FROM ( SPARQL PREFIX foaf : < http://xmlns.com/foaf/0.1/> SELECT ? name WHERE { ?s foaf : name "Джек" ; foaf : knows ?o . ?o foaf : name ?name . } ) AS people ;
Приведенные выше примеры являются простой иллюстрацией базового запроса отношений. Они сжато передают идею сложности запросов реляционных моделей, которая увеличивается с общим объемом данных. Для сравнения, запрос к графовой базе данных легко может сортировать граф отношений, чтобы представить результаты.
Также есть результаты, которые указывают на то, что простые, сжатые и декларативные запросы графовых баз данных не обязательно обеспечивают хорошую производительность по сравнению с реляционными базами данных. В то время как графовые базы данных предлагают интуитивное представление данных, реляционные базы данных предлагают лучшие результаты, когда требуются операции с множествами. [15]
Ниже приведен список известных графовых баз данных:
имя | текущая версия | последняя дата выпуска (ГГГГ-ММ-ДД) | лицензия на программное обеспечение | язык программирования | описание |
---|---|---|---|---|---|
Аэроспайк | 7.0 | 2023-11-15 | Запатентованный | С | Aerospike Graph — это высокомасштабируемая база данных графа свойств с низкой задержкой, созданная на проверенной платформе данных в реальном времени Aerospike. Aerospike Graph объединяет корпоративные возможности Aerospike Database — самой масштабируемой базы данных NoSQL в реальном времени — с моделью данных графа свойств через вычислительный движок Apache Tinkerpop graph. Разработчики смогут воспользоваться встроенной поддержкой языка запросов Gremlin, что позволит им напрямую писать мощные бизнес-процессы. |
АллегроГраф | 7.0.0 | 2020-04 | Запатентованная , клиенты: Eclipse Public License v1 | C# , C , Common Lisp , Java , Python | Структура описания ресурсов (RDF) и графовая база данных. |
Амазонка Нептун | 1.3.3.0 | 2024-08-05 [22] | Запатентованный | Не разглашается | Amazon Neptune — это полностью управляемая графовая база данных от Amazon.com . Она используется как веб-сервис и является частью Amazon Web Services . Поддерживает популярные графовые модели property graph и W3C 's RDF , а также соответствующие им языки запросов Apache TinkerPop, Gremlin , SPARQL и openCypher . |
AnzoGraph БД | 2.1 | 2020-02 | Запатентованный | С , С++ | AnzoGraph DB — это массивно-параллельная база данных в стиле Graph Online Analytics Processing (GOLAP), созданная для поддержки SPARQL и Cypher Query Language для анализа триллионов взаимосвязей. AnzoGraph DB предназначена для интерактивного анализа больших наборов семантических тройных данных, но также поддерживает маркированные свойства в соответствии с предлагаемыми стандартами W3C . [23] [24] [25] [26] |
ArangoDB | 3.9.1 | 2022-04 | Бесплатный Apache 2 , проприетарный | C++ , JavaScript , .NET , Java , Python , Node.js , PHP , Scala , Go , Ruby , Elixir | Система графовой базы данных NoSQL , разработанная ArangoDB Inc., поддерживающая три модели данных (ключ/значение, документы, графы) с одним ядром базы данных и унифицированным языком запросов AQL (язык запросов ArangoDB). Обеспечивает масштабируемость и высокую доступность посредством репликации между центрами обработки данных, автоматического сегментирования, автоматического переключения при сбое и других возможностей. |
База данных Azure Cosmos | 2017 | Запатентованный | Не разглашается | Мультимодальная база данных, поддерживающая графовые концепции с использованием языка запросов Apache Gremlin | |
DataStax Enterprise График | версия 6.0.1 | 2018-06 | Запатентованный | Ява | Распределенная, масштабируемая база данных в режиме реального времени; поддерживает Tinkerpop и интегрируется с Cassandra [27] |
InfiniteGraph | 2021.2 | 2021-05 | Собственная , коммерческая, бесплатная версия на 50 ГБ | Java , C++ , язык запросов «DO» | Распределенная, облачная и масштабируемая графовая база данных для сложных запросов и операций в реальном времени. Ее объекты Vertex и Edge имеют уникальные 64-битные идентификаторы объектов, которые значительно ускоряют операции навигации по графу и поиска пути. Она поддерживает пакетные или потоковые обновления графа вместе с одновременными параллельными запросами. Язык запросов 'DO' InfiniteGraph позволяет выполнять как запросы на основе значений, так и сложные графовые запросы. InfiniteGraph выходит за рамки графовых баз данных и также поддерживает сложные объектные запросы. |
JanusGraph | 1.0.0 | 2023-10-21 [28] | Апач 2 | Ява | Открытый исходный код, масштабируемая, распределенная по многомашинной кластерной графовой базе данных под управлением Linux Foundation ; поддерживает различные бэкэнды хранения ( Apache Cassandra , Apache HBase , Google Cloud Bigtable , Oracle Berkeley DB ); [29] поддерживает глобальную аналитику графовых данных, отчетность, а также извлечение, преобразование и загрузку (ETL) посредством интеграции с платформами больших данных ( Apache Spark , Apache Giraph , Apache Hadoop ); поддерживает гео, числовой диапазон и полнотекстовый поиск через внешние индексные хранилища ( Elasticsearch , Apache Solr , Apache Lucene ). [30] |
MarkLogic | 8.0.4 | 2015 | Запатентованная , бесплатная версия для разработчиков | Ява | Многомодельная база данных NoSQL , в которой хранятся документы (JSON и XML) и данные семантических графов ( тройки RDF ); также имеется встроенная поисковая система. |
Microsoft SQL Server 2017 | RC1 | Запатентованный | SQL /T-SQL, R , Python | Предлагает возможности графовой базы данных для моделирования отношений «многие ко многим». Графовые отношения интегрированы в Transact-SQL и используют SQL Server в качестве базовой системы управления базами данных. [31] | |
NebulaGraph | 3.7.0 | 2024-03 | Версия с открытым исходным кодом находится под Apache 2.0, Common Clause 1.0 | C++ , Go , Java , Python | Масштабируемая распределенная графовая база данных с открытым исходным кодом для хранения и обработки миллиардов вершин и триллионов ребер с задержкой в миллисекунды. Она разработана на основе распределенной архитектуры без общего доступа для линейной масштабируемости. [32] |
Neo4j | 5.25.1 | 2024-10-31 [33] | GPLv3 Community Edition, коммерческие и AGPLv3- опции для корпоративных и расширенных версий | Java , .NET , JavaScript , Python , Go , Ruby , PHP , R , Erlang / Elixir , C / C++ , Clojure , Perl , Haskell | Открытый исходный код, поддержка ACID, кластеризация высокой доступности для корпоративных развертываний, а также веб-администрирование, включающее полную поддержку транзакций и визуальный проводник по графу узлов и связей; доступно из большинства языков программирования с использованием встроенного веб-интерфейса API REST и фирменного протокола Bolt с официальными драйверами. |
Онтотекст GraphDB | 10.7.3 | 2024-08-19 [34] | Проприетарная , стандартная и корпоративная версии являются коммерческими , бесплатная версия является бесплатным программным обеспечением. | Ява | Высокоэффективная и надежная семантическая графовая база данных с поддержкой RDF и SPARQL, также доступная в виде кластера высокой доступности. Интегрирует OpenRefine для приема и согласования табличных данных и on-top для доступа к данным на основе онтологий. Подключается к Lucene , SOLR и Elasticsearch для полнотекстового и фасетного поиска , а также к Kafka для обработки событий и потоков. Поддерживает OGC GeoSPARQL . Предоставляет доступ JDBC к графам знаний . |
OpenLink Виртуоз | 8.2 | 2018-10 | Open Source Edition — GPLv2 , Enterprise Edition — частная собственность. | С , С++ | Многомодельная (гибридная) система управления реляционными базами данных (RDBMS), которая поддерживает как SQL, так и SPARQL для декларативных (определение данных и манипулирование данными) операций с данными, смоделированными как таблицы SQL и/или графики RDF. Также поддерживает индексацию RDF-Turtle, RDF-N-Triples, RDF-XML, JSON-LD, а также отображение и генерацию отношений (таблицы SQL или графики RDF) из многочисленных типов документов, включая CSV, XML и JSON. Может быть развернута как локальный или встроенный экземпляр (как используется в NEPOMUK Semantic Desktop), сетевой сервер с одним экземпляром или сетевой сервер с несколькими экземплярами эластичного кластера без общего доступа [35] |
Oracle RDF Graph; часть Oracle Database | 21с | 2020 | Запатентованный | SPARQL , SQL | Возможности RDF Graph как функции в многомодельной базе данных Oracle: RDF Graph: комплексное управление графами W3C RDF в базе данных Oracle с собственными рассуждениями и трехуровневой безопасностью меток. ACID, высокая доступность, масштаб предприятия. Включает визуализацию, RDF4J и собственную конечную точку Sparql. |
Oracle Property Graph; часть базы данных Oracle | 21с | 2020 | Запатентованная; Спецификация языка с открытым исходным кодом | PGQL , Java, Python | Граф свойств; состоящий из набора объектов или вершин и набора стрелок или ребер, соединяющих объекты. Вершины и ребра могут иметь несколько свойств, которые представлены в виде пар ключ-значение. Включает PGQL, SQL -подобный язык запросов графа и аналитический движок в памяти (PGX) около 60 готовых параллельных алгоритмов графа. Включает REST API и визуализацию графа. |
ОриентДБ | 3.2.28 | 2024-02 | Community Edition — Apache 2 , Enterprise Edition — коммерческая версия | Ява | Второе поколение [ требуется пояснение ] распределенной графовой базы данных с гибкостью документов в одном продукте (т. е. это и графовая база данных, и документная база данных NoSQL); лицензирована по лицензии Apache 2 с открытым исходным кодом; имеет полную поддержку ACID ; имеет репликацию с несколькими мастерами; поддерживает режимы без схемы, полный и смешанный; имеет профилирование безопасности на основе пользователя и ролей; поддерживает язык запросов, аналогичный SQL . Имеет HTTP REST и JSON API . |
РедисГраф | 2.0.20 | 2020-09 | Исходный код Redis Доступная лицензия | С | База данных Property Graph, находящаяся в оперативной памяти и допускающая запросы, которая использует разреженные матрицы для представления матрицы смежности в графах и линейную алгебру для запросов к графу. [36] |
SAP-ХАНА | 2.0 СПС 05 | 2020-06 [37] | Запатентованный | C , C++ , Java , JavaScript и SQL -подобный язык | График свойств, поддерживаемый транзакцией ACID в памяти [38] |
Спаркзее | 5.2.0 | 2015 | Запатентованное , коммерческое , бесплатное программное обеспечение для оценки, исследования, разработки | С++ | Высокопроизводительная масштабируемая система управления базами данных от Sparsity Technologies; главной особенностью является производительность запросов для извлечения и исследования больших сетей; имеет привязки для Java , C++, C# , Python и Objective-C ; версия 5 является первой графовой мобильной базой данных . |
Sqrrl Предприятие | 2.0 | 2015-02 | Запатентованный | Ява | Распределенная база данных графов в реальном времени, обеспечивающая безопасность на уровне ячеек и массовую масштабируемость [39] |
Терадата Астер | 7 | 2016 | Запатентованный | Java , SQL , Python , C++ , R | База данных с массивной параллельной обработкой (MPP), включающая запатентованные механизмы, поддерживающие собственный SQL, MapReduce и хранение и обработку графических данных; предоставляет набор аналитических библиотек функций и визуализацию данных [40] |
ТерминусДБ | 11.0.6 | 2023-05-03 [41] | Апач 2 | Пролог , Rust , Python , JSON-LD | Граф знаний, ориентированный на документы: мощь корпоративного графа знаний в сочетании с простотой документов. |
TigerGraph | 3.10.1 | 2024-05-07 [42] | Запатентованный | С++ | Массовая параллельная обработка (MPP) собственной графовой системы управления базами данных [43] |
ТипDB | 2.14.0 | 2022-11 [44] | Бесплатно, GNU AGPLv3 , Проприетарно | Ява , Питон , JavaScript | TypeDB — это строго типизированная база данных с богатой и логической системой типов . TypeDB позволяет вам решать сложные проблемы, а TypeQL — это язык запросов. TypeDB позволяет вам моделировать вашу область на основе логических и объектно-ориентированных принципов. Состоящая из типов сущностей, отношений и атрибутов , а также иерархий типов, ролей и правил, TypeDB позволяет вам мыслить на более высоком уровне, в отличие от таблиц соединений, столбцов, документов, вершин, ребер и свойств. [ продвижение? ] |
сетевые модели [...] не имеют хорошего уровня абстракции: сложно отделить модель базы данных от фактической реализации
сетевые модели [...] не имеют хорошего уровня абстракции: сложно отделить модель базы данных от фактической реализации
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )