OrientDB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:52, 31 октября 2017.
OrientDB
OrientDB.png
Разработчики: Orient Technologies LTD
Выпущена: 2010; 9 years ago (2010)
Постоянный выпуск: 2.2.29 / 5 October 2017 года; 21 months ago (2017-10-05)
Предыдущий выпуск: 3.0
Состояние разработки: Активное
Написана на: Java
Операционная система: Linux, FreeBSD, OpenBSD, Windows, Mac
Локализация: Английский язык
Тип ПО: Graph-oriented database
Лицензия: Apache license v2.0
Веб-сайт orientdb.com

OrientDB-это система управления NoSQL базами данных с открытым исходным кодом, написанная на языке Java. Это мультимодельная база данных, поддерживающая графики, документы, ключи/значения и объектные модели, но отношения в ней регулируются также как и в графовых базах данных с прямыми связями между записями. Данная база данных имеет мощную систему профилирования безопасности, основанную на пользователях и ролях, и поддерживает запросы с помощью Gremlin, а также SQL, расширенный для обхода графов. OrientDB использует несколько механизмов индексации на основе B-деревьев и хэширования, планируется реализовать LCM-дерево и Фрактальное дерево на основе индексов. Каждая запись имеет Surrogate ключ, который указывает позицию записи внутри массива или списка , ссылки между записями хранятся либо в виде единичного значения записи сохраненной позиции или как B-дерево запись позиций (так называемых идентификаторов записей или @RID), которое обеспечивает быстрое прохождение (с сложностью O(1)) один-ко-многим отношения и быстрого добавления/удаления новых ссылок. OrientDB является третьей по популярности графической базой данных по рейтингу DB-Engines graph database ranking по состоянию на сентябрь 2017 года.

Разработка OrientDB по-прежнему зависит от сообщества с открытым исходным кодом во главе с компанией OrientDB LTD, созданной ее автором Лука Гарулли. Проект использует GitHub для управления источниками, вкладчиками и версиями, Google Group и стек переполнения, чтобы обеспечить бесплатную поддержку пользователей во всем мире. OrientDB также предлагает бесплатный курс Udemy для тех, кто надеется узнать основы и начать работу с OrientDB.

История

Главный автор Luca Garulli в 2010 году начал переписывать на Java быстрый слой базы данных Orient ОСУБД, написанный на С++. . В течение 2012-2014 годов движок был переделан Андреем Ломакиным. Он получил новое название "plocal", что означает "с локальной разбивкой страниц". Это имя подразумевает, что новый механизм хранения основан на концепции разделения файлов данных по страницам и страница рассматривается как единая атомарная единица изменения. С 2012 года проект финансируется OrientDB LTD (бывший Orient Technologies LTD), некоммерческой компанией с Лука в качестве генерального директора и основателя. В 2013 году Андрей Ломакин присоединился к компании в качестве ведущего инженера по и совладельца компании.

OrientDB была освещена СМИ и является лауреатом премии InfoWorld Bossie 2015 года.

Движок

OrientDB была основана на мульти-графовой модели. OrientDB позиционируетсая, как графовая БД, но нет никаких причин, по которым хранилище типа ключ-значение не может быть использовано в ней само по себе. OrientDB обрабатывает каждую запись/документ как объект, и связь между объектами/документами осуществляется не через ссылки, а через указатели. Это приводит к быстрому поиску связанных данных по сравнению с поиском в РСУБД.

Особенности

  • Полная поддержка ACID транзакций (Atomicity — атомарность,  Consistency — согласованность, Isolation — изолированность, Durability — надежность);
  • Поддержка подмножества языка SQL для выполнения запросов c использованием конструкции SELECT (OrientDB не является реляционной БД, поэтому в полной мере все возможности SQL не поддерживает);
  • Поддержка "Хранимых Процедур" на языках SQL и JavaScript;
  • Поддержка хранения данных без описания предварительной схемы, с описанием полной структуры или в смешанном режиме;
  • 100 % совместима со стандартом TinkerPop Blueprints для графо-ориентированных БД;
  • Поддержка языка запросов Gremlin;
  • Поддерживает HTTP, REST и JSON протоколы без использования сторонних компонентов;
  • Возможность работы как в режиме встраивания в другие приложения, так и в качестве выделенного сервера;
  • Возможность отката внесённых в документ локальных изменений (ODocument.undo);
  • Имеет очень малый размер и не имеет сторонних зависимостей;
  • Поддерживается строгая политика разграничения доступа на основе ролей и полномочий пользователей;
  • Дистрибутив полностью самодостаточен;
  • Дистрибутив содержит Web-Studio (инструмент разработки и администрирования);
  • Поддерживает отказоустойчивые конфигурации и репликацию (архитектура OrientDB изначально рассчитана на мультимастер репликацию);
  • Поддержка запуска скриптов на стороне сервера (Server Side Scripting);
  • Доступна коммерческая поддержка.

