База данных графов
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
База данных графов ( GDB ) — это база данных , которая использует структуры графов для семантических запросов с узлами , ребрами и свойствами для представления и хранения данных. [1] Ключевым понятием системы является граф (или ребро, или взаимосвязь). Граф связывает элементы данных в хранилище с набором узлов и ребер, причем ребра представляют отношения между узлами. Отношения позволяют напрямую связывать данные в хранилище и во многих случаях получать их с помощью одной операции. В графовых базах данных отношения между данными являются приоритетом. Запрос отношений выполняется быстро, поскольку они постоянно хранятся в базе данных. Отношения можно интуитивно визуализировать с помощью графовых баз данных, что делает их полезными для сильно взаимосвязанных данных. [2]
Базы данных графов обычно называют базой данных NoSQL . Базы данных графов похожи на базы данных сетевых моделей 1970-х годов тем, что обе представляют общие графы, но базы данных сетевых моделей работают на более низком уровне абстракции. [3] и им не хватает простого обхода по цепочке ребер. [4]
Базовый механизм хранения графовых баз данных может различаться. Отношения являются первоклассными элементами графовой базы данных и могут быть помечены, направлены и им присвоены свойства. Некоторые зависят от реляционного механизма и хранят данные графа в таблице (хотя таблица является логическим элементом, поэтому этот подход накладывает определенный уровень абстракции между системой управления базой данных графа и физическими устройствами хранения). Другие используют для хранения хранилище «ключ-значение» или документо-ориентированную базу данных , что делает их по своей сути структурами NoSQL.
По состоянию на 2021 год [update], ни один язык графовых запросов не получил повсеместного распространения так же, как SQL для реляционных баз данных, и существует большое разнообразие систем, многие из которых тесно привязаны к одному продукту. Некоторые ранние усилия по стандартизации привели к созданию языков запросов от разных производителей, таких как Gremlin , SPARQL и Cypher . В сентябре 2019 года предложение о проекте по созданию нового стандартного языка графовых запросов (ISO/IEC 39075 Информационные технологии — Языки баз данных — GQL) было одобрено членами Объединенного технического комитета 1 ISO/IEC (ISO/IEC JTC 1). GQL задуман как декларативный язык запросов к базе данных, такой как SQL. Помимо интерфейсов языка запросов, доступ к некоторым графовым базам данных осуществляется через интерфейсы прикладного программирования (API).
Базы данных графов отличаются от вычислительных механизмов графов. Базы данных графов — это технологии, которые представляют собой переводы баз данных реляционной онлайн-обработки транзакций (OLTP). С другой стороны, графовые вычислительные машины используются в онлайн-аналитической обработке (OLAP) для массового анализа. [5] Базы данных на графах привлекли значительное внимание в 2000-х годах из-за успехов крупных технологических корпораций в использовании собственных графовых баз данных. [6] наряду с введением графовых баз данных с открытым исходным кодом .
Одно исследование пришло к выводу, что СУБД «сопоставима» по производительности с существующими механизмами анализа графов при выполнении запросов к графам. [7]
История
[ редактировать ]В середине 1960-х годов навигационные базы данных , такие как IBM, от IMS поддерживали древовидные структуры в своей иерархической модели , но строгую древовидную структуру можно было обойти с помощью виртуальных записей. [8] [9]
Структуры графов могли быть представлены в базах данных сетевых моделей конца 1960-х годов. CODASYL , который определил COBOL в 1959 году, определил язык сетевых баз данных в 1969 году.
Размеченные графы могли быть представлены в графовых базах данных середины 1980-х годов, таких как логическая модель данных. [10] [11]
Базы данных коммерческих объектов (ODBMS) появились в начале 1990-х годов. В 2000 году группа управления объектными данными опубликовала стандартный язык для определения структур объектов и отношений (графов) в своей публикации ODMG'93.
Несколько усовершенствований графовых баз данных появились в начале 1990-х годов, а в конце 1990-х их темпы ускорились благодаря попыткам индексировать веб-страницы.
В середине-конце 2000-х годов стали доступны коммерческие графовые базы данных с гарантиями ACID , такие как Neo4j и Oracle Spatial and Graph .
В 2010-х годах стали доступны коммерческие графовые базы данных ACID, которые можно было масштабировать по горизонтали . Кроме того, SAP HANA привнесла в графические базы данных технологии обработки данных в памяти и столбцы . [12] Также в 2010-х годах стали доступны многомодельные базы данных , поддерживающие графовые модели (и другие модели, такие как реляционная база данных или документ-ориентированная база данных ), такие как OrientDB , ArangoDB и MarkLogic (начиная с версии 7.0). За это время графовые базы данных различных типов стали особенно популярны при анализе социальных сетей с появлением компаний, занимающихся социальными сетями. Также в течение десятилетия стали доступны облачные графовые базы данных, такие как Amazon Neptune и Neo4j AuraDB .
Фон
[ редактировать ]Базы данных графов отображают данные так, как они рассматриваются концептуально. Это достигается путем передачи данных в узлы и их связей в ребра.
База данных графов — это база данных, основанная на теории графов . Он состоит из набора объектов, которые могут быть узлом или ребром.
- Узлы представляют собой сущности или экземпляры, такие как люди, предприятия, счета или любые другие элементы, которые необходимо отслеживать. Они примерно эквивалентны записи, отношению или строке в реляционной базе данных или документу в базе данных хранилища документов.
- Ребра , также называемые графами или отношениями , представляют собой линии, соединяющие узлы с другими узлами; представляющие отношения между ними. Значимые закономерности возникают при изучении соединений и взаимосвязей узлов, свойств и ребер. Края могут быть как направленными, так и ненаправленными. В неориентированном графе ребро, соединяющее два узла, имеет одно значение. В ориентированном графе ребра, соединяющие два разных узла, имеют разное значение в зависимости от их направления. Края — это ключевое понятие в графовых базах данных, представляющее абстракцию, которая не реализована напрямую в реляционной модели или модели хранилища документов .
- Свойства — это информация, связанная с узлами. Например, если бы Arc.Ask3.Ru была одним из узлов, она могла бы быть привязана к таким свойствам, как веб-сайт , справочный материал или слова, начинающиеся с буквы w , в зависимости от того, какие аспекты Википедии имеют отношение к данной базе данных.
Графовые модели
[ редактировать ]Граф помеченных свойств
[ редактировать ]Модель графа с помеченными свойствами представлена набором узлов, связей, свойств и меток. Оба узла данных и их связи имеют имена и могут хранить свойства, представленные парами ключ-значение . Узлы могут быть помечены для группировки. Ребра, представляющие отношения, обладают двумя качествами: они всегда имеют начальный и конечный узлы и направлены; [13] сделать граф ориентированным . Отношения также могут иметь свойства. Это полезно для предоставления дополнительных метаданных и семантики связям узлов. [14] Прямое хранение отношений позволяет осуществлять за постоянное время обход . [15]
Структура описания ресурсов (RDF)
[ редактировать ]В графовой модели RDF каждое добавление информации представлено отдельным узлом. Например, представьте себе сценарий, в котором пользователю необходимо добавить свойство имени для человека, представленного в виде отдельного узла на графе. В модели графа с помеченными свойствами это можно сделать путем добавления свойства имени в узел человека. Однако в RDF пользователю необходимо добавить отдельный узел с именем hasName
соединяя его с исходным узлом человека. В частности, графовая модель RDF состоит из узлов и дуг. Нотация графа RDF или оператор представлены: узлом для субъекта, узлом для объекта и дугой для предиката. Узел можно оставить пустым, использовать литерал и/или указать URI . Дугу также можно идентифицировать по URI. Литерал узла может быть двух типов: простой (нетипизированный) и типизированный. Простой литерал имеет лексическую форму и, при необходимости, языковой тег. Типизированный литерал состоит из строки с URI, идентифицирующим определенный тип данных. Пустой узел можно использовать для точной иллюстрации состояния данных, когда данные не имеют URI . [16]
Характеристики
[ редактировать ]Базы данных графов — мощный инструмент для графоподобных запросов. Например, вычисление кратчайшего пути между двумя узлами графа. Другие графоподобные запросы могут выполняться к базе данных графов естественным способом (например, вычисление диаметра графа или обнаружение сообщества).
Графики являются гибкими, что означает, что они позволяют пользователю вставлять новые данные в существующий график без потери функциональности приложения. Разработчику базы данных нет необходимости подробно планировать будущие варианты использования базы данных.
Хранилище
[ редактировать ]Базовый механизм хранения графовых баз данных может различаться. Некоторые зависят от реляционного механизма и «хранят» данные графа в таблице (хотя таблица является логическим элементом, поэтому этот подход накладывает другой уровень абстракции между базой данных графов, системой управления базой данных графов и физическими устройствами, на которых хранятся данные). действительно хранится). Другие используют для хранения хранилище «ключ-значение» или документо-ориентированную базу данных , что делает их по своей сути NoSQL структурами . Узел будет представлен как любое другое хранилище документов, но ребра, связывающие два разных узла, содержат внутри документа специальные атрибуты; атрибуты _from и _to.
Смежность без индекса
[ редактировать ]Производительность поиска данных зависит от скорости доступа от одного конкретного узла к другому. Поскольку смежность без индекса требует, чтобы узлы имели прямые физические адреса RAM и физически указывали на другие соседние узлы, это приводит к быстрому извлечению. Собственная графовая система со смежностью без индексов не должна проходить через какие-либо другие типы структур данных, чтобы найти связи между узлами. Непосредственно связанные узлы в графе сохраняются в кеше после извлечения одного из узлов, что делает поиск данных даже быстрее, чем при первом получении пользователем узла. Однако такое преимущество обходится дорого. Смежность без индексов снижает эффективность запросов, которые не используют обход графа . Собственные графовые базы данных используют смежность без индексов для обработки операций CRUD с хранимыми данными.
Приложения
[ редактировать ]Распознано несколько категорий графиков по типу данных. Gartner предлагает пять основных категорий графиков: [17]
- Социальный граф : речь идет о связях между людьми; примеры включают Facebook , Twitter и идею шести степеней разделения.
- График намерений: касается рассуждений и мотивации.
- График потребления: также известный как «график платежей», график потребления широко используется в розничной торговле. Компании электронной коммерции, такие как Amazon, eBay и Walmart, используют графики потребления для отслеживания потребления отдельных клиентов.
- График интересов : отображает интересы человека и часто дополняется социальным графиком. У него есть потенциал следовать предыдущей революции в веб-организации, отображая Интернет по интересам, а не индексируя веб-страницы.
- Мобильный график: строится на основе мобильных данных. Мобильные данные в будущем могут включать данные из Интернета, приложений, цифровых кошельков, GPS и устройств Интернета вещей (IoT).
Сравнение с реляционными базами данных
[ редактировать ]Со времени публикации Эдгара Ф. Кодда в 1970 году статьи о реляционной модели , [18] реляционные базы данных стали де-факто отраслевым стандартом для крупномасштабных систем хранения данных. Реляционные модели требуют строгой схемы и нормализации данных , которая разделяет данные на множество таблиц и удаляет любые повторяющиеся данные в базе данных. Данные нормализуются для сохранения согласованности данных и поддержки транзакций ACID . Однако это накладывает ограничения на то, как можно запрашивать отношения.
Одним из мотивов разработки реляционной модели было достижение быстрого доступа к строкам. [18] Проблемы возникают, когда возникает необходимость формирования сложных связей между хранимыми данными. Хотя отношения можно анализировать с помощью реляционной модели, требуются сложные запросы, выполняющие множество операций соединения с множеством различных атрибутов в нескольких таблицах. При работе с реляционными моделями внешнего ключа при извлечении связей также следует учитывать ограничения , что приводит к дополнительным накладным расходам.
По сравнению с реляционными базами данных графовые базы данных часто работают быстрее для ассоциативных наборов данных. [ нужна ссылка ] и более непосредственно сопоставляться со структурой объектно-ориентированных приложений. Они могут масштабироваться более естественно [ нужна ссылка ] к большим наборам данных, поскольку они обычно не требуют операций соединения , которые часто могут быть дорогостоящими. Поскольку они меньше зависят от жесткой схемы, они позиционируются как более подходящие для управления специальными и изменяющимися данными с помощью развивающихся схем.
И наоборот, системы управления реляционными базами данных обычно быстрее выполняют одну и ту же операцию с большим количеством элементов данных, позволяя манипулировать данными в их естественной структуре. Несмотря на преимущества графовых баз данных и недавнюю популярность по сравнению с [ нужна ссылка ] реляционных баз данных рекомендуется, чтобы сама графовая модель не была единственной причиной замены существующей реляционной базы данных. База данных на графе может стать актуальной, если будут доказательства повышения производительности на порядки и снижения задержки. [19]
Примеры
[ редактировать ]Реляционная модель собирает данные вместе, используя информацию, содержащуюся в данных. Например, можно искать всех «пользователей», номер телефона которых содержит код города «311». Это можно сделать путем поиска в выбранных хранилищах данных или таблицах и поиска в выбранных полях номеров телефонов строки «311». В больших таблицах этот процесс может занять много времени, поэтому реляционные базы данных предлагают индексы , которые позволяют хранить данные в меньшей подтаблице, содержащей только выбранные данные и уникальный ключ (или первичный ключ) записи. Если номера телефонов проиндексированы, тот же поиск будет происходить в меньшей индексной таблице, собрав ключи совпадающих записей, а затем просматривая в основной таблице данных записи с этими ключами. Обычно таблица хранится таким образом, чтобы поиск по ключу был очень быстрым. [20]
не Реляционные базы данных по своей сути содержат идеи фиксированных связей между записями. Вместо этого связанные данные связываются друг с другом путем сохранения уникального ключа одной записи в данных другой записи. Например, таблица, содержащая адреса электронной почты пользователей, может содержать элемент данных с именем userpk
, который содержит первичный ключ пользовательской записи, с которой он связан. Чтобы связать пользователей и их адреса электронной почты, система сначала ищет первичные ключи выбранных записей пользователей, затем ищет эти ключи в userpk
столбец в таблице электронной почты (или, что более вероятно, их индекс), извлекает данные электронной почты, а затем связывает записи пользователя и электронной почты, чтобы создать составные записи, содержащие все выбранные данные. Эта операция, называемая соединением , может быть дорогостоящей в вычислительном отношении. В зависимости от сложности запроса, количества объединений и индексации различных ключей системе, возможно, придется выполнить поиск по нескольким таблицам и индексам, а затем отсортировать их все для сопоставления. [20]
Напротив, графовые базы данных напрямую хранят связи между записями. Вместо того, чтобы найти адрес электронной почты путем поиска ключа пользователя в userpk
столбец, запись пользователя содержит указатель, который напрямую ссылается на запись адреса электронной почты. То есть, выбрав пользователя, указатель можно перейти непосредственно к записям электронной почты, нет необходимости искать в таблице электронной почты совпадающие записи. Это может исключить дорогостоящие операции соединения. Например, если искать все адреса электронной почты пользователей с кодом города «311», система сначала выполнит обычный поиск, чтобы найти пользователей с кодом «311», а затем получит адреса электронной почты, перейдя по ссылкам, найденным в эти записи. Реляционная база данных сначала найдет всех пользователей в «311», извлечет список первичных ключей, выполнит еще один поиск любых записей в таблице электронной почты с этими первичными ключами и свяжет совпадающие записи вместе. Для этих типов распространенных операций графовые базы данных теоретически будут работать быстрее. [20]
Истинная ценность графового подхода становится очевидной, когда выполняется поиск глубиной более одного уровня. Например, рассмотрим поиск пользователей, у которых есть «подписчики» (таблица, связывающая пользователей с другими пользователями) в коде города «311». В этом случае реляционная база данных должна сначала выполнить поиск всех пользователей с кодом города «311», затем выполнить поиск любого из этих пользователей в таблице подписчиков и, наконец, выполнить поиск в таблице пользователей, чтобы получить подходящих пользователей. Напротив, графовая база данных будет искать всех пользователей в «311», а затем переходить по обратным ссылкам через отношения подписчиков, чтобы найти пользователей-подписчиков. Это позволяет избежать нескольких поисков, просмотров и использования памяти, связанной с хранением всех временных данных из нескольких записей, необходимых для построения выходных данных. В терминах большой записи O этот запрос будет выглядеть так: время – т.е. пропорционально логарифму размера данных. Напротив, реляционная версия будет состоять из нескольких поиск плюс время, необходимое для объединения всех записей данных. [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 = 'Jack';
Тот же запрос можно перевести в --
- Cypher — графовый язык запросов к базе данных.
MATCH (p1:person {name: 'Jack'})-[:FRIEND_WITH]-(p2:person) RETURN p2.name
- SPARQL к базе данных графов RDF, , язык запросов стандартизированный W3C и используемый в нескольких RDF Triple и Quad. хранилищах
- Полная форма
PREFIX 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 . }
- Краткая форма
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?s foaf:name "Jack" ; foaf:knows ?o . ?o foaf:name ?name . }
- Полная форма
- SPASQL, гибридный язык запросов к базе данных, расширяющий SQL с помощью SPARQL.
SELECT people.name FROM ( SPARQL PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?s foaf:name "Jack" ; foaf:knows ?o . ?o foaf:name ?name . } ) AS people ;
Приведенные выше примеры являются простой иллюстрацией базового запроса на взаимосвязь. Они конденсируют идею сложности запросов реляционных моделей, которая увеличивается с увеличением общего объема данных. Для сравнения, запрос к базе данных графов позволяет легко отсортировать граф отношений и представить результаты.
Есть также результаты, которые указывают на то, что простые, сжатые и декларативные запросы к графовым базам данных не обязательно обеспечивают хорошую производительность по сравнению с реляционными базами данных. В то время как графовые базы данных предлагают интуитивное представление данных, реляционные базы данных дают лучшие результаты, когда необходимы операции над множествами. [15]
Список графовых баз данных
[ редактировать ]Ниже приводится список известных графовых баз данных:
имя | текущий версия |
последний выпускать дата (ГГГГ-ММ-ДД) |
программное обеспечение лицензия |
язык программирования | описание |
---|---|---|---|---|---|
Аэроспайк | 7.0 | 2023-11-15 | Собственный | С | Aerospike Graph — это хорошо масштабируемая база данных графов свойств с малой задержкой, построенная на проверенной платформе данных Aerospike в режиме реального времени. Aerospike Graph сочетает в себе корпоративные возможности базы данных Aerospike — наиболее масштабируемой базы данных NoSQL, работающей в режиме реального времени, — с моделью данных графа свойств с помощью графического вычислительного механизма Apache Tinkerpop. Разработчики получат встроенную поддержку языка запросов Gremlin, которая позволит им напрямую писать мощные бизнес-процессы. |
АллегроГраф | 7.0.0 | 2020-04 | Собственная лицензия , клиенты: Eclipse Public License v1. | C# , C , Common Lisp , Java , Python | Структура описания ресурсов (RDF) и база данных графов. |
Амазонка Нептун |
1.3.2.1 | 2024-06-20 [22] | Собственный | Не разглашается | Amazon Neptune — это полностью управляемая графовая база данных от Amazon.com . Он используется как веб-сервис и является частью Amazon Web Services . Поддерживает популярные графовые модели, граф свойств и , W3C RDF а также соответствующие им языки запросов Apache TinkerPop, Gremlin , SPARQL и openCypher . |
АнзоГраф БД | 2.1 | 2020-02 | Собственный | С , С++ | AnzoGraph DB — это ) с массовым параллелизмом база данных в стиле Graph Online Analytics Processing ( GOLAP , созданная для поддержки SPARQL и языка запросов Cypher для анализа триллионов взаимосвязей. База данных AnzoGraph предназначена для интерактивного анализа больших наборов данных семантической тройки , но также поддерживает помеченные свойства в соответствии с предлагаемыми стандартами W3C . [23] [24] [25] [26] |
АрангоДБ | 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 Космос БД | 2017 | Собственный | Не разглашается | Мультимодальная база данных, поддерживающая концепции графов с использованием Apache Gremlin. языка запросов | |
Датастакс Предприятие График |
v6.0.1 | 2018-06 | Собственный | Ява | Распределенная масштабируемая база данных реального времени; поддерживает Tinkerpop и интегрируется с Cassandra. [27] |
бесконечный график | 2021.2 | 2021-05 | Собственная , коммерческая, бесплатная версия объемом 50 ГБ. | Java , C++ , язык запросов DO | Распределенная, облачная и масштабируемая графовая база данных для сложных запросов и операций в реальном времени. Его объекты Vertex и Edge имеют уникальные 64-битные идентификаторы объектов, которые значительно ускоряют операции навигации по графу и поиска пути. Он поддерживает пакетные или потоковые обновления графика наряду с одновременными параллельными запросами. Язык запросов DO в InfiniteGraph позволяет выполнять как запросы на основе значений, так и сложные графические запросы. InfiniteGraph выходит за рамки графовых баз данных и поддерживает сложные объектные запросы. |
ЯнусГраф | 1.0.0 | 2023-10-21 [28] | Апач 2 | Ява | Открытый исходный код, масштабируемый, распределенный по графовой базе данных кластера с несколькими компьютерами в рамках The 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] |
МаркЛогик | 8.0.4 | 2015 | Собственная . бесплатная версия для разработчиков | Ява | Многомодельная база данных NoSQL , в которой хранятся документы (JSON и XML) и данные семантических графов ( тройки RDF ); также имеет встроенную поисковую систему. |
Microsoft SQL-сервер 2017 | RC1 | Собственный | SQL /T-SQL, R , Python | Предлагает возможности графовой базы данных для моделирования отношений «многие ко многим». Отношения графов интегрированы в Transact-SQL и используют SQL Server в качестве основной системы управления базами данных. [31] | |
ТуманностьГраф | 3.7.0 | 2024-03 | Версия с открытым исходным кодом находится под управлением Apache 2.0, Common Article 1.0. | C++ , Go , Java , Python | Масштабируемая база данных распределенных графов с открытым исходным кодом для хранения и обработки миллиардов вершин и триллионов ребер с задержкой в миллисекунды. Он разработан на основе распределенной архитектуры без общего доступа и обеспечивает линейную масштабируемость. [32] |
Neo4j | 5.22.0 | 2024-07-25 [33] | GPLv3 Community Edition, коммерческие варианты и варианты AGPLv3 для корпоративных и расширенных выпусков | Java , .NET , JavaScript , Python , Go , Ruby , PHP , R , Erlang / Elixir , C / C++ , Clojure , Perl , Haskell | Открытый исходный код, поддержка ACID, кластеризация высокой доступности для корпоративных развертываний, а также веб-администрирование, включающее полную поддержку транзакций и визуальный обозреватель графов связей между узлами; доступен из большинства языков программирования с помощью встроенного интерфейса REST веб- API и собственного протокола Bolt с официальными драйверами. |
Онтотекст GraphDB | 10.7.1 | 2024-07-22 [34] | Проприетарные версии , версии Standard и Enterprise являются коммерческими , бесплатная версия — бесплатной. | Ява | Высокоэффективная и надежная база данных семантических графов с поддержкой RDF и SPARQL, также доступная в виде кластера высокой доступности. Интегрирует OpenRefine для приема и согласования табличных данных и поверх него для доступа к данным на основе онтологий . Подключается к Lucene , SOLR и Elasticsearch для полнотекстового и фасетного поиска , а также к Kafka для обработки событий и потоков. Поддерживает OGC GeoSPARQL . Обеспечивает доступ JDBC к Knowledge Graphs . |
ОпенЛинк Виртуоз |
8.2 | 2018-10 | Версия с открытым исходным кодом — GPLv2 , версия Enterprise — частная. | С , С++ | Многомодельная (гибридная) система управления реляционными базами данных (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-график; часть базы данных Oracle | 21в | 2020 | Собственный | СПАРКЛ , SQL | Возможности RDF Graph как функции в многомодельной базе данных Oracle: RDF Graph: комплексное управление графами RDF W3C в базе данных Oracle с собственными логическими рассуждениями и трехуровневой защитой меток. ACID, высокая доступность, масштаб предприятия. Включает визуализацию, RDF4J и собственную конечную точку Sparql. |
График свойств Oracle; часть базы данных 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 . |
RedisGraph | 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 — это первая графическая мобильная база данных . |
Скррл Предприятие |
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 | Документоориентированный граф знаний; мощь графа корпоративных знаний и простота документов. |
ТигрГраф | 3.10.1 | 2024-05-07 [42] | Собственный | С++ | Собственная графовая система управления базой данных с массивной параллельной обработкой (MPP) [43] |
ТипБД | 2.14.0 | 2022-11 [44] | Бесплатная, GNU AGPLv3 , проприетарная | Java , Python , JavaScript | TypeDB — это строго типизированная база данных с богатой и логичной системой типов . TypeDB дает вам возможность решать сложные проблемы, а TypeQL — это язык запросов. TypeDB позволяет моделировать предметную область на основе логических и объектно-ориентированных принципов. TypeDB, состоящая из типов сущностей, связей и атрибутов , а также иерархий типов, ролей и правил, позволяет вам мыслить на более высоком уровне, в отличие от объединенных таблиц, столбцов, документов, вершин, ребер и свойств. [ повышение? ] |
Языки программирования графовых запросов
[ редактировать ]- AQL (язык запросов ArangoDB) : SQL-подобный язык запросов, используемый в ArangoDB как для документов, так и для графиков.
- Язык запросов Cypher запросов к графу (Cypher): декларативный язык для Neo4j , который обеспечивает специальный и программный (подобный SQL) доступ к графу. [45]
- GQL : предлагаемый стандартный язык запросов к графам ISO.
- GraphQL : язык запросов и манипулирования данными с открытым исходным кодом для API. Dgraph реализует модифицированный язык GraphQL под названием DQL (ранее GraphQL+-).
- Gremlin : язык графового программирования, который является частью проекта с открытым исходным кодом Apache TinkerPop. [46]
- SPARQL : язык запросов для баз данных RDF, который может извлекать и манипулировать данными, хранящимися в формате RDF.
- запросы обычного пути — теоретический язык для запросов к графовым базам данных.
См. также
[ редактировать ]- Преобразование графа
- Иерархическая модель базы данных
- Ученый-компьютерщик
- Вадалог
- База данных объектов
- База данных RDF
- Структурированное хранилище
- Текстовый график
- Wikidata — это дочерний проект Wikipedia, который хранит данные в графовой базе данных. Обычный просмотр веб-страниц позволяет просматривать узлы, отслеживать ребра и выполнять SPARQL . запросы
Ссылки
[ редактировать ]- ^ Бурбакис, Николаос Г. (1998). Искусственный интеллект и автоматизация . Всемирная научная. п. 381. ИСБН 9789810226374 . Проверено 20 апреля 2018 г.
- ^ Юн, Бён Ха; Ким, Сон Гю; Ким, Сон Ён (март 2017 г.). «Использование базы данных графов для интеграции гетерогенных биологических данных» . Геномика и информатика . 15 (1): 19–27. дои : 10.5808/GI.2017.15.1.19 . ISSN 1598-866X . ПМК 5389944 . ПМИД 28416946 .
- ^ Углы, Ренцо; Гутьеррес, Клаудио (1 февраля 2008 г.). «Обзор графовых моделей баз данных» (PDF) . Обзоры вычислительной техники ACM . 40 (1): 1–39. CiteSeerX 10.1.1.110.1072 . дои : 10.1145/1322432.1322433 . S2CID 207166126 . Архивировано из оригинала (PDF) 15 августа 2017 года . Проверено 28 мая 2016 г.
сетевым моделям [...] не хватает хорошего уровня абстракции: трудно отделить модель базы данных от фактической реализации
- ^ Зильбершац, Ави (28 января 2010 г.). Концепции системы баз данных, шестое издание (PDF) . МакГроу-Хилл. п. Д-29. ISBN 978-0-07-352332-3 .
- ^ Робинсон, Ян (10 июня 2015 г.). Базы данных графов: новые возможности для связанных данных . О'Рейли Медиа, Инк. с. 4. ISBN 9781491930861 .
- ^ «Графовые базы данных ворвались в мейнстрим» . www.kdnuggets.com . Проверено 23 октября 2018 г.
- ^ Фань, Цзин; Джеральд, Адальберт (25 декабря 2014 г.). Дело против специализированных механизмов графовой аналитики (PDF) . Конференция по исследованиям инновационных систем данных (CIDR).
- ^ Зильбершац, Ави (28 января 2010 г.). Концепции системы баз данных, шестое издание (PDF) . МакГроу-Хилл. п. Е-20. ISBN 978-0-07-352332-3 .
- ^ Паркер, Лоррейн. «Заметки IMS» . vcu.edu . Проверено 31 мая 2016 г.
- ^ Углы, Ренцо; Гутьеррес, Клаудио (1 февраля 2008 г.). «Обзор графовых моделей баз данных» (PDF) . Обзоры вычислительной техники ACM . 40 (1): 1–39. CiteSeerX 10.1.1.110.1072 . дои : 10.1145/1322432.1322433 . S2CID 207166126 . Архивировано из оригинала (PDF) 15 августа 2017 года . Проверено 28 мая 2016 г.
сетевым моделям [...] не хватает хорошего уровня абстракции: трудно отделить модель базы данных от фактической реализации
- ^ Купер, Габриэль М. (1985). Логическая модель данных: новый подход к логике базы данных (PDF) (доктор философии). Журнал STAN-CS-85-1069. Архивировано (PDF) из оригинала 30 июня 2016 г. Проверено 31 мая 2016 г.
- ^ «SAP объявляет о новых возможностях в облаке с помощью HANA» . 22 октября 2014 г. Проверено 7 июля 2016 г.
- ^ Фрисендал, Томас (22 сентября 2017 г.). «График свойств» . www.graphdatamodeling.com . Проверено 23 октября 2018 г.
- ^ Дас, С; Шринивасан, Дж; Перри, Мэтью; Чонг, Юджин; Банерджи, Джей (24 марта 2014 г.). «Повесть о двух графах: графы свойств в виде RDF в Oracle» .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Перейти обратно: а б Имейте, Кристиан Тейл; Йенсен, Ларс Юл (17 октября 2013 г.). «Готовы ли графовые базы данных для биоинформатики?» . Биоинформатика . 29 (24): 3107–3108. doi : 10.1093/биоинформатика/btt549 . ISSN 1460-2059 . ПМЦ 3842757 . ПМИД 24135261 .
- ^ «Структура описания ресурсов (RDF): концепции и абстрактный синтаксис» . www.w3.org . Проверено 24 октября 2018 г.
- ^ «Конкурентная динамика потребительской сети: пять графиков обеспечивают устойчивое преимущество» . www.gartner.com . Проверено 23 октября 2018 г.
- ^ Перейти обратно: а б Кодд, Э.Ф. (1 июня 1970 г.). «Реляционная модель данных для больших общих банков данных» . Коммуникации АКМ . 13 (6): 377–387. дои : 10.1145/362384.362685 . ISSN 0001-0782 . S2CID 207549016 .
- ^ «Графовые базы данных, 2-е издание» . О'Рейли | Сафари . Проверено 23 октября 2018 г.
- ^ Перейти обратно: а б с д «От реляционных к графовым базам данных» . Нео4дж .
- ^ Перейти обратно: а б «Примеры, в которых блестят базы данных Graph: версия Neo4j» , ZeroTurnaround
- ^ «Amazon Neptune Engine версии 1.3.2.1 (20 июня 2024 г.)» . Документы.AWS.Amazon.com . Веб-сервисы Amazon . Проверено 4 июля 2024 г.
- ^ «Находящаяся в памяти массивно-параллельная распределенная графовая база данных, специально созданная для аналитики» . CambridgeSemantics.com . Проверено 20 февраля 2018 г.
- ^ Рютер, Джон (15 февраля 2018 г.). «Cambridge Semantics объявляет о поддержке графовой аналитики AnzoGraph для Amazon Neptune и графовых баз данных» . BusinessWire.com . Проверено 20 февраля 2018 г.
- ^ Зейн, Барри (2 ноября 2016 г.). «Базы данных на семантических графах: достойный преемник реляционных баз данных» . DBTA.com . Тенденции и приложения баз данных . Проверено 20 февраля 2018 г.
- ^ «Cambridge Semantics объявляет о поддержке AnzoGraph для Amazon Neptune и графовых баз данных» . DBTA.com . Тенденции и приложения баз данных. 15 февраля 2018 г. Проверено 08 марта 2018 г.
- ^ Вуди, Алекс (21 июня 2016 г.). «За пределами Титана: эволюция новой графовой базы данных DataStax» . Datanami.com . Проверено 9 мая 2017 г.
- ^ "выпуск 1.0.0 · JanusGraph/janusgraph" . GitHub.com . 21 октября 2023 г.
- ^ «Бэкэнды хранилища JanusGraph» . docs.JanusGraph.org . Архивировано из оригинала 2 октября 2018 г. Проверено 1 октября 2018 г.
- ^ «Индексные хранилища JanusGraph» . docs.JanusGraph.org . Архивировано из оригинала 2 октября 2018 г. Проверено 1 октября 2018 г.
- ^ «Что нового в SQL Server 2017» . Документы.Microsoft.com . Корпорация Microsoft, 19 апреля 2017 г. Проверено 9 мая 2017 г.
- ^ «Дебют Nebula Graph для открытия в области анализа больших данных» . Datanami.com . 29 июня 2020 г. Проверено 2 декабря 2020 г.
- ^ «Примечания к выпуску: Neo4j 5» . Neo4j.com . Платформа графовой базы данных Neo4j . Проверено 25 июля 2024 г.
- ^ «Примечания к выпуску» . Онтотекст GraphDB . 22 июля 2024 г. Проверено 22 июля 2024 г.
- ^ «Схемы архитектуры развертывания кластеров для Virtuoso» . Виртуозо.OpenLinkSW.com . Программное обеспечение OpenLink . Проверено 9 мая 2017 г.
- ^ Юбэнк, Ки. «RedisGraph становится общедоступным» . Я-Программист.info .
- ^ «Что нового в SAP HANA 2.0 SPS 05» . блоги.SAP.com . 26 июня 2020 г. Проверено 26 июня 2020 г.
- ^ Рудольф, Майкл; Паради, Маркус; Борнхёвд, Кристоф; Ленер, Вольфганг. Графическая история базы данных SAP HANA (PDF) . Конспект лекций по информатике .
- ^ Ваниан, Джонатан (18 февраля 2015 г.). «Sqrrl, связанная с АНБ, присматривается к кибербезопасности и получает финансирование в размере 7 миллионов долларов» . Гигаом.com . Гигаом . Архивировано из оригинала 9 марта 2019 года . Проверено 9 мая 2017 г.
- ^ Вуди, Алекс (23 октября 2015 г.). «Искусство аналитики, или чему нас могут научить зеленоволосые» . Datanami.com . Проверено 9 мая 2017 г.
- ^ «Релизы GitHub» . Гитхаб . Проверено 03 июля 2023 г.
- ^ «Примечания к выпуску: TigerGraph: Документы » Документы.TigerGraph.com . ТайгерГраф Получено 4 июля.
- ^ «Forrester Wave™: платформы графовых данных, четвертый квартал 2020 г.» . AWS.Amazon.com . Веб-сервисы Amazon . 16 ноября 2020 г. Проверено 16 ноября 2020 г.
- ^ «Выпуск TypeDB 2.14.0 · vaicle/typedb» . Гитхаб . Проверено 25 ноября 2022 г.
- ^ Свенссон, Йохан (5 июля 2016 г.). «Гостевой просмотр: реляционные и графовые базы данных: какие использовать и когда?» . Сан-Диего Таймс . БЖ Медиа . Проверено 30 августа 2016 г.
- ^ ТинкерПоп, Апач. «Апач ТинкерПоп» . Апач ТинкерПоп . Проверено 2 ноября 2016 г.