Memgraph

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 13:12, 19 мая 2020.
Memgraph
Memgraph.png
Разработчики: Memgraph Ltd.
Постоянный выпуск: 1.0.0
Состояние разработки: Активное
Написана на: C, C++, Python
Операционная система: Linux, Windows, Mac
Тип ПО: Graph-oriented database
Лицензия: CC-BY-4.0, Apache-2.0, GPL-3.0, BSD-3-Clause, проприетарное
Веб-сайт memgraph.com//

Memgraph – графовая система управления базами данных с частично открытым исходным кодом, реализованная на C++ и Python. Разработчик — английская компания Memgraph Ltd., разработка ведётся с 2016 года. В Memgraph присутствуют все характеристики баз данных, включая соблюдение ACID, поддержание разбиения на кластеры и восстановление после сбоя в системе.[Источник 1][Источник 2]


Общие сведения

Основные транзакционные возможности — поддержка ACID. Интерфейс программирования приложений для СУБД реализован для языков программирования: Python, С++.[Источник 3]

В СУБД используется язык запросов — openCypher.

Memgraph предоставляет полностью управляемую графическую СУБД как услугу по средствам Microsoft Azure, Google Cloud. Пользователям не нужно настраивать или поддерживать экземпляр базы данных. Memgraph отвечает за надзор за инфраструктурой (развертывание, обновление, удаление, резервное копирование данных, безопасность и т.д).[Источник 4]

Memgraph предоставляет для визуализации графов Memgraph Lab- это легкая и интуитивно понятная интегрированная среда разработки IDE, совместимая с openCypher и Bolt, предназначенная для помощи в импорте данных, разработке, отладке и профилировании запросов к базе данных и визуализации результатов запросов.[Источник 5]

Архитектура

Данные хранит в формате openCypher, специализированно приспособленном для представления графовой информации, такой подход, в сравнении с моделированием графовой базы данных средствами реляционной СУБД, позволяет применять дополнительную оптимизацию в случае данных с более сложной структурой.[Источник 6]

Компоненты графовой базы данных — узлы и ребра. Они могут быть дополнены собственным набором полей.

Memgraph использует стандартное аппаратное обеспечение в облаке для высокой пропускной способности и низкой задержки в широком диапазоне рабочих нагрузок. База данных Memgraph поддерживает широкую совместимость с распространенными технологиями в современной экосистеме обработки данных, так что можно обеспечить легкую интеграцию в существующую среду. Также автоматически сохраняет периодические моментальные снимки и ведет журнал предварительной записи Write-ahead logging на диске.[Источник 3]

Архетиктура Memgraph заточена на производительность в современных средах и простоту поддержки большего количества пользователей и запросов с оптимизированно - многоверсионным управлением параллелизмом MultiVersion Concurrency Control.

Memgraph гарантирует, что ваши данные всегда доступны с помощью отраслевого стандарта репликации RAFT[Источник 7].[Источник 6]

Терминология Memgraph и графовых баз данных в целом

  • graph database, графовая база данных — база данных, построенная на графах — узлах и связях между ними.
  • openCypher — язык для написания запросов к базе данных Memgraph (примерно, как SQL в MYSQL).
  • node, нода — объект в базе данных, узел графа. Количество узлов ограничено 2 в степени 35 ~ 34 биллиона.
  • node label, метка ноды — используется как условный «тип ноды». Например, ноды типа movie могут быть связаны с нодами типа actor. Метки нод — регистрозависимые, причем *openCypher не выдает ошибок, если набрать не в том регистре название.
  • relation, связь — связь между двумя нодами, ребро графа. Количество связей ограниченно 2 в степени 35 ~ 34 биллиона.
  • relation identirfier, тип связи — в Memgraph у связей. Максимальное количество типов связей 32767.
  • properties, свойства ноды — набор данных, которые можно назначить ноде. Например, если нода — это товар, то в свойствах ноды можно хранить id товара из базы MySQL.
  • node ID, ID нода — уникальный идентификатор ноды. По умолчанию, при просмотрах результата отображается именно этот ID.

[Источник 8]

Возможности развертывания в Memgraph

Memgraph может быть развернут в любом месте в облаке или локально на аппаратном оборудовании.

Memgraph специализирован для развертывания в облаке, гарантируя тем самым легкое обслуживания и масштабируемость.[Источник 4]

Интегрированно поддерживает Docker и Kubernetes[Источник 3]

