Что такое Memgraph и чем она отличается от Neo4j: сравнение графовых СУБД

Neo4j vs Memgraph, сравнение Neo4j с Memgraph, NoSQL СУБД, графы базы данных примеры курсы обучение, графы Data Science примеры курсы обучение, Школа Больших Данных Учебный Центр Коммерсант

В рамках продвижения нашего нового курса по графовым алгоритмам в бизнес-приложениях сегодня познакомимся с графовой резидентной СУБД Memgraph и сравним ее с Neo4j, определив достоинства, недостатки и варианты использования в задачах аналитики больших данных.

Memgraph vs Neo4j

Memgraph — это высокопроизводительная графовая СУБД с открытым исходным кодом, которая хранит и обрабатывает данные в памяти. Благодаря своему резидентному характеру и языкам разработки (С и C++), она работает очень быстро, а потому отлично подходит для обработки больших объемов данных в реальном времени. Memgraph поддерживает строго согласованные ACID-транзакции и использует язык запросов Cypher, который поддерживается не только в Neo4j, но и в других графовых СУБД, например, в расширении Apache AEG для PostgreSQL, о котором мы недавно рассказывали.

Memgraph на 10 лет младше Neo4j, которая написана на Java и впервые вышла в 2007 году. Тем не менее, Memgraph имеет надежную архитектуру, способную обеспечить высокопроизводительные транзакционны  и аналитические рабочие нагрузки. Memgraph использует механизм хранения в оперативной памяти, а Neo4j реализует традиционное решение для хранения данных на диске. Именно это отличие является основным между рассматриваемыми графовыми СУБД: хранение данных на диске подходит для большого количества объектов, которые не нужно извлекать очень часто, т.е. OLTP-системы. Memgraph предлагает хранение данных в памяти, ориентированное на потоковую обработку и вычисления в реальном времени. Это подходит для больших графов, которые нужно часто анализировать и получать ответы в реальном времени, т.е. OLAP-системы. Впрочем, при необходимости можно сохранить часть данных Memgraph  из памяти на диск, чтобы ускорить выполнение графовых алгоритмов. Подробнее об этом читайте в нашей новой статье

Для обоих решений доступно большое количество драйверов на разных языках программирования. Хотя Memgraph поддерживает меньше языков программирования, большинство драйверов Neo4j также можно использовать с Memgraph. Это связано с тем, что оба решения используют протокол Bolt, модель маркированного графа свойств и язык запросов Cypher.

Memgraph включает готовые коннекторы для платформ потоковой передачи событий Apache Kafka и Pulsar, а также фреймворком Redpanda, о котором мы писали здесь. Neo4j также предлагает плагин Kafka Connect для поддержки потоковой передачи.

Подобно библиотеке библиотека Graph Data Science с графовыми и ML-алгоритмами, которая есть в Neo4j, Memgraph предлагает расширения MAGE (Memgraph Advanced Graph Extensions)  библиотеку с открытым исходным кодом для запуска графовых алгоритмов, представленных в виде процедур Cypher. Она включает востребованные алгоритмы решения типовых задач на графах, таких как ранжирование (PageRank), обнаружение сообществ и node2vec. Эти алгоритмы адаптированы для потоковой передачи данных, которые необходимо обрабатывать каждый раз раз, когда создается новый узел или связь или обновляются существующие.

Графовые алгоритмы. Бизнес-приложения

Код курса
GRAF
Ближайшая дата курса
по запросу
Продолжительность
24 ак.часов
Стоимость обучения
54 000 руб.

Как и Neo4j, Memgraph является расширяемой системой, которую можно дополнить собственными UDF-функциями. Однако процесс их разработки в Neo4j, реализованной на Java, не так прост, как в Memgraph, ориентированном на Python. Хотя основной механизм Memgraph реализован на C++ для наилучшего использования ресурсов и высокой производительности, пользовательские процедуры (называемые модулями запросов в Memgraph) могут быть написаны на нескольких языках программирования, включая Python. UDF-функции и процедуры могут содержать графовые алгоритмы, служебные инструменты, пользовательские API и пр., и можно вызывать из языка запросов Cypher, как и любой другой запрос, а также комбинировать их с другими функциями, такими как потоки или триггеры.

