
Самые популярные графовые СУБД для C#
Графовые базы данных, или Графические СУБД, становятся все более популярными.
Растущий объем данных, потребность в аналитике данных и семантика в реальном времени способствуют росту систем управления базами данных графов. Крупные корпорации, включая LinkedIn, Facebook, Microsoft, Twitter, Google, Oracle, SAP, активно используют графические базы данных в своих социальных сетях и аналитике данных.
Графовые базы данных разрабатываются на основе теории графов, где граф представляет собой набор узлов и ребер. Узел в модели данных графа представляет сущность. Ребра, соединяющие два узла, являются отношениями. Семантические данные могут быть прикреплены к узлам и ребрам, которые называются свойствами.
Графовые базы данных являются базами данных NoSQL и обеспечивают высокопроизводительный обход узлов и извлечение данных. Для запроса графовых баз данных не существует единого языка. Наиболее популярными языками запросов данных графа являются GraphQL, AQL, Gremlin, SPARQL и Cypher.
В следующей таблице перечислены основные графовые базы данных, основанные на DB-Engine.
Ранг
|
СУБД
|
Модель базы данных
|
1
|
Neo4j
|
график
|
2
|
Microsoft Azure Cosmos DB
|
Мульти модель
|
3
|
OrientDB
|
Мульти модель
|
4
|
ArangoDB
|
Мульти модель
|
5
|
виртуоз
|
Мульти модель
|
6
|
JanusGraph
|
график
|
7
|
Амазонка Нептун
|
Мульти модель
|
8
|
GraphDB
|
Мульти модель
|
9
|
Giraph
|
график
|
10
|
AllegroGraph
|
Мульти модель
|
11
|
Dgraph
|
график
|
12
|
TigerGraph
|
график
|
13
|
Стардог
|
Мульти модель
|
14
|
Sqrrl
|
Мульти модель
|
15
|
Blazegraph
|
Мульти модель
|
16
|
Графический движок
|
Мульти модель
|
17
|
InfiniteGraph
|
график
|
18
|
FaunaDB
|
Мульти модель
|
19
|
FlockDB
|
график
|
20
|
InfoGrid
|
график
|
1. Neo4j
Neo4js - самая популярная графовая база данных. Neo4j является базой данных графов с открытым исходным кодом и следует модели помеченных графов свойств. Ключевыми элементами базы данных Neo4j являются узлы, отношения, свойства и метки.
- Узлы - это основные элементы данных, т. Е. Узел Person или узел Car. Узлы связаны с другими узлами через отношения. Узлы могут иметь одно или несколько свойств (т. Е. Атрибуты хранятся в виде пар ключ / значение). Узлы имеют одну или несколько меток, которые описывают его роль в графе.
- Отношения соединяют два узла. Отношения являются направленными. Узлы могут иметь несколько, даже рекурсивных отношений. Отношения могут иметь одно или несколько свойств (т. Е. Атрибуты хранятся в виде пар ключ / значение).
- Свойства - это именованные значения, где имя (или ключ) является строкой. Свойства могут быть проиндексированы и ограничены. Составные индексы могут быть созданы из нескольких свойств.
- Метки используются для группировки узлов в наборы. Узел может иметь несколько меток. Метки индексируются для ускорения поиска узлов на графике. Индексы собственных меток оптимизированы по скорости.
Neo4j поддерживается в операционных системах Linux, OS X, Solaris и Windows. Поддерживаемые языки программирования: .Net, Clojure, Elixir, Go, Groovy, Haskell, Java, JavaScript, Perl, PHP, Python, Ruby и Scala.
2. Microsoft Azure CosmosDB
Microsoft Azure CosmosDB - это NoSQL, глобально распределенная, горизонтально масштабируемая, многомодельная служба баз данных, поддерживающая модели хранения документов, СУБД графиков, хранилищ ключей и хранилищ столбцов.
Microsoft Azure CosmosDB размещается в облаке Azure. Azure CosmosDB поддерживает многомодельные API на разных языках, включая Java, .NET, Nodejs, Python, Germlin, Go и Xamarin.
3. OrientDB
OrientDB - это база данных, предназначенная для современного мира. Это многомодельная база данных. Это самая быстрая графовая база данных.
OrientDB - это первая мультимодельная система управления базами данных NoSQL с открытым исходным кодом, которая объединяет мощь графов с документами, ключами / значениями, реактивными, объектно-ориентированными и геопространственными моделями в единую масштабируемую, высокопроизводительную операционную базу данных.
Ключевые особенности OrientDB:
- OrientDB работает молниеносно и может хранить до 120 000 записей каждую секунду. Он просматривает части или целые деревья и графики записей в миллисекундах. Скорость не зависит от размера базы данных; большие наборы данных легко размещаются.
- OrientedDB гибко поддерживает базу данных графов, базу данных документов, объектно-ориентированную базу данных и реактивную модель с такими ключевыми функциями, как полная схема, без схемы, сочетание схем, шифрование базы данных, безопасность на уровне записей, поддержка SQL, язык TinkerPop Gremlin. Транзакции ACID, обход отношений, пользовательские типы данных, встроенные документы и многое другое.
- OrientDB написан на Java и поддерживает основные языки программирования, поддерживаемые OrientDB: .Net, C, C #, C ++, Clojure, Java, JavaScript, Node.js, PHP, Python, Ruby и Scala.
- Сообщество OrientDB бесплатно для коммерческого использования. Поставляется с лицензией Apache 2 Open Source. OrientDB устраняет необходимость использования нескольких продуктов и нескольких лицензий для управления вашими данными
- OrientDB - проект с открытым исходным кодом.
4. ArangoDB
ArangoDB, разработанная ArangoDB GmbH, является мультимодельной системой управления базами данных NoSQL, которая поддерживает графики, документы и модели данных ключ / значение. ArangoDB имеет свой собственный SQL-подобный язык запросов ArangoDB (AQL) для доступа к данным и манипулирования ими. ArangoDB также поддерживает GraphQL. ArangoDB Community Edition является бесплатной и распространяется по лицензии с открытым исходным кодом (Apache 2).
Ключевые особенности ArangoDB:
- Родная
мультимодель Родная мультимодельная база данных с нуля, поддерживающая модели ключ / значение, документы и графики. Вы можете моделировать свои данные очень гибким способом. - Самовосстанавливающийся кластер
ArangoDB может работать как распределенный и хорошо масштабируемый кластер базы данных. Он работает в Kubernetes и DC / OS, включая постоянные примитивы и простую настройку кластера. - ArangoSearc
Встроенная кроссплатформенная система индексирования, поиска текста и ранжирования для поиска информации, оптимизированная по скорости и памяти. - Язык запросов ArangoDB
AQL предоставляет мощный способ доступа и объединения всех стратегий доступа к данным в ArangoDB. - Полная поддержка GeoJSON
Обогатите свой график, документ или поисковые запросы гео-локационными аспектами. - Производительность
Высокая производительность.
5. Виртуоз
Virtuoso Universal Server - это безопасный, кроссплатформенный и высокопроизводительный сервер данных, который уникальным образом обеспечивает доступ к данным, интеграцию данных, мультимодальное управление данными и услуги развертывания приложений HTTP. Virtuoso является мультимодельной СУБД и поддерживает графические СУБД, СУБД Native XML, реляционные СУБД и модели хранения RDF.
Virtuoso, первоначально запущенная в 1998 году OpenLink Software, написана на языке C и представляет собой базу данных с открытым исходным кодом и поддерживает .NET, C, C #, C ++, Java, JavaScript, Perl, PHP, Python, Ruby и Visual Basic.
Ключевые особенности Virtuoso:
- Безопасность на основе политик обеспечивается компилятором Virtuoso SQL путем вставки дополнительных условий в операторы, в зависимости от того, какой пользователь готовит оператор. Таблицы или представления сами по себе могут быть доступны для чтения большой группе пользователей, но разделение на части достигается за счет автоматического добавления дополнительных условий в базу данных.
- Протокол двухфазной фиксации (2PC) может использоваться для гарантии свойств ACID распределенных транзакций, которые изменяют данные в нескольких базах данных.
- Способность выводить отношения (типы отношений сущности) в различных формах.
- HTTP-совместимый сервер приложений
- Поддержка отраслевого стандарта языка запросов SPARQL
- Virtuoso предоставляет ресурсы дескрипторов для каждого объекта (объекта данных) в собственном или виртуальном четырехъядерном хранилище и поддерживает широкий спектр форматов вывода, включая HTML + RDFa, RDF / XML, N3 / Turtle, N-Triples, RDF-JSON, OData + Атом и OData + JSON.
- Язык мета-схемы Virtuoso позволяет создавать связанные представления данных (или семантические покрытия) на основе RDF для источников данных SQL, XML, SOA и REST.
- Наборы данных RDF управляются выделенным модулем в ядре ORDBMS Virtuoso. Эта функциональность предоставляется клиентским приложениям посредством реализации языка запросов SPARQL и протокола, а также набора API-интерфейсов на основе веб-служб и Virtuoso / PL для создания, обновления и удаления наборов данных RDF.
- Virtuoso Sponger является компонентом связующего программного обеспечения Virtuoso. Он генерирует связанные данные (в форме RDF) из различных источников данных и поддерживает широкий спектр форматов представления и сериализации данных.
- Связанные представления данных через внешние источники данных и собственные источники данных SQL
- Virtuoso - это средство хостинга во время выполнения для логики приложений веб-служб, написанное на PHP, Java, .NET, Python, Perl, Ruby и многих других популярных средах веб-сценариев.
- Поддержка языка запросов SPARQL соответствует стандарту W3C SPARQL 1.1, обеспечивая совместимость с другими SPARQL-совместимыми инструментами, будь то домашние или сторонние.
- Поддерживаемые стандарты доступа к данным включают ODBC, JDBC, ADO.NET, OLE DB и XMLA.
- WebDAV-совместимый контент-менеджер
- Virtuoso - это средство хостинга во время выполнения для логики приложений веб-служб, написанное на PHP, Java, .NET, Python, Perl, Ruby и многих других популярных средах веб-сценариев.
- Virtuoso может преобразовывать веб-сервисы в связанные данные RDF на fly.ax
6. ЯнусГраф
JanusGraph - это графическая база данных. JanusGraph был первоначально разработан и запущен в 2017 году как Titan Aurelius, и теперь является бесплатным и полностью открытым исходным кодом под лицензией Apache 2 и управляется Linux Foundation.
JanusGraph написан на Java и поддерживает только языки Clojure, Java и Python.
JanusGraph - это масштабируемая база данных графов, оптимизированная для хранения и запроса графов, содержащих сотни миллиардов вершин и ребер, распределенных по кластеру из нескольких машин.
Ключевые особенности JanusGraph:
- JanusGraph отлично масштабируется. Поддерживает эластичную и линейную масштабируемость для растущей базы данных и пользователей, распределения и репликации данных для повышения производительности и отказоустойчивости, а также высокую доступность для нескольких центров обработки данных и оперативное резервное копирование.
- JanusGraph - это транзакционная база данных, которая может поддерживать тысячи одновременно работающих пользователей, выполняющих сложные обходы графов в режиме реального времени. Поддержка ACID и возможной последовательности.
- Поддерживает различные источники данных, а графические данные могут храниться в Apache Cassandra, Apache HBase, Google Cloud Bigtable и Oracle BerkeleyDB.
- Расширенные возможности поиска, такие как полнотекстовый поиск, могут дополнительно поддерживаться с помощью Elastic Search, Apache Solr и Apache Lucene.
- Интеграция с Apache Spark, Apache Hadoop, Apache Giraph и TinkerPop
- JanusGraph поддерживает различные инструменты визуализации, такие как Arcade Analytics, Cytoscape, плагин Gephi для Apache TinkerPop, Graphexp, Key Lines от Cambridge Intelligence, Linkurious и Tom Sawyer Perspectives.
7. Амазонка Нептун
Amazon Neptune, разработанный и запущенный компанией Amazon в 2017 году, представляет собой быструю и надежную графическую базу данных, созданную для облака. Amazon является базой данных без схемы и поддерживает языки C #, Go, Java, JavaScript, PHP, Python, Ruby и Scala.
Ядро Amazon Neptune представляет собой специально созданное высокопроизводительное ядро для работы с графами, оптимизированное для хранения миллиардов связей и запросов к графу с задержкой в миллисекунды. Amazon Neptune поддерживает популярные графовые модели Property Graph и W3C RDF, а также соответствующие им языки запросов Apache TinkerPop Gremlin и SPARQL, что позволяет легко создавать запросы для эффективной навигации по высокосвязанным наборам данных. Нептун использует графические варианты использования, такие как механизмы рекомендаций, обнаружение мошенничества, графики знаний, обнаружение наркотиков и безопасность сети.
Amazon Neptune обладает высокой доступностью: реплики для чтения, восстановление на определенный момент времени, постоянное резервное копирование в Amazon S3 и репликация в зонах доступности. Neptune защищен благодаря поддержке зашифрованных клиентских подключений HTTPS и шифрованию в состоянии покоя. Neptune полностью управляется, поэтому вам больше не нужно беспокоиться о задачах управления базами данных, таких как подготовка оборудования, исправление программного обеспечения, настройка, настройка или резервное копирование.
8. GraphDB
GraphDB, разработанная и запущенная Ontotext в 2002 году, представляет собой высокоэффективную, надежную и масштабируемую базу данных RDF с эффективной аргументацией, поддержкой кластерных и внешних индексов.
GraphDB, написанный на Java, использует SPARQL в качестве языка запросов и поддерживает языки .Net, C #, Clojure, Java, Node.js, PHP, Python, Ruby и Scala.
9. Гираф
Apache Giraph - это итеративная система обработки графиков, созданная для высокой масштабируемости для работы с большими данными. Giraph - проект с открытым исходным кодом, управляемый Apache Foundation. Giraph использует реализацию Apache Hadoop MapReduce для обработки графиков. Giraph основан на статье, опубликованной Google о собственной системе обработки графиков под названием Pregel.
10. АллегроГраф
AllegroGraph, разработанный компанией Franz Inc в 2004 году, является высокопроизводительным, устойчивым хранилищем RDF с дополнительной поддержкой СУБД Graph. Он реализует модели данных документов, графиков и хранилищ RDF. AllegroGraph поддерживает языки C #, Clojure, Java, Lisp, Perl, Python, Ruby и Scala.
Возможности AllegroGraph включают в себя:
- AllegroGraph на 100% ACID, поддерживает транзакции: фиксация, откат и контрольные точки.
- Полное и быстрое восстановление
- 100% -ный параллелизм чтения, почти полный параллелизм записи
- Оперативное резервное копирование, восстановление на определенный момент времени, репликация, теплый резерв
- Динамическая и автоматическая индексация - все зафиксированные тройки всегда индексируются (7 индексов)
- Расширенная текстовая индексация - текстовая индексация по предикату
- СОЛР и интеграция с MongoDB
- Поддержка SPIN (Нотация SPARQL). API SPIN позволяет вам определять функцию в терминах запроса SPARQL, а затем вызывать эту функцию в других запросах SPARQL. Эти функции SPIN могут появляться в FILTER, а также могут использоваться для вычисления значений в присваивании и выбора выражений.
- Все клиенты на основе протокола REST - клиенты Java Sesame, Java Jena, Python, Clojure, Perl, Ruby, Scala и Lisp
- Полностью мультипроцессорная (SMP) - автоматическое управление ресурсами для всех процессоров и дисков и оптимизированное использование памяти. Смотрите руководство по настройке производительности здесь и руководство по настройке сервера здесь
- Сжатие индексов на основе столбцов - сокращение подкачки, лучшая производительность
- Трехуровневая безопасность с фильтрами безопасности
- AllegroGraph, размещенный в облаке - Amazon EC2
- Сервер AllegroGraph RDF может быть написан с помощью JavaScript API
- Основанный на JavaScript интерфейс (JIG) для общего обхода графа
- Поддержка Soundex - позволяет свободно индексировать текст на основе фонетического произношения
- Пользовательские индексы - полностью контролируются системным администратором
- Клиент-сервер GRUFF с графическим построителем запросов
- Плагин интерфейса для текстовых индексаторов (используйте SOLR / Lucene, полнотекстовый индексатор Native AG, японский токенизатор)
- Выделенные и открытые сеансы. В выделенных сеансах пользователи могут работать со своими собственными наборами правил для одной и той же базы данных.