Запуск Memgraph

Инструкция по установке Memgraph на разные операционные системы подробно написана на официальном сайте

Для наглядного примера разберем установку Memgraph для CentOS [Источник 9]

1. Загрузка RPM-пакета

После загрузки RPM-пакета Memgraph с официального сайта вы можете установить его, выполнив следующую команду:

2. Запускаем скрипт установщик

$ yum --nogpgcheck localinstall /path/to/memgraph-<version>.rpm 

3. Запуск Memgraph

После успешной установки Memgraph можно запустить как службу с помощью следующей команды:

$ systemctl start memgraph

Чтобы убедиться, что Memgraph запущен, выполните следующую команду:

$ journalctl --unit memgraph

В случае успеха вы должны получить вывод, подобный следующему:

May 3 13:40:13 hostname memgraph[14654]: Starting 8 BoltS workers
May 3 13:40:13 hostname memgraph[14654]: BoltS server is fully armed and operational
May 3 13:40:13 hostname memgraph[14654]: BoltS listening on 0.0.0.0 at 7687

4. Разрешить автоматический запуск

Если вы хотите, чтобы служба Memgraph запускалась автоматически при каждом запуске, выполните следующую команду:

$ systemctl enable memgraph

Видео по установке

Более детально и наглядно можно рассмотреть установку Memgraph по видео:

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

Язык запросов openCypher — самый распространенный язык запросов к графовым базам данных, что обусловлено его использованием в СУБД Memgraph . openCypher является декларативным языком и позволяет создавать, обновлять и удалять вершины, ребра, метки и свойства, а также управлять индексами и ограничениями.[Источник 10] Для извлечения данных из хранилища используется запрос, содержащий шаблон фильтрации, позволяющий получать:

  • (n)-->(m) — все направленные ребра из вершины n в вершину m;
  • (n:Person) — все вершины с меткой Person;
  • (n:Person:Russian) — все вершины, имеющие обе метки Person и Russian;
  • (n:Person {name:{value}}) — все вершины с меткой Person и отфильтрованные по дополнительному свойству;
  • (n:Person)-->(m) — ребра между вершинами n с меткой Person и m;
  • (n)--(m) — все ненаправленные ребра между вершинами n и m;

[Источник 9]

Выполнение простых запросов

Разберем на примере простых запросов, такие как создание/удаление вершины, создание/удаление ребер, добавление и изменение свойств вершины и тд. Все это подробно показано в видео ниже. Для визуализации используется предоставляемая Memgraph Ltd. IDE Memgraph Lab v1.1.0

Источники

  1. Real‑Time Operational Graph Analytics for Mission Critical Applications // Официальный сайт Memgraph [2016 — ]. URL:https://memgraph.com// (дата обращения: 02.05.2020).
  2. Our Story // Официальный сайт Memgraph [2016 — ]. URL:https://memgraph.com/company (дата обращения: 08.05.2020).
  3. 3,0 3,1 3,2 How it Works // Официальный сайт Memgraph [2016 — ]. URL:https://memgraph.com/product (дата обращения: 10.05.2020).
  4. 4,0 4,1 Launch Faster With Memgraph Cloud // Официальный сайт Memgraph [2016 — ]. URL:https://memgraph.com/product/cloud (дата обращения: 08.05.2020).
  5. The Easiest Way to Explore and Manipulate Your Memgraph Data // Официальный сайт Memgraph [2016 — ]. URL:https://memgraph.com/product/lab (дата обращения: 08.05.2020).
  6. 6,0 6,1 FAQ // Официальная Документация Memgraph [2016 — ]. URL:https://docs.memgraph.com/memgraph/faq (дата обращения: 08.05.2020).
  7. The Raft Consensus Algorithm // GitHub Pages Raft [2013 — ]. Дата обновления: 22.03.2019. URL: https://raft.github.io/ (дата обращения: 28.04.2020).
  8. Начинаем работать с графовой базой данных Neo4j // Habr (Хабр) Blog [2006 — ]. URL:https://habr.com/ru/post/219441/ (дата обращения: 17.04.2020).
  9. 9,0 9,1 Quick Start // Официальная Документация Memgraph [2016 — ]. URL:https://docs.memgraph.com/memgraph/quick-start (дата обращения: 17.04.2020).
  10. What is openCypher? // Официальный сайт openCypher [2018 — ]. URL:http://www.opencypher.org/ (дата обращения: 06.05.2020).