Чтобы резюмировать сходства и отличия Memgraph и Neo4j, сравним их по ряду критериев, наиболее важным для выбора решения, и представим это в виде таблицы.

Критерий

Neo4j

Memgraph

открытость исходного кода

Открытый исходный код

Открытый исходный код

наличие схемы данных

Возможно по желанию

Возможно по желанию

типизация данных

да

да

соответствие ACID-требованиям к транзакциям

Да, об этом читайте здесь

Да

механизмы обеспечения согласованности данных

Причинно-следственная согласованность и согласованность в конечном счете

Строгая поддержка согласованности (Immediate Consistency)

поддержка ANSI-SQL

нет

нет

язык запросов

Cypher

Cypher

предоставляемые API

Bolt protocol, Java API, Neo4j-OGM, RESTful HTTP API, Spring Data Neo4j, TinkerPop 3

Bolt protocol

триггеры

Да в виде перехватчиков событий

 

хранимые процедуры

UDF-функции и процедуры

UDF-функции и процедуры

поддерживаемые языки разработки

.Net, Clojure, Elixir, Go, Groovy, Haskell, Java, JavaScript, Perl, PHP, Python, Ruby, Scala

.Net, C, C++, Elixir, Go, Haskell, Java, JavaScript, PHP, Python, Ruby, Scala

репликация данных

алгоритм консенсуса протокола RAFT в Enterprise-версии

Через алгоритм консенсуса протокола RAFT

партиционирование

Да, с помощью Neo4j Fabric для горизонтального масштабирования через шардирование

Динамическое шаржирование

вторичная индексация

с помощью подключаемых плагинов, по умолчанию Apache Lucene

 

внешние ключи

Да, через отношения (ребра) графа

Да, через отношения (ребра) графа

поддержка вычислительной модели MapReduce

нет

нет

инструменты обеспечения безопасности и управления доступом к данным

Пользователи, роли, разрешения. Подключаемая аутентификация LDAP, Active Directory, Kerberos

Пользователи, роли, разрешения

Производительность и объем базы данных

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

Благодаря хранению данных в памяти и резидентным вычислениям, а также языкам реализации C и C++, производительность запросов Cypher в разы выше, чем в Neo4j (до 120 раз). Размер БД ограничен объемом памяти

стоимость покупки и эксплуатации

Community-версия бесплатно, стоимость подписки на Neo4j AuraDB начинается с $0,09 в час ($65 в месяц) и зависит от потребления памяти

Community-версия бесплатно, стоимость подписки на облачный полностью управляемый сервис и Enterprise-версию зависит от потребляемых ресурсов

специальные возможности

Библиотека Graph Data Science с графовыми и ML-алгоритмами

Библиотека MAGE с графовыми и ML-алгоритмами

варианты использования

Анализ социальных связей, выявление сообществ, поиск путей

Анализ социальных связей, выявление сообществ, поиск путей

 

Таким образом, обе СУБД имеют похожий спектр возможностей и выбор решения зависит от особенностей вариантов использования. Если не требуются оперативные аналитические вычисления в реальном времени, Neo4j будет отличным выбором. В случае высокопроизводительный OLAP-запросов потоковой передачи и разработчиков, вместо Java предпочитающих Python, C++ и Rust, следует выбирать Memgraph.

В заключение от себя лично отмечу подробную документацию Memgraph и набор обучающих материалов в виде интерактивных уроков со встроенной песочницей, демонстрационными датасетами и запросами. Neo4j тоже, конечно, имеет большой набор обучающих курсов и документацию для пользователей различных категорий (Data Scientist, разработчик, администратор), а также интерактивную консоль. Однако, в Memgraph эти материалы мне показались более наглядными.

Освойте лучшие практики применения  графовых алгоритмов и инструментальные средства работы с ними в реальных проектах аналитики больших данных на специализированных курсах нашего лицензированного учебного центра обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://memgraph.com/docs/memgraph
  2. https://db-engines.com/en/system/Memgraph%3BNeo4j
Поиск по сайту