OrientDB Web-Studio

Web-Studio - это веб-интерфейс (на собственном веб-сервере, порт TCP/2480) для разработчика и системного администратора. Web-Studio присутствует в дистрибутиве OrientDB и содержит средства для:

  • Управления правами доступа и Базами Данных;
  • Просмотра и изменения структур данных (Классы и Ребра) и самих Данных;
  • Просмотра и изменения Данных в виде визуального построения графов;
  • Составления и выполнения запросов к БД посредством newSQL;
  • Составления и выполнения запросов к БД посредством HTTP REST;
  • Написания и выполнения Хранимых Процедур (SQL, Java Script);
  • Профилирования выполнения запросов к OrientDB (только в Enterprise Edition);
  • Управление конфигурацией и мониторинг Кластера (только в Enterprise Edition);

Установка

Рассмотрим установку OrientDB на Ubuntu.

Для начала обновим систему и установим Java.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install default-jdk

Скачиваем нужную версию с сайта компании и разархивируем

$ wget -O orientdb-community-2.2.29.tar.gz http://orientdb.com/download.php?file=orientdb-community-2.2.29.tar.gz&os=linux
$ tar -zxf orientdb-community-2.2.29.tar.gz

Все остальные команды необходимо выполнять от root

$ sudo su

Перемещение и настройка БД

# mv orientdb-community-2.2.29 /opt/orientdb
# /opt/orientdb/bin/server.sh

Теперь необходимо ввести пароль для root БД. После этого конфигурируем демона.

# vi/opt/orientdb/bin/orientdb.sh

В открывшемся файле вбиваем путь к БД и основного юзера. Меняем владельца БД в Ubuntu и права доступа к конфигурационному файлу.

# chown -R $USER:$GROUP /opt/orientdb
# chmod 640 /opt/orientdb/config/orientdb-server-config.xml

Копируем service fail в папочку систем, меняем в нем необходимые параметры (User, Group, ExecStart)

# cp /opt/orientdb/bin/orientdb.service /etc/systemd/system
# vi /etc/systemd/system/orientdb.service

Перезапускаем демона systemd и начинаем работу с OrientDB

# systemctl daemon-reload
# systemctl start orientdb
# systemctl enable orientdb

Пример создания БД

Рассмотрим пример создания базы данных в OrientDB на Ubuntu.

Запуск OrientDB

$ /opt/orientdb/bin/server.sh
$ /opt/orientdb/bin/console.sh

Создадим новую базу данных на текущей машине

orientdb> create database remote://localhost/$DBNAME root $PASSWORD plocal
orientdb {db=test}> info

Создадим новый класс объектов типа "вершина", добавим этим объектам поле типа string

orientdb {db=test}> create class Point extends V
orientdb {db=test}> create property Point.name string

Создадим четыре вершины

orientdb {db=test}> create vertex Point set name='A' 
orientdb {db=test}> create vertex Point set name='B'
orientdb {db=test}> create vertex Point set name='C'
orientdb {db=test}> create vertex Point set name='D'

Создадим новый класс объектов типа "ребра"

orientdb {db=test}> create class Connection extends E

Пропишем, какие ребра какие вершины связывают, вершины указываются по номеру(@RID), который присваивается им автоматически при создании

orientdb {db=test}> create edge Connection from  #11:0 to #11:1
orientdb {db=test}> create edge Connection from  #11:0 to #11:2
orientdb {db=test}> create edge Connection from  #11:1 to #11:2
orientdb {db=test}> create edge Connection from  #11:3 to #11:0
orientdb {db=test}> create edge Connection from  #11:3 to #11:2

Просмотрим вершины и связи между ними, завершим работу

orientdb {db=test}> select from V
orientdb {db=test}> exit

Запустим браузер. чтобы видеть, как выглядит наша бд, так же ее там можно и редактировать

$ firefox http://127.0.0.1:2480

Появляется страница авторизации, где нужно выбрать базу данных, ввести пользователя и его пароль. На открывшемся сайте присутствует 6 вкладок:

  • Browse - обзор, эта вкладка дает возможность делать запросы к бд, просматривать ее содержимое
  • Schema - показывает текущее состояние БД
  • Security
  • Graph - дает возможность отрисовать БД в виде графа
  • Functions
  • DB

Теперь посмотрим, как отрисуется в виде шграфа ранее созданная нами база данных. Для это перейдем в вкладку Graph и пропишем код

select from V
Графовое отображение созданной в примере базы данных

См. также

Литература

Ссылки