Учебники

OrientDB — Краткое руководство

OrientDB — Обзор

OrientDB — это система управления базами данных NoSQL с открытым исходным кодом. База данных NoSQL предоставляет механизм для хранения и извлечения данных, относящихся к NO или не, которые относятся к данным, отличным от табличных данных, таких как данные документа или данные графика. Базы данных NoSQL все чаще используются в больших данных и веб-приложениях реального времени. Системы NoSQL также иногда называют «не только SQL», чтобы подчеркнуть, что они могут поддерживать языки запросов, подобные SQL.

OrientDB также принадлежит к семейству NoSQL. OrientDB — это база данных распределенных графов второго поколения с гибкостью документов в одном продукте с открытой лицензией Apache 2. До появления OrientDB на рынке было несколько баз данных NoSQL, одна из которых — MongoDB.

MongoDB против OrientDB

MongoDB и OrientDB содержат много общих функций, но движки принципиально разные. MongoDB — это чистая база данных документов, а OrientDB — гибридный документ с графическим движком.

Характеристики MongoDB OrientDB
Отношения Использует СУБД RDBMS для создания отношений между сущностями. Он имеет высокую стоимость выполнения и не масштабируется при увеличении масштаба базы данных. Встраивает и связывает документы, такие как реляционная база данных. Он использует прямые, сверхбыстрые ссылки, взятые из мира графических баз данных.
План выборки Дорогостоящие операции JOIN. Легко возвращает полный график с взаимосвязанными документами.
операции Не поддерживает транзакции ACID, но поддерживает атомарные операции. Поддерживает ACID транзакции, а также атомарные операции.
Язык запросов Имеет свой язык на основе JSON. Язык запросов построен на SQL.
Индексы Использует алгоритм B-Tree для всех индексов. Поддерживает три различных алгоритма индексации, чтобы пользователь мог достичь максимальной производительности.
Запоминающее устройство Использует технику отображения памяти. Использует имя механизма хранения LOCAL и PLOCAL.

OrientDB — это первая мультимодельная NoSQL-СУБД с открытым исходным кодом, которая объединяет мощь графиков и гибкость документов в масштабируемой высокопроизводительной операционной базе данных.

OrientDB — Установка

Установочный файл OrientDB доступен в двух редакциях —

  • Выпуск сообществаВыпуск сообщества OrientDB выпущен Apache под лицензией 0.2 как открытый исходный код

  • Enterprise Editionкорпоративная версия OrientDB выпущена в качестве проприетарного программного обеспечения, которое основано на версии сообщества. Он служит продолжением издания сообщества.

Выпуск сообществаВыпуск сообщества OrientDB выпущен Apache под лицензией 0.2 как открытый исходный код

Enterprise Editionкорпоративная версия OrientDB выпущена в качестве проприетарного программного обеспечения, которое основано на версии сообщества. Он служит продолжением издания сообщества.

В этой главе описывается процедура установки редакции сообщества OrientDB, поскольку она имеет открытый исходный код.

Предпосылки

Редакции сообщества и Enterprise могут работать в любой операционной системе, которая реализует виртуальную машину Java (JVM). OrientDB требует Java с 1.7 или более поздней версией.

Используйте следующие шаги для загрузки и установки OrientDB в вашу систему.

Шаг 1 — Загрузите бинарный установочный файл OrientDB

OrientDB поставляется со встроенным установочным файлом для установки базы данных в вашей системе. Он предоставляет различные предварительно скомпилированные двоичные пакеты (tar-архивы или zip-пакеты) для разных операционных систем. Вы можете скачать файлы OrientDB по ссылке Скачать OrientDB .

На следующем снимке экрана показана страница загрузки OrientDB. Вы можете скачать заархивированный или заархивированный файл, щелкнув значок подходящей операционной системы.

Скачать страницу OrientDB

При загрузке вы получите бинарный пакет в папке « Загрузки ».

Шаг 2 — Распакуйте и установите OrientDB

Ниже приведена процедура извлечения и установки OrientDB для разных операционных систем.

В линуксе

После загрузки вы получите файл orientdb-community-2.1.9.tar.gz в папке « Загрузки ». Вы можете использовать следующую команду для извлечения файла tarred.

$ tar zxvf orientdb-community-2.1.9.tar.gz 

Вы можете использовать следующую команду, чтобы переместить все файлы библиотеки OrientDB из каталога orientdbcommunity-2.1.9 в каталог / opt / orientdb / . Здесь мы используем команду суперпользователя (sudo), поэтому вы должны предоставить пароль суперпользователя для выполнения следующей команды.

$ sudo mv orientdb-community-2.1.9 /opt/orientdb

Вы можете использовать следующие команды для регистрации команды orientdb и сервера Orient.

$ export ORIENTDB_HoME = /opt/orientdb 
$ export PATH = $PATH:$ORIENTDB_HOME/bin

В винде

  • После загрузки вы получите файл orientdb-community-2.1.9.zip в папке « Загрузки ». Распакуйте ZIP-файл, используя Zip Extractor.

  • Переместите извлеченную папку в каталог C: \ .

  • Создайте две переменные окружения ORIENTDB_HOME и переменные PATH со следующими заданными значениями.

После загрузки вы получите файл orientdb-community-2.1.9.zip в папке « Загрузки ». Распакуйте ZIP-файл, используя Zip Extractor.

Переместите извлеченную папку в каталог C: \ .

Создайте две переменные окружения ORIENTDB_HOME и переменные PATH со следующими заданными значениями.

ORIENT_HOME = C:\orientdb-community-2.1.9 
PATH = C:\orientdb-community-2.1.9\bin

Шаг 3 — Настройка сервера OrientDB в качестве службы

Следуя вышеуказанным шагам, вы можете использовать версию OrientDB для ПК. Вы можете запустить сервер базы данных OrientDB как сервис, выполнив следующие действия. Процедура отличается в зависимости от вашей операционной системы.

В линуксе

OrientDB предоставляет файл сценария orientdb.sh для запуска базы данных в качестве демона. Вы можете найти его в каталоге bin / вашего установочного каталога OrientDB, который называется $ ORIENTDB_HOME / bin / orientdb.sh.

Перед запуском файла сценария необходимо отредактировать файл orientdb.sh для определения двух переменных. Одним из них является ORIENTDB_DIR, который определяет путь к каталогу установки ( / opt / orientdb ), а вторым — ORIENTDB_USER, который определяет имя пользователя, для которого вы хотите запустить OrientDB, следующим образом.

ORIENTDB_DIR = "/opt/orientdb" 
ORIENTDB_USER = "<username you want to run OrientDB>" 

Используйте следующую команду, чтобы скопировать файл orientdb.sh в каталог /etc/init.d/ для инициализации и запуска скрипта. Здесь мы используем команду суперпользователя (sudo), поэтому вы должны предоставить пароль суперпользователя для выполнения следующей команды.

$ sudo cp $ORIENTDB_HOME/bin/orientdb.sh /etc/init.d/orientdb

Используйте следующую команду, чтобы скопировать файл console.sh из установочного каталога OrientDB, который является $ ORIENTDB_HOME / bin, в системный каталог bin, который является / usr / bin для доступа к консоли Orient DB.

$ sudo cp $ ORIENTDB_HOME/bin/console.sh /usr/bin/orientdb

Используйте следующую команду, чтобы запустить сервер базы данных ORIENTDB в качестве службы. Здесь вы должны указать пароль соответствующего пользователя, который вы указали в файле orientdb.sh, чтобы запустить сервер.

$ service orientdb start

Используйте следующую команду, чтобы узнать, на каком PID запущен демон сервера OrientDB.

$ service orientdb status

Используйте следующую команду, чтобы остановить демон сервера OrientDB. Здесь вы должны указать пароль соответствующего пользователя, который вы упомянули в файле orientdb.sh, чтобы остановить сервер.

$ service orientdb stop

В винде

OrientDB является серверным приложением, поэтому он должен выполнить несколько задач, прежде чем начинать закрывать процесс виртуальной машины Java. Если вы хотите выключить сервер OrientDB вручную, вам необходимо выполнить файл shutdown.bat . Но экземпляры сервера не останавливаются правильно, когда система неожиданно завершает работу, не выполняя вышеуказанный сценарий. Программы, которые управляются операционной системой с помощью набора указанных сигналов, называются службами в Windows.

Мы должны использовать Apache Common Daemon, который позволяет пользователям Windows использовать Java-приложения в качестве службы Windows. Ниже описана процедура загрузки и регистрации общего демона Apache.

  • Нажмите на следующую ссылку для Apache Common Daemons для Windows .

  • Нажмите на common-daemon-1.0.15-bin-windows для загрузки.

  • Разархивируйте каталог common-daemon-1.0.15-bin-windows . После распаковки вы найдете файлы prunsrv.exe и prunmgr.exe внутри каталога. В тех —

    • Файл prunsrv.exe представляет собой служебное приложение для запуска приложений в качестве служб.

    • Файл prunmgr.exe — это приложение, используемое для мониторинга и настройки служб Windows.

  • Перейдите в папку установки OrientDB → создайте новый каталог и назовите его service.

  • Скопируйте prunsrv.exe и prunmgr .exe вставьте его в каталог службы.

  • Чтобы настроить OrientDB в качестве службы Windows, необходимо выполнить короткий сценарий, который использует prusrv.exe в качестве службы Windows.

  • Прежде чем определять службы Windows, вы должны переименовать prunsrv и prunmgr в соответствии с названием службы. Например, для OrientDBGraph и OrientDBGraphw соответственно. Здесь OrientDBGraph — название сервиса.

  • Скопируйте следующий скрипт в файл с именем installService.bat и поместите его в каталог% ORIENTDB_HOME% \ service \ .

Нажмите на следующую ссылку для Apache Common Daemons для Windows .

Нажмите на common-daemon-1.0.15-bin-windows для загрузки.

Разархивируйте каталог common-daemon-1.0.15-bin-windows . После распаковки вы найдете файлы prunsrv.exe и prunmgr.exe внутри каталога. В тех —

Файл prunsrv.exe представляет собой служебное приложение для запуска приложений в качестве служб.

Файл prunmgr.exe — это приложение, используемое для мониторинга и настройки служб Windows.

Перейдите в папку установки OrientDB → создайте новый каталог и назовите его service.

Скопируйте prunsrv.exe и prunmgr .exe вставьте его в каталог службы.

Чтобы настроить OrientDB в качестве службы Windows, необходимо выполнить короткий сценарий, который использует prusrv.exe в качестве службы Windows.

Прежде чем определять службы Windows, вы должны переименовать prunsrv и prunmgr в соответствии с названием службы. Например, для OrientDBGraph и OrientDBGraphw соответственно. Здесь OrientDBGraph — название сервиса.

Скопируйте следующий скрипт в файл с именем installService.bat и поместите его в каталог% ORIENTDB_HOME% \ service \ .

:: OrientDB Windows Service Installation 
@echo off 
rem Remove surrounding quotes from the first parameter 
set str=%~1 
rem Check JVM DLL location parameter 
if "%str%" == "" goto missingJVM 
set JVM_DLL=%str% 
rem Remove surrounding quotes from the second parameter 
set str=%~2 
rem Check OrientDB Home location parameter 
if "%str%" == "" goto missingOrientDBHome 
set ORIENTDB_HOME=%str%  


set CONFIG_FILE=%ORIENTDB_HOME%/config/orientdb-server-config.xml 
set LOG_FILE = %ORIENTDB_HOME%/config/orientdb-server-log.properties 
set LOG_CONSOLE_LEVEL = info 
set LOG_FILE_LEVEL = fine 
set WWW_PATH = %ORIENTDB_HOME%/www 
set ORIENTDB_ENCODING = UTF8 
set ORIENTDB_SETTINGS = -Dprofiler.enabled = true 
-Dcache.level1.enabled = false Dcache.level2.strategy = 1 
set JAVA_OPTS_SCRIPT = -XX:+HeapDumpOnOutOfMemoryError

  
rem Install service 
OrientDBGraphX.X.X.exe //IS --DisplayName="OrientDB GraphEd X.X.X" ^ 
--Description = "OrientDB Graph Edition, aka GraphEd, contains OrientDB server
integrated with the latest release of the TinkerPop Open Source technology 
stack supporting property graph data model." ^ 

--StartClass = com.orientechnologies.orient.server.OServerMain 
-StopClass = com.orientechnologies.orient.server.OServerShutdownMain ^
 
--Classpath = "%ORIENTDB_HOME%\lib\*" --JvmOptions 
"Dfile.Encoding = %ORIENTDB_ENCODING%; Djava.util.logging.config.file = "%LOG_FILE%";
Dorientdb.config.file = "%CONFIG_FILE%"; -Dorientdb.www.path = "%WWW_PATH%";
Dlog.console.level = %LOG_CONSOLE_LEVEL%; -Dlog.file.level = %LOG_FILE_LEVEL%;
Dorientdb.build.number = "@BUILD@"; -DORIENTDB_HOME = %ORIENTDB_HOME%" ^ 

--StartMode = jvm --StartPath = "%ORIENTDB_HOME%\bin" --StopMode = jvm 
-StopPath = "%ORIENTDB_HOME%\bin" --Jvm = "%JVM_DLL%" 
-LogPath = "%ORIENTDB_HOME%\log" --Startup = auto  

EXIT /B  

:missingJVM 
echo Insert the JVM DLL location 
goto printUsage 
 
:missingOrientDBHome 
echo Insert the OrientDB Home
goto printUsage 
 
:printUsage 
echo usage: 
echo     installService JVM_DLL_location OrientDB_Home 
EXIT /B 

Скрипт требует двух параметров —

  • Расположение файла jvm.dll, например, C: \ ProgramFiles \ java \ jdk1.8.0_66 \ jre \ bin \ server \ jvm.dll

  • Расположение установки OrientDB, например, для C: \ orientdb-community-2.1.9

Расположение файла jvm.dll, например, C: \ ProgramFiles \ java \ jdk1.8.0_66 \ jre \ bin \ server \ jvm.dll

Расположение установки OrientDB, например, для C: \ orientdb-community-2.1.9

  • Служба устанавливается, когда вы запускаете файл OrientDBGraph.exe (Original prunsrv) и дважды щелкаете по нему.

  • Используйте следующую команду для установки служб в Windows.

Служба устанавливается, когда вы запускаете файл OrientDBGraph.exe (Original prunsrv) и дважды щелкаете по нему.

Используйте следующую команду для установки служб в Windows.

> Cd %ORIENTDB_HOME%\service 
> installService.bat "C:\Program Files\Java\jdk1.8.0_66\jre\bin\server
   \jvm.dll" C:\orientdb-community-2.1.9 

Откройте диспетчер задач, вы увидите следующий скриншот с зарегистрированным названием сервиса.

Диспетчер задач

Шаг 4 — Проверка установки OrientDB

Этот шаг проверяет установку сервера базы данных OrientDB, используя следующие шаги.

  • Запустите сервер.
  • Запустите консоль.
  • Запустите студию.

Это уникально для операционной системы.

В линуксе

Выполните данную процедуру для проверки установки OrientDB в Linux.

Запуск сервера — Вы можете использовать следующую команду для запуска сервера.

$ cd $ORIENTDB_HOME/bin 
$ ./server.sh 

Или вы можете использовать следующую команду, чтобы запустить сервер OrientDB как демон UNIX.

$ service orientdb start 

Если он успешно установлен, вы получите следующий вывод.

          .                                           
          .`        `                                  
          ,      `:.                                   
         `,`    ,:`                                    
         .,.   :,,                                     
         .,,  ,,,                                      
    .    .,.:::::  ````                                 :::::::::     :::::::::    
    ,`   .::,,,,::.,,,,,,`;;                      .:    ::::::::::    :::    :::   
    `,.  ::,,,,,,,:.,,.`  `                       .:    :::      :::  :::     :::  
     ,,:,:,,,,,,,,::.   `        `         ``     .:    :::      :::  :::     :::  
      ,,:.,,,,,,,,,: `::, ,,   ::,::`   : :,::`  ::::   :::      :::  :::    :::   
       ,:,,,,,,,,,,::,:   ,,  :.    :   ::    :   .:    :::      :::  :::::::      
        :,,,,,,,,,,:,::   ,,  :      :  :     :   .:    :::      :::  :::::::::    
  `     :,,,,,,,,,,:,::,  ,, .::::::::  :     :   .:    :::      :::  :::     :::  
  `,...,,:,,,,,,,,,: .:,. ,, ,,         :     :   .:    :::      :::  :::     ::: 
    .,,,,::,,,,,,,:  `: , ,,  :     `   :     :   .:    :::      :::  :::     :::  
      ...,::,,,,::.. `:  .,,  :,    :   :     :   .:    :::::::::::   :::     :::  
           ,::::,,,. `:   ,,   :::::    :     :   .:    :::::::::     ::::::::::   
           ,,:` `,,.                                   
          ,,,    .,`                                   
         ,,.     `,                                          GRAPH DATABASE   
       ``        `.                                                           
                 ``                                          orientdb.com 
                 `    
				 
2016-01-20 19:17:21:547 INFO  OrientDB auto-config DISKCACHE = 1, 
   649MB (heap = 494MB os = 4, 192MB disk = 199, 595MB) [orientechnologies] 
2016-01-20 19:17:21:816 INFO  Loading configuration from:
   /opt/orientdb/config/orientdb-server-config.xml... [OServerConfigurationLoaderXml] 
2016-01-20 19:17:22:213 INFO  OrientDB Server v2.1.9-SNAPSHOT 
   (build 2.1.x@r; 2016-01-07 10:51:24+0000) is starting up... [OServer] 
2016-01-20 19:17:22:220 INFO  Databases directory: /opt/orientdb/databases [OServer] 
2016-01-20 19:17:22:361 INFO  Port 0.0.0.0:2424 busy, 
   trying the next available... [OServerNetworkListener] 
2016-01-20 19:17:22:362 INFO  Listening binary connections on 0.0.0.0:2425 
   (protocol v.32, socket = default) [OServerNetworkListener] 
... 
2016-01-20 19:17:22:614 INFO  Installing Script interpreter. WARN:
   authenticated clients can execute any kind of code into the server 
   by using the following allowed languages: 
   [sql] [OServerSideScriptInterpreter] 
2016-01-20 19:17:22:615 INFO  OrientDB Server v2.1.9-SNAPSHOT 
   (build 2.1.x@r; 2016-01-07 10:51:24+0000) is active. [OServer] 

Запуск консоли — Вы можете использовать следующую команду для запуска OrientDB из консоли.

$ orientdb

Если он успешно установлен, вы получите следующий вывод.

OrientDB console v.2.1.9-SNAPSHOT (build 2.1.x@r; 2016-01-07 10:51:24+0000) www.orientdb.com 
Type 'help' to display all the supported commands. 
Installing extensions for GREMLIN language v.2.6.0 
 
orientdb>

Запуск Studio — после запуска сервера вы можете использовать следующий URL ( http: // localhost: 2480 / ) в вашем браузере. Вы получите следующий скриншот.

Запуск студии

В винде

Выполните данную процедуру для проверки установки OrientDB в Windows.

Запуск сервера — Вы можете использовать следующую команду для запуска сервера.

> cd %ORIENTDB_HOME%\bin 
> ./server.bat

Если он успешно установлен, вы получите следующий вывод.

          .                                           
          .`        `                                  
          ,      `:.                                   
         `,`    ,:`                                    
         .,.   :,,    
		 .,,  ,,,                                      
    .    .,.:::::  ````                                 :::::::::     :::::::::    
    ,`   .::,,,,::.,,,,,,`;;                      .:    ::::::::::    :::    :::   
    `,.  ::,,,,,,,:.,,.`  `                       .:    :::      :::  :::     :::  
     ,,:,:,,,,,,,,::.   `        `         ``     .:    :::      :::  :::     :::  
      ,,:.,,,,,,,,,: `::, ,,   ::,::`   : :,::`  ::::   :::      :::  :::    :::   
       ,:,,,,,,,,,,::,:   ,,  :.    :   ::    :   .:    :::      :::  :::::::      
        :,,,,,,,,,,:,::   ,,  :      :  :     :   .:    :::      :::  :::::::::    
  `     :,,,,,,,,,,:,::,  ,, .::::::::  :     :   .:    :::      :::  :::     :::  
  `,...,,:,,,,,,,,,: .:,. ,, ,,         :     :   .:    :::      :::  :::     :::  
    .,,,,::,,,,,,,:  `: , ,,  :     `   :     :   .:    :::      :::  :::     :::  
      ...,::,,,,::.. `:  .,,  :,    :   :     :   .:    :::::::::::   :::     :::  
           ,::::,,,. `:   ,,   :::::    :     :   .:    :::::::::     ::::::::::   
           ,,:` `,,.                                   
          ,,,    .,`                                   
         ,,.     `,                                          GRAPH DATABASE   
       ``        `.                                                           
                 ``                                          orientdb.com 
                 `            
				 
2016-01-20 19:17:21:547 INFO  OrientDB auto-config DISKCACHE = 1,649MB 
   (heap = 494MB os = 4, 192MB disk = 199, 595MB) [orientechnologies] 
2016-01-20 19:17:21:816 INFO  Loading configuration from: 
   /opt/orientdb/config/orientdb-server-config.xml... 
   [OServerConfigurationLoaderXml] 
... 
2016-01-20 19:17:22:615 INFO  OrientDB Server v2.1.9-SNAPSHOT 
   (build 2.1.x@r; 2016-01-07 10:51:24+0000) is active. [OServer] 

Запуск консоли — Вы можете использовать следующую команду для запуска OrientDB из консоли.

> %ORIENTDB_HOME%\bin\console.bat 

Если он успешно установлен, вы получите следующий вывод.

OrientDB console v.2.1.9-SNAPSHOT (build 2.1.x@r; 2016-01-07 10:51:24+0000) www.orientdb.com 
Type 'help' to display all the supported commands. 
Installing extensions for GREMLIN language v.2.6.0 
 
orientdb\>

Запуск Studio — после запуска сервера вы можете использовать следующий URL ( http: // localhost: 2480 / ) в вашем браузере. Вы получите следующий скриншот.

Запуск студии

OrientDB — Основные понятия

Главная особенность OrientDB — поддержка многомодельных объектов, то есть он поддерживает различные модели, такие как Document, Graph, Key / Value и Real Object. Он содержит отдельный API для поддержки всех этих четырех моделей.

Модель документа

Терминология Модель документа принадлежит базе данных NoSQL. Это означает, что данные хранятся в Документах, а группа Документов называется Коллекцией . Технически, документ означает набор пар ключ / значение или также называется полями или свойствами.

OrientDB использует такие понятия, как классы, кластеры и ссылки, для хранения, группировки и анализа документов.

В следующей таблице показано сравнение между реляционной моделью, моделью документа и моделью документа OrientDB.

Реляционная модель Модель документа Модель документа OrientDB
Таблица Коллекция Класс или Кластер
Строка Документ Документ
колонка Пара ключ / значение Поле документа
отношения Недоступен Ссылка на сайт

Модель графика

Структура данных графа — это модель данных, которая может хранить данные в форме вершин (узлов), соединенных ребрами (дугами). Идея базы данных графа OrientDB возникла из графа свойств. Вершина и ребро являются основными артефактами модели Graph. Они содержат свойства, которые могут сделать их похожими на документы.

В следующей таблице показано сравнение между графовой моделью, реляционной моделью данных и графической моделью OrientDB.

Реляционная модель Модель графика Модель графа OrientDB
Таблица Класс вершин и ребер Класс, который расширяет «V» (для вершины) и «E» (для ребер)
Строка темя темя
колонка Свойство вершин и ребер Свойство вершин и ребер
отношения край край

Модель ключ / значение

Модель ключ / значение означает, что данные могут храниться в форме пары ключ / значение, где значения могут быть простых и сложных типов. Он может поддерживать документы и графические элементы в качестве значений.

В следующей таблице показано сравнение реляционной модели, модели ключ / значение и модели ключ / значение OrientDB.

Реляционная модель Модель ключ / значение OrientDB Key / Value Model
Таблица ведро Класс или Кластер
Строка Пара ключ / значение Документ
колонка Недоступен Поле документа или свойство Vertex / Edge
отношения Недоступен Ссылка на сайт

Модель объекта

Эта модель была унаследована объектно-ориентированным программированием и поддерживает наследование между типами (подтипы расширяют супертипы), полиморфизм при обращении к базовому классу и прямое связывание с / на объекты, используемые в языках программирования.

В следующей таблице показано сравнение между реляционной моделью, объектной моделью и объектной моделью OrientDB.

Реляционная модель Объектная модель OrientDB объектная модель
Таблица Учебный класс Класс или Кластер
Строка объект Документ или вершина
колонка Свойство объекта Поле документа или свойство Vertex / Edge
отношения Указатель Ссылка на сайт

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

запись

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

  • Документ
  • Запись байтов
  • темя
  • край

ID записи

Когда OrientDB генерирует запись, сервер базы данных автоматически назначает для записи идентификатор устройства, называемый RecordID (RID). RID выглядит как # <cluster>: <position>. <cluster> означает идентификационный номер кластера, а <position> означает абсолютную позицию записи в кластере.

документы

Документ является наиболее гибким типом записи, доступным в OrientDB. Документы имеют мягкую типизацию и определяются классами схемы с определенным ограничением, но вы также можете вставить документ без какой-либо схемы, т. Е. Он также поддерживает режим без схемы.

Документы могут быть легко обработаны путем экспорта и импорта в формате JSON. Например, взгляните на следующий образец документа JSON. Он определяет детали документа.

{ 
   "id"        : "1201", 
   "name"      : "Jay", 
   "job"       : "Developer", 
   "creations" : [ 
      { 
         "name"    : "Amiga", 
         "company" : "Commodore Inc." 
      }, 
		
      { 
         "name"    : "Amiga 500", 
         "company" : "Commodore Inc." 
      } 
   ] 
} 

RecordBytes

Тип записи совпадает с типом BLOB в RDBMS. OrientDB может загружать и хранить тип записи документа вместе с двоичными данными.

темя

База данных OrientDB — это не только база данных Document, но и база данных Graph. Новые концепции, такие как Vertex и Edge, используются для хранения данных в форме графика. В графовых базах данных основной единицей данных является узел, который в OrientDB называется вершиной. Vertex хранит информацию для базы данных.

край

Существует отдельный тип записи, называемый Edge, который соединяет одну вершину с другой. Края являются двунаправленными и могут соединять только две вершины. В OrientDB есть два типа ребер: один обычный, а другой легкий.

Учебный класс

Класс представляет собой тип модели данных и концепцию, взятую из парадигмы объектно-ориентированного программирования. На основе традиционной модели базы данных документов данные хранятся в форме коллекции, а в модели реляционной базы данных данные хранятся в таблицах. OrientDB следует API документа вместе с парадигмой OPPS. Как концепция, класс в OrientDB имеет наиболее тесную связь с таблицей в реляционных базах данных, но (в отличие от таблиц) классы могут быть без схемы, с полной схемой или смешанными. Классы могут наследовать от других классов, создавая деревья классов. Каждый класс имеет свой собственный кластер или кластеры (создаются по умолчанию, если они не определены).

кластер

Кластер — это важная концепция, которая используется для хранения записей, документов или вершин. Проще говоря, кластер — это место, где хранится группа записей. По умолчанию OrientDB создает один кластер для каждого класса. Все записи класса хранятся в одном кластере с тем же именем, что и класс. Вы можете создать до 32 767 (2 ^ 15-1) кластеров в базе данных.

Класс CREATE — это команда, используемая для создания кластера с определенным именем. После создания кластера вы можете использовать кластер для сохранения записей, указав имя при создании любой модели данных.

Отношения

OrientDB поддерживает два вида отношений: ссылочные и встроенные. Связанные отношения означают, что он хранит прямую ссылку на целевые объекты отношений. Встроенные отношения означают, что они хранят отношения в записи, которая их встраивает. Эти отношения сильнее, чем эталонные отношения.

База данных

База данных представляет собой интерфейс для доступа к реальному хранилищу. ИТ-специалисты понимают концепции высокого уровня, такие как запросы, схемы, метаданные, индексы и т. Д. OrientDB также предоставляет несколько типов баз данных. Для получения дополнительной информации об этих типах см. Типы базы данных.

OrientDB — Типы данных

OrientDB изначально поддерживает несколько типов данных. Ниже приводится полная таблица на том же.

Старший Тип Описание
1 логический

Обрабатывает только значения True или False.

Типы Java : java.lang.Boolean

Мин : 0

Макс : 1

2 целое число

32-разрядные целые числа со знаком.

Типы Java : java.lang.Interger

Мин . : -2 147 483 648

Макс . : +2 147 483 647

3 короткий

Маленькие 16-битные целые числа со знаком.

Типы Java : java.lang.short

Мин . : -32,768

Макс . : 32 767

4 Долго

Большие 64-битные целые числа со знаком.

Типы Java : java.lang.Long

Мин . : -2 63

Макс . : +2 63 -1

5 терка

Десятичные числа

Типы Java : java.lang.Float

: 2 -149

Макс . : ( 2-2-23 ) * 2, 127

6 двойной

Десятичные числа с высокой точностью.

Типы Java : Java.lang.Double.

Мин : 2 -1074

Макс . : (2-2 -52 ) * 2 1023

7 Дата-время

Любая дата с точностью до миллисекунд.

Типы Java : java.util.Date

8 строка

Любая строка в виде буквенно-цифровой последовательности символов.

Типы Java : java.lang.String

9 двоичный

Может содержать любое значение в виде байтового массива.

Типы Java : byte []

Мин : 0

Макс . : 2 147 483 647

10 внедренный

Запись содержится внутри владельца. Содержащаяся запись не имеет RecordId.

Типы Java : ORecord

11 Встроенный список

Записи содержатся внутри владельца. Содержащиеся записи не имеют RecordIds и доступны только при навигации по записи владельца.

Типы Java : список <объекты>

Мин : 0

Макс : 41 000 000 предметов

12 Встроенный набор

Записи содержатся внутри владельца. Содержащиеся записи не имеют RecordId и доступны только при навигации по записи владельца.

Типы Java : набор <объекты>

Мин : 0

Макс : 41 000 000 предметов

13 Встроенная карта

Записи содержатся внутри владельца в качестве значений записей, в то время как ключи могут быть только строками. Содержащиеся записи не имеют RecordId и доступны только при навигации по записи владельца.

Типы Java : Map <String, ORecord>

Мин : 0

Макс : 41 000 000 предметов

14 Ссылка на сайт

Ссылка на другую запись. Это общие отношения один к одному

Типы Java : ORID, <? расширяет ORecord>

Мин : 1

Макс . : 32767: 2 ^ 63-1

15 Список ссылок

Ссылки на другие записи. Это обычное отношение «один ко многим», когда хранятся только RecordIds.

Типы Java : список <? Расширяет ORecord>

Мин : 0

Макс : 41 000 000 предметов

16 Набор ссылок

Ссылки на другие записи. Это обычные отношения один ко многим.

Типы Java : Set <? расширяет ORecord>

Мин : 0

Макс : 41 000 000 предметов

17 Карта ссылок

Ссылки на другие записи в качестве значения записей, в то время как ключи могут быть только строками. Это обычные отношения один ко многим. Только RecordIds хранятся.

Типы Java : Map <String,? расширяет запись>

Мин : 0

Макс : 41 000 000 предметов

18 Байт

Одиночный байт. Полезно для хранения небольших 8-битных целых чисел со знаком.

Типы Java : java.lang.Byte

Мин : -128

Макс . : +127

19 преходящий Любое значение не хранится в базе данных.
20 Дата

Любая дата как год, месяц и день.

Типы Java : java.util.Date

21 изготовленный на заказ

Используется для хранения пользовательского типа, предоставляющего методы Marshall и Unmarshall.

Типы Java : OSerializableStream

Мин : 0

Макс : х

22 Десятичный

Десятичные числа без округления.

Типы Java : java.math.BigDecimal

23 LinkBag

Список RecordIds как определенный RidBag.

Типы Java : ORidBag

24 любой

Не определенный тип, используемый для указания коллекций смешанного типа, и ноль.

Обрабатывает только значения True или False.

Типы Java : java.lang.Boolean

Мин : 0

Макс : 1

32-разрядные целые числа со знаком.

Типы Java : java.lang.Interger

Мин . : -2 147 483 648

Макс . : +2 147 483 647

Маленькие 16-битные целые числа со знаком.

Типы Java : java.lang.short

Мин . : -32,768

Макс . : 32 767

Большие 64-битные целые числа со знаком.

Типы Java : java.lang.Long

Мин . : -2 63

Макс . : +2 63 -1

Десятичные числа

Типы Java : java.lang.Float

: 2 -149

Макс . : ( 2-2-23 ) * 2, 127

Десятичные числа с высокой точностью.

Типы Java : Java.lang.Double.

Мин : 2 -1074

Макс . : (2-2 -52 ) * 2 1023

Любая дата с точностью до миллисекунд.

Типы Java : java.util.Date

Любая строка в виде буквенно-цифровой последовательности символов.

Типы Java : java.lang.String

Может содержать любое значение в виде байтового массива.

Типы Java : byte []

Мин : 0

Макс . : 2 147 483 647

Запись содержится внутри владельца. Содержащаяся запись не имеет RecordId.

Типы Java : ORecord

Записи содержатся внутри владельца. Содержащиеся записи не имеют RecordIds и доступны только при навигации по записи владельца.

Типы Java : список <объекты>

Мин : 0

Макс : 41 000 000 предметов

Записи содержатся внутри владельца. Содержащиеся записи не имеют RecordId и доступны только при навигации по записи владельца.

Типы Java : набор <объекты>

Мин : 0

Макс : 41 000 000 предметов

Записи содержатся внутри владельца в качестве значений записей, в то время как ключи могут быть только строками. Содержащиеся записи не имеют RecordId и доступны только при навигации по записи владельца.

Типы Java : Map <String, ORecord>

Мин : 0

Макс : 41 000 000 предметов

Ссылка на другую запись. Это общие отношения один к одному

Типы Java : ORID, <? расширяет ORecord>

Мин : 1

Макс . : 32767: 2 ^ 63-1

Ссылки на другие записи. Это обычное отношение «один ко многим», когда хранятся только RecordIds.

Типы Java : список <? Расширяет ORecord>

Мин : 0

Макс : 41 000 000 предметов

Ссылки на другие записи. Это обычные отношения один ко многим.

Типы Java : Set <? расширяет ORecord>

Мин : 0

Макс : 41 000 000 предметов

Ссылки на другие записи в качестве значения записей, в то время как ключи могут быть только строками. Это обычные отношения один ко многим. Только RecordIds хранятся.

Типы Java : Map <String,? расширяет запись>

Мин : 0

Макс : 41 000 000 предметов

Одиночный байт. Полезно для хранения небольших 8-битных целых чисел со знаком.

Типы Java : java.lang.Byte

Мин : -128

Макс . : +127

Любая дата как год, месяц и день.

Типы Java : java.util.Date

Используется для хранения пользовательского типа, предоставляющего методы Marshall и Unmarshall.

Типы Java : OSerializableStream

Мин : 0

Макс : х

Десятичные числа без округления.

Типы Java : java.math.BigDecimal

Список RecordIds как определенный RidBag.

Типы Java : ORidBag

Не определенный тип, используемый для указания коллекций смешанного типа, и ноль.

В следующих главах обсуждается, как использовать эти типы данных в OrientDB.

OrientDB — Консольные режимы

OrientDB Console — это Java-приложение, созданное для работы с базами данных OrientDB и экземплярами сервера. OrientDB поддерживает несколько режимов консоли.

Интерактивный режим

Это режим «по умолчанию». Просто запустите консоль, выполнив следующий скрипт bin / console.sh (или bin / console.bat в системах MS Windows). Убедитесь, что у вас есть разрешение на исполнение.

OrientDB console v.1.6.6 www.orientechnologies.com 
Type 'help' to display all the commands supported.
  
orientdb>

После этого консоль готова принимать команды.

Пакетный режим

Для выполнения команд в пакетном режиме запустите следующий скрипт bin / console.sh (или bin / console.bat в системах MS Windows), передав все команды через точку с запятой «;».

orientdb> console.bat "connect remote:localhost/demo;select * from profile"

Или вызовите консольный сценарий, передавая имя файла в текстовом формате, содержащем список команд для выполнения. Команды должны быть разделены точкой с запятой «;».

пример

Command.txt содержит список команд, которые вы хотите выполнить через консоль OrientDB. Следующая команда принимает пакет команд из файла command.txt.

orientdb> console.bat commands.txt 

В пакетном режиме вы можете игнорировать ошибки, чтобы позволить сценарию продолжить выполнение, установив для переменной «ignoreErrors» значение true.

orientdb> set ignoreErrors true

Включить эхо

Когда вы запускаете консольные команды в конвейере, вам нужно будет их отобразить. Включите «эхо» команд, установив его как свойство в начале. Ниже приведен синтаксис для включения свойства echo в консоли OrientDB.

orientdb> set echo true

OrientDB — Создать базу данных

Справочник SQL базы данных OrientDB содержит несколько команд для создания, изменения и удаления баз данных.

Следующий оператор является основным синтаксисом команды Создать базу данных.

CREATE DATABASE <database-url> [<user> <password> <storage-type> [<db-type>]]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<database-url> — определяет URL базы данных. URL состоит из двух частей, одна из которых <mode>, а вторая — <path>.

<mode> — Определяет режим, т.е. локальный режим или удаленный режим.

<путь> — определяет путь к базе данных.

<пользователь> — определяет пользователя, которого вы хотите подключить к базе данных.

<пароль> — определяет пароль для подключения к базе данных.

<тип-хранилища> — определяет типы хранилищ. Вы можете выбрать между PLOCAL и MEMORY.

пример

Вы можете использовать следующую команду для создания локальной базы данных с именем demo.

Orientdb> CREATE DATABASE PLOCAL:/opt/orientdb/databses/demo

Если база данных успешно создана, вы получите следующий вывод.

Database created successfully. 
Current database is: plocal: /opt/orientdb/databases/demo

orientdb {db = demo}>

OrientDB — Изменить базу данных

База данных — это одна из важных моделей данных с различными атрибутами, которые вы можете изменять в соответствии с вашими требованиями.

Следующий оператор является основным синтаксисом команды Alter Database.

ALTER DATABASE <attribute-name> <attribute-value> 

Где <attribute-name> определяет атрибут, который вы хотите изменить, а <attributevalue> определяет значение, которое вы хотите установить для этого атрибута.

В следующей таблице приведен список поддерживаемых атрибутов для изменения базы данных.

Sr.No. имя атрибута Описание
1 СТАТУС Определяет состояние базы данных между различными атрибутами.
2 ИМПОРТ Устанавливает статус импорта.
3 DEFAULTCLUSTERID Устанавливает кластер по умолчанию, используя ID. По умолчанию это 2.
4 ФОРМАТ ДАТЫ Устанавливает конкретный формат даты по умолчанию. По умолчанию это «гггг-мм-дд».
5 DateTimeFormat Устанавливает конкретный формат даты и времени по умолчанию. По умолчанию это «гггг-мм-дд чч: мм: сс».
6 ЧАСОВОЙ ПОЯС Устанавливает конкретный часовой пояс. По умолчанию это часовой пояс виртуальной машины Java (JVM) по умолчанию.
7 LOCALECOUNTRY Устанавливает страну локали по умолчанию. По умолчанию это страна локали JVM по умолчанию. Например: «ГБ».
8 LOCALELANGUAGE Устанавливает язык локали по умолчанию. По умолчанию это язык локали JVM по умолчанию. Например: «en».
9 CHARSET Устанавливает тип набора символов. По умолчанию это кодировка JVM по умолчанию. Например: «utf8».
10 CLUSTERSELECTION Устанавливает стратегию по умолчанию, используемую для выбора кластера. Эти стратегии создаются вместе с созданием класса. Поддерживаются стратегии по умолчанию, циклический и сбалансированный.
11 MINIMUMCLUSTERS Устанавливает минимальное количество кластеров, создаваемых автоматически при создании нового класса. По умолчанию это 1.
12 CUSTOM Устанавливает пользовательское свойство.
13 ПРОВЕРКА Отключает или включает проверки для всей базы данных.

пример

В версии OrientDB-2.2 добавлен новый синтаксический анализатор SQL, который в некоторых случаях не позволяет использовать обычный синтаксис. Поэтому в некоторых случаях мы должны отключить новый синтаксический анализатор SQL (StrictSQL). Вы можете использовать следующую команду Alter database, чтобы отключить анализатор StrictSQL.

orientdb> ALTER DATABASE custom strictSQL = false 

Если команда выполнена успешно, вы получите следующий вывод.

Database updated successfully

OrientDB — Резервная копия базы данных

Как и RDBMS, OrientDB также поддерживает операции резервного копирования и восстановления. При выполнении операции резервного копирования все файлы текущей базы данных будут преобразованы в сжатый zip-формат с использованием алгоритма ZIP. Эту функцию (Резервное копирование) можно использовать автоматически, включив плагин Automatic-Backup для сервера.

Однако резервное копирование базы данных или экспорт базы данных — это то же самое, в зависимости от процедуры, которую мы должны знать, когда использовать резервное копирование и когда использовать экспорт.

При создании резервной копии будет создана согласованная копия базы данных, все дальнейшие операции записи заблокированы и ожидают завершения процесса резервного копирования. В этой операции он создаст файл резервной копии только для чтения.

Если вам требуется одновременная операция чтения и записи при создании резервной копии, вы должны выбрать экспорт базы данных, а не создание резервной копии базы данных. Экспорт не блокирует базу данных и позволяет выполнять параллельные записи во время процесса экспорта.

Следующее утверждение является основным синтаксисом резервного копирования базы данных.

./backup.sh <dburl> <user> <password> <destination> [<type>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<dburl> — URL базы данных, где база данных находится либо в локальной, либо в удаленной папке.

<пользователь> — указывает имя пользователя для запуска резервного копирования.

<пароль> — предоставляет пароль для конкретного пользователя.

<destination> — Местоположение файла назначения с указанием места хранения архива zip.

<тип> — необязательный тип резервной копии. У него есть один из двух вариантов.

  • По умолчанию — блокирует базу данных во время резервного копирования.

  • LVM — использует копирование при записи снимка LVM в фоновом режиме.

По умолчанию — блокирует базу данных во время резервного копирования.

LVM — использует копирование при записи снимка LVM в фоновом режиме.

пример

Сделайте резервную копию демонстрационной базы данных, которая находится в локальной файловой системе / opt / orientdb / database / demo, в файл с именем sample-demo.zip и находится в текущем каталоге.

Вы можете использовать следующую команду для создания резервной копии демо базы данных.

$ backup.sh plocal: opt/orientdb/database/demo admin admin ./backup-demo.zip 

Использование консоли

То же самое вы можете сделать с помощью консоли OrientDB. Прежде чем создавать резервную копию конкретной базы данных, вы должны сначала подключиться к базе данных. Вы можете использовать следующую команду для подключения к базе данных с именем demo.

orientdb> CONNECT PLOCAL:/opt/orientdb/databases/demo admin admin 

После подключения вы можете использовать следующую команду для резервного копирования базы данных в файл с именем ‘backup-demo.zip’ в текущем каталоге.

orientdb {db=demo}> BACKUP DATABASE ./backup-demo.zip 

Если эта команда выполнена успешно, вы получите несколько уведомлений об успехе вместе со следующим сообщением.

Backup executed in 0.30 seconds 

OrientDB — Восстановление базы данных

Как и RDBMS, OrientDB также поддерживает операцию восстановления. Только из режима консоли вы можете успешно выполнить эту операцию.

Следующее утверждение является основным синтаксисом для восстановления операции.

orientdb> RESTORE DATABSE <url of the backup zip file>

пример

Вы должны выполнять эту операцию только из режима консоли. Поэтому сначала вы должны запустить консоль OrientDB, используя следующую команду OrientDB.

$ orientdb

Затем подключитесь к соответствующей базе данных, чтобы восстановить резервную копию. Вы можете использовать следующую команду для подключения к базе данных с именем demo.

orientdb> CONNECT PLOCAL:/opt/orientdb/databases/demo admin admin

После успешного подключения вы можете использовать следующую команду для восстановления резервной копии из файла «backup-demo.zip». Перед выполнением убедитесь, что файл backup-demo.zip находится в текущем каталоге.

Orientdb {db = demo}> RESTORE DATABASE backup-demo.zip

Если эта команда выполнена успешно, вы получите несколько уведомлений об успехе вместе со следующим сообщением.

Database restored in 0.26 seconds 

OrientDB — подключить базу данных

В этой главе объясняется, как подключиться к определенной базе данных из командной строки OrientDB. Это открывает базу данных.

Следующее утверждение является основным синтаксисом команды Connect.

CONNECT <database-url> <user> <password>

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<database-url> — определяет URL базы данных. URL содержит две части, одна из которых <mode>, а вторая <path>.

<mode> — Определяет режим, т.е. локальный режим или удаленный режим.

<путь> — определяет путь к базе данных.

<пользователь> — определяет пользователя, которого вы хотите подключить к базе данных.

<пароль> — определяет пароль для подключения к базе данных.

пример

Мы уже создали базу данных с именем «demo» в предыдущих главах. В этом примере мы подключимся к этому, используя пользователя admin.

Вы можете использовать следующую команду для подключения к демонстрационной базе данных.

orientdb> CONNECT PLOCAL:/opt/orientdb/databases/demo admin admin

Если он успешно подключен, вы получите следующий вывод —

Connecting to database [plocal:/opt/orientdb/databases/demo] with user 'admin'…OK 
Orientdb {db = demo}>

OrientDB — отключить базу данных

В этой главе объясняется, как отключиться от конкретной базы данных из командной строки OrientDB. Закрывает открытую в данный момент базу данных.

Следующий оператор является основным синтаксисом команды Disconnect.

DISCONNECT

Примечание. Эту команду можно использовать только после подключения к конкретной базе данных, и она закроет только текущую базу данных.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Мы отключимся от демонстрационной базы данных.

Вы можете использовать следующую команду для отключения базы данных.

orientdb {db = demo}> DISCONNECT

Если он успешно отключен, вы получите следующий вывод —

Disconnecting to database [plocal:/opt/orientdb/databases/demo] with user 'admin'…OK 
orientdb>

OrientDB — Информационная база данных

В этой главе объясняется, как получить информацию о конкретной базе данных из командной строки OrientDB.

Следующее утверждение является основным синтаксисом команды Info.

info

Примечание. Эту команду можно использовать только после подключения к определенной базе данных, и она будет извлекать информацию только о текущей запущенной базе данных.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Мы получим основную информацию из демонстрационной базы данных.

Вы можете использовать следующую команду для отключения базы данных.

orientdb {db = demo}> info

Если он успешно отключен, вы получите следующий вывод.

Current database: demo (url = plocal:/opt/orientdb/databases/demo)
  
DATABASE PROPERTIES 
--------------------------------+---------------------------------------------+ 
 NAME                           | VALUE                                       | 
--------------------------------+---------------------------------------------+ 
 Name                           | null                                        | 
 Version                        | 14                                          | 
 Conflict Strategy              | version                                     | 
 Date format                    | yyyy-MM-dd                                  | 
 Datetime format                | yyyy-MM-dd HH:mm:ss                         | 
 Timezone                       | Asia/Kolkata                                | 
 Locale Country                 | IN                                          | 
 Locale Language                | en                                          | 
 Charset                        | UTF-8                                       | 
 Schema RID                     | #0:1                                        | 
 Index Manager RID              | #0:2                                        | 
 Dictionary RID                 | null                                        | 
--------------------------------+---------------------------------------------+

DATABASE CUSTOM PROPERTIES: 
 +-------------------------------+--------------------------------------------+ 
 | NAME                          | VALUE                                      | 
 +-------------------------------+--------------------------------------------+ 
 | strictSql                     | true                                       | 
 +-------------------------------+--------------------------------------------+  
CLUSTERS (collections) 
---------------------------------+-------+-------------------+----------------+ 
 NAME                            | ID    | CONFLICT STRATEGY | RECORDS        | 
---------------------------------+-------+-------------------+----------------+ 

OrientDB — Список базы данных

В этой главе объясняется, как получить список всех баз данных в экземпляре из командной строки OrientDB.

Следующее утверждение является основным синтаксисом команды info.

LIST DATABASES

Примечание. Эту команду можно использовать только после подключения к локальному или удаленному серверу.

пример

Прежде чем получить список баз данных, мы должны подключиться к серверу localhost через удаленный сервер. Необходимо напомнить, что имя пользователя и пароль для подключения к экземпляру localhost — это guest и guest соответственно, что настраивается в файле orintdb / config / orientdb-server-config.xml .

Вы можете использовать следующую команду для подключения к экземпляру сервера баз данных localhost.

orientdb> connect remote:localhost guest 

Это спросит пароль. В соответствии с файлом конфигурации пароль для гостя также является гостем. Если он успешно подключен, вы получите следующий вывод.

Connecting to remote Server instance [remote:localhost] with user 'guest'...OK 
orientdb {server = remote:localhost/}>

После подключения к серверу баз данных localhost вы можете использовать следующую команду для вывода списка баз данных.

orientdb {server = remote:localhost/}> list databases

Если он успешно выполнен, вы получите следующий вывод —

Found 6 databases: 
* demo (plocal) 
* s2 (plocal) 
* s1 (plocal) 
* GratefulDeadConcerts (plocal) 
* s3 (plocal) 
* sample (plocal) 
orientdb {server = remote:localhost/}>

OrientDB — База данных заморозки

Всякий раз, когда вы хотите сделать состояние базы данных статичным, это означает состояние, при котором база данных не реагировала ни на одну из операций чтения и записи. Проще говоря, база данных находится в состоянии замораживания.

В этой главе вы можете узнать, как заморозить базу данных из командной строки OrientDB.

Следующее утверждение является основным синтаксисом команды замораживания базы данных.

FREEZE DATABASE

Примечание. Эту команду можно использовать только после подключения к определенной базе данных в удаленной или локальной базе данных.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Мы заморозим эту базу данных из CLI.

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

Orientdb {db = demo}> FREEZE DATABASE

Если он успешно выполнен, вы получите следующий вывод.

Database 'demo' was frozen successfully

OrientDB — релиз базы данных

В этой главе вы можете узнать, как вывести базу данных из состояния замораживания с помощью командной строки OrientDB.

Следующее утверждение является основным синтаксисом команды Release database.

RELEASE DATABASE

Примечание. Эту команду можно использовать только после подключения к определенной базе данных, которая находится в состоянии замораживания.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Мы выпустим базу данных, которая была заблокирована в предыдущей главе.

Вы можете использовать следующую команду для освобождения базы данных.

Orientdb {db = demo}> RELEASE DATABASE

Если он успешно выполнен, вы получите следующий вывод.

Database 'demo' was release successfully 

OrientDB — база данных конфигурации

В этой главе вы можете научиться отображать конфигурацию конкретной базы данных через командную строку OrientDB. Эта команда применима как для локальных, так и для удаленных баз данных.

Информация о конфигурации содержит кеш по умолчанию, включен или нет, размер этого кеша, значение коэффициента загрузки, максимальный объем памяти для карты, размер страницы узла, минимальный и максимальный размер пула и т. Д.

Следующий оператор является основным синтаксисом команды config database.

CONFIG

Примечание. Эту команду можно использовать только после подключения к определенной базе данных.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе.

Вы можете использовать следующую команду для отображения конфигурации демонстрационной базы данных.

Orientdb {db = demo}> CONFIG

Если он успешно выполнен, вы получите следующий вывод.

LOCAL SERVER CONFIGURATION: 
+---------------------------------------+-------------------------+ 
| NAME                                  | VALUE                   | 
+---------------------------------------+-------------------------+ 
| environment.dumpCfgAtStartup          | false                   | 
| environment.concurrent                | true                    | 
| environment.allowJVMShutdown          | true                    | 
| script.pool.maxSize                   | 20                      | 
| memory.useUnsafe                      | true                    | 
| memory.directMemory.safeMode          | true                    | 
| memory.directMemory.trackMode         | false                   | 
|………………………………..                         |                         | 
| storage.lowestFreeListBound           | 16                      | 
| network.binary.debug                  | false                   | 
| network.http.maxLength                | 1000000                 | 
| network.http.charset                  | utf-8                   | 
| network.http.jsonResponseError        | true                    | 
| network.http.json                     | false                   | 
| tx.log.fileType                       | classic                 | 
| tx.log.synch                          | false                   | 
| tx.autoRetry                          | 1                       | 
| client.channel.minPool                | 1                       | 
| storage.keepOpen                      | true                    | 
| cache.local.enabled                   | true                    | 
+---------------------------------------+-------------------------+ 
orientdb {db = demo}>

В приведенном выше списке параметров конфигурации, если вы хотите изменить какое-либо значение параметра, вы можете легко сделать это из командной строки, используя config set и get command.

Набор настроек

Вы можете обновить значение переменной конфигурации с помощью команды CONFIG SET .

Следующее утверждение является основным синтаксисом команды config set.

CONFIG SET <config-variable> <config-value>

Примечание. Эту команду можно использовать только после подключения к определенной базе данных.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Мы изменим значение переменной ‘tx.autoRetry’ на 5.

Вы можете использовать следующую команду для настройки конфигурации демонстрационной базы данных.

orientdb {db = demo}> CONFIG SET tx.autoRetry 5 

Если он успешно выполнен, вы получите следующий вывод.

Local configuration value changed correctly

Config Get

Вы можете отобразить значение переменной конфигурации с помощью команды CONFIG GET .

Следующий оператор является основным синтаксисом команды config get.

CONFIG GET <config-variable> 

Примечание. Эту команду можно использовать только после подключения к определенной базе данных.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Мы попытаемся получить значение переменной ‘tx.autoRetry’.

Вы можете использовать следующую команду для отображения конфигурации демонстрационной базы данных.

orientdb {db = demo}> CONFIG GET tx.autoRetry

Если он успешно выполнен, вы получите следующий вывод.

Local configuration: tx.autoRetry = 5 

OrientDB — База данных экспорта

Как и RDBMS, OrientDB также предоставляет такие функции, как Экспорт и Импорт базы данных. OrientDB использует формат JSON для экспорта данных. По умолчанию команда экспорта использует алгоритм GZIP для сжатия файлов.

При экспорте базы данных она не блокируется, что означает, что вы можете выполнять параллельные операции чтения и записи на ней. Это также означает, что вы можете создать точную копию этих данных из-за одновременных операций чтения и записи.

В этой главе вы можете узнать, как экспортировать базу данных из командной строки OrientDB.

Следующий оператор является основным синтаксисом команды «Экспорт базы данных».

EXPORT DATABASE <output file>

Примечание. Эту команду можно использовать только после подключения к определенной базе данных.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Вы можете использовать следующую команду для экспорта базы данных в файл с именем «export-demo».

orientdb {db = demo}> EXPORT DATABASE ./export-demo.export

Если он успешно выполнен, он создаст файл с именем «export-demo.zip» или «exportdemo.gz» на основе операционной системы, и вы получите следующий вывод.

Exporting current database to: DATABASE /home/linuxtp/Desktop/demo.export in 
GZipped JSON format ...  

Started export of database 'demo' to /home/linuxtp/Desktop/demo.export.gz... 
Exporting database info...OK 
Exporting clusters...OK (12 clusters) 
Exporting schema...OK (11 classes) 
Exporting records... 
- Cluster 'internal' (id = 0)...OK (records = 3/3) 
- Cluster 'index' (id = 1)...OK (records = 0/0) 
- Cluster 'manindex' (id = 2)...OK (records = 0/0) 
- Cluster 'default' (id = 3)...OK (records = 0/0) 
- Cluster 'orole' (id = 4)...OK (records = 3/3) 
- Cluster 'ouser' (id = 5)...OK (records = 3/3) 
- Cluster 'ofunction' (id = 6)...OK (records = 0/0)
- Cluster 'oschedule' (id = 7)...OK (records = 0/0) 
- Cluster 'orids' (id = 8)...OK (records = 0/0) 
- Cluster 'v' (id = 9)...OK (records = 0/0) 
- Cluster 'e' (id = 10)...OK (records = 0/0) 
- Cluster '_studio' (id = 11)...OK (records = 1/1)  

Done. Exported 10 of total 10 records  

Exporting index info... 
- Index dictionary...OK 
- Index OUser.name...OK 
- Index ORole.name...OK 
OK (3 indexes) 
Exporting manual indexes content... 
- Exporting index dictionary ...OK (entries = 0) 
OK (1 manual indexes)  

Database export completed in 377ms 

OrientDB — База данных импорта

Всякий раз, когда вы хотите импортировать базу данных, вы должны использовать экспортированный файл в формате JSON, который генерируется командой экспорта.

В этой главе вы можете узнать, как импортировать базу данных из командной строки OrientDB.

Следующий оператор является основным синтаксисом команды Импорт базы данных.

IMPORT DATABASE <input file> 

Примечание. Эту команду можно использовать только после подключения к определенной базе данных.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Вы можете использовать следующую команду для импорта базы данных в файл с именем «export-demo.gz».

orientdb {db = demo}> IMPORT DATABASE ./export-demo.export.gz

Если он успешно выполнен, вы получите следующий вывод вместе с успешным уведомлением.

Database import completed in 11612ms

OrientDB — коммит базы данных

Подобно RDBMS, OrientDB также предоставляет такие концепции транзакций, как Commit и Rollback. Фиксация означает закрытие транзакции путем сохранения всех изменений в базе данных. Откат относится к восстановлению состояния базы данных до точки, в которой вы открыли транзакцию.

Следующее утверждение является основным синтаксисом команды «Зафиксировать базу данных».

COMMIT 

Примечание. Эту команду можно использовать только после подключения к определенной базе данных и после начала транзакции.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Мы увидим операцию фиксации транзакции и сохранения записи с использованием транзакций.

Сначала запустите транзакцию, используя следующую команду BEGIN .

orientdb {db = demo}> BEGIN

Затем вставьте запись в таблицу сотрудников со значениями id = 12 и name = satish.P с помощью следующей команды.

orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')

Вы можете использовать следующую команду для подтверждения транзакции.

orientdb> commit

Если эта транзакция успешно зафиксирована, вы получите следующий вывод.

Transaction 2 has been committed in 4ms

OrientDB — база данных отката

В этой главе вы узнаете, как откатить незафиксированные транзакции через интерфейс командной строки OrientDB.

Следующий оператор является основным синтаксисом команды базы данных Rollback.

ROLLBACK

Примечание. Эту команду можно использовать только после подключения к определенной базе данных и после начала транзакции.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Мы увидим операцию отката транзакции и сохраним запись с помощью транзакции.

Сначала запустите транзакцию, используя следующую команду BEGIN .

orientdb {db = demo}> BEGIN

Затем вставьте запись в таблицу сотрудников со значениями id = 12 и name = satish.P с помощью следующей команды.

orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')

Вы можете использовать следующую команду для извлечения записей из таблицы Employee.

orientdb> SELECT FROM employee WHERE name LIKE '%.P'

Если эта команда выполнена успешно, вы получите следующий вывод.

---+-------+-------------------- 
 # | ID   | name 
---+-------+-------------------- 
 0 | 12   | satish.P 
---+-------+-------------------- 
1 item(s) found. Query executed in 0.076 sec(s). 

Теперь вы можете использовать следующую команду для отката этой транзакции.

orientdb> ROLLBACK

Снова проверьте запрос на выборку, чтобы получить ту же запись из таблицы сотрудников.

orientdb> SELECT FROM employee WHERE name LIKE '%.P'

Если откат выполнен успешно, вы получите 0 записей, найденных в выходных данных.

0 item(s) found. Query executed in 0.037 sec(s). 

OrientDB — Оптимизировать базу данных

Согласно технической терминологии, Оптимизация означает «Достижение максимально возможной производительности в кратчайшие сроки». Что касается базы данных, оптимизация включает в себя максимизацию скорости и эффективности извлечения данных.

OrientDB поддерживает легкие ребра, что означает прямую связь между объектами данных. Проще говоря, это отношение поля к полю. OrientDB предоставляет различные способы оптимизации базы данных. Он поддерживает преобразование обычных ребер в легкие ребра.

Следующий оператор является основным синтаксисом команды «Оптимизировать базу данных».

OPTMIZE DATABASE [-lwedges] [-noverbose] 

Где lwedges преобразует обычные ребра в облегченные ребра, а noverbose отключает вывод.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Вы можете использовать следующую команду оптимизации базы данных.

OPTIMIZE DATABASE -lwedges

Если он успешно выполнен, вы получите несколько успешных уведомлений вместе с сообщением о завершении.

Database Optimization completed in 35ms

OrientDB — Удалить базу данных

Как и в RDBMS, OrientDB предоставляет функцию удаления базы данных. Удаление базы данных означает полное удаление базы данных.

Следующий оператор является основным синтаксисом команды удаления базы данных.

DROP DATABASE [<database-name> <server-username> <server-user-password>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<имя-базы-данных> — имя базы данных, которую вы хотите удалить.

<имя-сервера> — имя пользователя базы данных, который имеет право удалить базу данных.

<server-user-password> — пароль конкретного пользователя.

пример

Существует два способа удалить базу данных: один — удалить открытую в данный момент базу данных, а второй — удалить конкретную базу данных, указав определенное имя.

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе. Вы можете использовать следующую команду, чтобы удалить демонстрацию базы данных.

orientdb {db = demo}> DROP DATABASE

Если эта команда успешно выполнена, вы получите следующий вывод.

Database 'demo' deleted successfully

ИЛИ ЖЕ

Вы можете использовать другую команду для удаления базы данных следующим образом.

orientdb> DROP DATABASE PLOCAL:/opt/orientdb/databases/demo admin admin 

Если эта команда успешно выполнена, вы получите следующий вывод.

Database 'demo' deleted successfully 

OrientDB — Вставить запись

OrientDB — это база данных NoSQL, которая может хранить документы и графически-ориентированные данные. База данных NoSQL не содержит таблицы, так как вы можете вставить данные в виде записи. Здесь вы можете увидеть данные таблицы в виде классов, свойств, вершин и ребер, означающих, что классы похожи на таблицы, а свойства — на файлы в таблицах.

Мы можем определить все эти объекты, используя схему в OrientDB. Данные свойства могут быть вставлены в класс. Команда Вставка создает новую запись в схеме базы данных. Записи могут быть без схемы или следовать определенным правилам.

Следующий оператор является основным синтаксисом команды «Вставить запись».

INSERT INTO [class:]<class>|cluster:<cluster>|index:<index> 
   [(<field>[,]*) VALUES (<expression>[,]*)[,]*]| 
   [SET <field> = <expression>|<sub-command>[,]*]| 
   [CONTENT {<JSON>}] 
   [RETURN <expression>]  
   [FROM <query>] 

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

SET — Определяет каждое поле вместе со значением.

CONTENT — определяет данные JSON для установки значений поля. Это необязательно.

RETURN — Определяет выражение для возврата вместо количества вставленных записей. Наиболее распространенные варианты использования —

  • @rid — возвращает идентификатор записи новой записи.

  • @this — возвращает всю новую запись.

@rid — возвращает идентификатор записи новой записи.

@this — возвращает всю новую запись.

ОТ — Где вы хотите вставить запись или набор результатов.

пример

Давайте рассмотрим таблицу Customer со следующими полями и типами.

Sr.No. Имя поля Тип
1 Я бы целое число
2 название строка
3 Возраст целое число

Вы можете создать схему (таблицу), выполнив следующие команды.

CREATE DATABASE PLOCAL:/opt/orientdb/databases/sales 
CREATE CLASS Customer 
CREATE PROPERTY Customer.id integer 
CREATE PROPERTY Customer.name String 
CREATE PROPERTY Customer.age integer

После выполнения всех команд вы получите имя таблицы Customer с полями id, name и age. Вы можете проверить таблицу, выполнив запрос select в таблице Customer.

OrientDB предоставляет различные способы вставки записи. Рассмотрим следующую таблицу Customer, содержащую примеры записей.

Sr.No. название Возраст
1 Сатиш 25
2 Кришна 26
3 Киран 29
4 Javeed 21
5 Раджа 29

Следующая команда должна вставить первую запись в таблицу Customer.

INSERT INTO Customer (id, name, age) VALUES (01,'satish', 25) 

Если вышеуказанная команда успешно выполнена, вы получите следующий вывод.

Inserted record 'Customer#11:0{id:1,name:satish,age:25} v1' in 0.069000 sec(s). 

Следующая команда вставляет вторую запись в таблицу Customer.

INSERT INTO Customer SET id = 02, name = 'krishna', age = 26 

Если вышеуказанная команда успешно выполнена, вы получите следующий вывод.

Inserted record 'Customer#11:1{id:2,age:26,name:krishna} v1' in 0.005000 sec(s).

Следующая команда должна вставить третью запись в таблицу Customer.

INSERT INTO Customer CONTENT {"id": "03", "name": "kiran", "age": "29"}

Если вышеуказанная команда успешно выполнена, вы получите следующий вывод.

Inserted record 'Customer#11:2{id:3,name:kiran,age:29} v1' in 0.004000 sec(s).

Следующая команда должна вставить следующие две записи в таблицу Customer.

INSERT INTO Customer (id, name, age) VALUES (04,'javeed', 21), (05,'raja', 29) 

Если вышеуказанная команда успешно выполнена, вы получите следующий вывод.

Inserted record '[Customer#11:3{id:4,name:javeed,age:21} v1,
Customer#11:4{id:5,name:raja,age:29} v1]' in 0.007000 sec(s).

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

SELECT FROM Customer

Если вышеуказанная команда успешно выполнена, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:0|Customer|1   |satish |25   
1   |#11:1|Customer|2   |krishna|26   
2   |#11:2|Customer|3   |kiran  |29 
3   |#11:3|Customer|4   |javeed |21 
4   |#11:4|Customer|5   |raja   |29   
----+-----+--------+----+-------+---- 

OrientDB — Показать записи

Подобно RDBMS, OrientDB поддерживает различные типы SQL-запросов для извлечения записей из базы данных. При извлечении записей у нас есть различные варианты или варианты запросов вместе с оператором select.

Следующее утверждение является основным синтаксисом команды SELECT.

SELECT [ <Projections> ] [ FROM <Target> [ LET <Assignment>* ] ] 
   [ WHERE <Condition>* ] 
   [ GROUP BY <Field>* ] 
   [ ORDER BY <Fields>* [ ASC|DESC ] * ] 
   [ UNWIND <Field>* ] 
   [ SKIP <SkipRecords> ] 
   [ LIMIT <MaxRecords> ] 
   [ FETCHPLAN <FetchPlan> ] 
   [ TIMEOUT <Timeout> [ <STRATEGY> ] ]
   [ LOCK default|record ] 
   [ PARALLEL ] 
   [ NOCACHE ] 

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<Проекции> — указывает данные, которые вы хотите извлечь из запроса как набор записей результатов.

FROM — указывает объект для запроса. Это может быть класс, кластер, один идентификатор записи, набор идентификаторов записи. Вы можете указать все эти объекты в качестве цели.

WHERE — Определяет условие для фильтрации набора результатов.

LET — указывает переменную контекста, которая используется в проекциях, условиях или подзапросах.

GROUP BY — указывает поле для группировки записей.

ORDER BY — указывает поле, чтобы упорядочить запись по порядку.

UNWIND — Обозначает поле, в котором нужно раскрутить коллекцию записей.

SKIP — Определяет количество записей, которые вы хотите пропустить с начала набора результатов.

LIMIT — указывает максимальное количество записей в наборе результатов.

FETCHPLAN — определяет стратегию, определяющую, как вы хотите получать результаты.

TIMEOUT — Определяет максимальное время в миллисекундах для запроса.

LOCK — Определяет стратегию блокировки. DEFAULT и RECORD — доступные стратегии блокировки.

PARALLEL — выполняет запрос к параллельным потокам ‘x’.

NOCACHE — определяет, хотите ли вы использовать кеш или нет.

пример

Давайте рассмотрим следующую таблицу Customer, созданную в предыдущей главе.

Sr.No. название Возраст
1 Сатиш 25
2 Кришна 26
3 Киран 29
4 Javeed 21
5 Раджа 29

Попробуйте разные запросы на выборку, чтобы получить записи данных из таблицы Customer.

Способ 1 — Вы можете использовать следующий запрос, чтобы выбрать все записи из таблицы Customer.

orientdb {db = demo}> SELECT FROM Customer 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:0|Customer|1   |satish |25   
1   |#11:1|Customer|2   |krishna|26   
2   |#11:2|Customer|3   |kiran  |29 
3   |#11:3|Customer|4   |javeed |21 
4   |#11:4|Customer|5   |raja   |29   
----+-----+--------+----+-------+----

Способ 2. Выберите все записи, название которых начинается с буквы « k ».

orientdb {db = demo}> SELECT FROM Customer WHERE name LIKE 'k%'

ИЛИ вы можете использовать следующий запрос для приведенного выше примера.

orientdb {db = demo}> SELECT FROM Customer WHERE name.left(1) = 'k'

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:1|Customer|2   |krishna|26   
1   |#11:2|Customer|3   |kiran  |29 
----+-----+--------+----+-------+----

Способ 3 — Выберите id, имя записи из таблицы Customer с именами в верхнем регистре.

orientdb {db = demo}> SELECT id, name.toUpperCase() FROM Customer

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+--------+----+------- 
#   |@CLASS  |id  |name     
----+--------+----+------- 
0   |null    |1   |SATISH   
1   |null    |2   |KRISHNA  
2   |null    |3   |KIRAN   
3   |null    |4   |JAVEED  
4   |null    |5   |RAJA      
----+--------+----+------- 

Метод 4 — Выберите все записи из таблицы клиентов, где возраст находится в диапазоне от 25 до 29.

orientdb {db = demo}> SELECT FROM Customer WHERE age in [25,29]

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:0|Customer|1   |satish |25   
1   |#11:2|Customer|3   |kiran  |29 
2   |#11:4|Customer|5   |raja   |29   
----+-----+--------+----+-------+---- 

Метод 5 — Выберите все записи из таблицы клиентов, где любое поле содержит слово «sh».

orientdb {db = demo}> SELECT FROM Customer WHERE ANY() LIKE '%sh%' 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:0|Customer|1   |satish |25   
1   |#11:1|Customer|2   |krishna|26   
----+-----+--------+----+-------+---- 

Метод 6 — Выберите все записи из таблицы клиентов, упорядоченные по возрасту в порядке убывания.

orientdb {db = demo}> SELECT FROM Customer ORDER BY age DESC 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:2|Customer|3   |kiran  |29 
1   |#11:4|Customer|5   |raja   |29   
2   |#11:1|Customer|2   |krishna|26   
3   |#11:0|Customer|1   |satish |25   
4   |#11:3|Customer|4   |javeed |21 
----+-----+--------+----+-------+---- 

OrientDB — Загрузить запись

Load Record используется для загрузки определенной записи из схемы. Загрузить запись загрузит запись с помощью Record ID. Он представлен символом @rid в наборе результатов.

Следующий оператор является основным синтаксисом команды LOAD Record.

LOAD RECORD <record-id> 

Где <record-id> определяет идентификатор записи, которую вы хотите загрузить.

Если вы не знаете идентификатор записи конкретной записи, то вы можете выполнить любой запрос к таблице. В наборе результатов вы найдете идентификатор записи (@rid) соответствующей записи.

пример

Давайте рассмотрим ту же таблицу Customer, которую мы использовали в предыдущих главах.

Sr.No. название Возраст
1 Сатиш 25
2 Кришна 26
3 Киран 29
4 Javeed 21
5 Раджа 29

Попробуйте следующий запрос, чтобы получить запись с идентификатором записи @rid: # 11: 0 .

orientdb {db = demo}> LOAD RECORD #11:0 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

+---------------------------------------------------------------------------+ 
| Document - @class: Customer        @rid: #11:0           @version: 1      | 
+---------------------------------------------------------------------------+ 
|                     Name | Value                                          | 
+---------------------------------------------------------------------------+ 
|                       id | 1                                              | 
|                     name | satish                                         | 
|                      age | 25                                             | 
+---------------------------------------------------------------------------+ 

OrientDB — Перезагрузить запись

Перезагрузка записи также работает аналогично команде «Загрузить запись» и также используется для загрузки определенной записи из схемы. Загрузить запись загрузит запись с помощью Record ID. Он представлен символом @rid в наборе результатов. Основное отличие состоит в том, что перезаписываемая запись игнорирует кэш, что полезно, когда для изменения записи применяются внешние параллельные транзакции. Это даст последнее обновление.

Следующий оператор является основным синтаксисом команды RELOAD Record.

RELOAD RECORD <record-id>

Где <record-id> определяет идентификатор записи, которую вы хотите перезагрузить.

Если вы не знаете идентификатор записи конкретной записи, то вы можете выполнить любой запрос к таблице. В наборе результатов вы найдете идентификатор записи (@rid) соответствующей записи.

пример

Давайте рассмотрим ту же таблицу Customer, которую мы использовали в предыдущей главе.

Sr.No. название Возраст
1 Сатиш 25
2 Кришна 26
3 Киран 29
4 Javeed 21
5 Раджа 29

Попробуйте следующий запрос, чтобы получить запись с идентификатором записи @rid: # 11: 0 .

orientdb {db = demo}> LOAD RECORD #11:0 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

+---------------------------------------------------------------------------+ 
| Document - @class: Customer        @rid: #11:0           @version: 1      | 
+---------------------------------------------------------------------------+ 
|                     Name | Value                                          | 
+---------------------------------------------------------------------------+ 
|                       id | 1                                              | 
|                     name | satish                                         | 
|                      age | 25                                             | 
+---------------------------------------------------------------------------+ 

OrientDB — Экспортная запись

Экспорт записи — это команда, используемая для экспорта загруженной записи в запрошенный и поддерживаемый формат. Если вы выполняете любой неправильный синтаксис, он выдаст список поддерживаемых форматов. OrientDB — это семейство баз данных Document, поэтому JSON является поддерживаемым форматом по умолчанию.

Следующий оператор является основным синтаксисом команды «Экспорт записи».

EXPORT RECORD <format> 

Где <Format> определяет формат, который вы хотите получить запись.

Примечание. Команда Export будет экспортировать загруженную запись на основе идентификатора записи.

пример

Давайте рассмотрим ту же таблицу Customer, которую мы использовали в предыдущей главе.

Sr.No. название Возраст
1 Сатиш 25
2 Кришна 26
3 Киран 29
4 Javeed 21
5 Раджа 29

Попробуйте следующий запрос, чтобы получить запись с идентификатором записи @rid: # 11: 0 .

orientdb {db = demo}> LOAD RECORD #11:0

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

+---------------------------------------------------------------------------+ 
| Document - @class: Customer        @rid: #11:0           @version: 1      | 
+---------------------------------------------------------------------------+ 
|                     Name | Value                                          | 
+---------------------------------------------------------------------------+ 
|                       id | 1                                              | 
|                     name | satish                                         | 
|                      age | 25                                             | 
+---------------------------------------------------------------------------+ 

Используйте следующий запрос для экспорта загруженной записи (# 11: 0) в формат JSON.

orientdb {db = demo}> EXPORT RECORD json 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

{ 
   "@type": "d", 
      "@rid": "#11:0", 
   "@version": 1, 
   "@class": "Customer", 
      "id": 1, 
      "name": "satish", 
      "age": 25 
}

OrientDB — Обновить запись

Команда Обновить запись используется для изменения значения конкретной записи. SET — это основная команда для обновления значения определенного поля.

Следующее утверждение является основным синтаксисом команды Update.

UPDATE <class>|cluster:<cluster>|<recordID> 
   [SET|INCREMENT|ADD|REMOVE|PUT <field-name> = <field-value>[,]*] |[CONTENT| MERGE <JSON>] 
   [UPSERT] 
   [RETURN <returning> [<returning-expression>]] 
   [WHERE <conditions>] 
   [LOCK default|record] 
   [LIMIT <max-records>] [TIMEOUT <timeout>] 

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

SET — определяет поле для обновления.

INCREMENT — увеличивает значение указанного поля на указанное значение.

ДОБАВИТЬ — Добавляет новый элемент в поля коллекции.

УДАЛИТЬ — Удаляет элемент из поля коллекции.

PUT — помещает запись в поле карты.

CONTENT — заменяет содержимое записи содержимым документа JSON.

MERGE — объединяет содержимое записи с документом JSON.

LOCK — указывает, как заблокировать записи между загрузкой и обновлением. У нас есть два варианта указать Default и Record .

UPSERT — обновляет запись, если она существует, или вставляет новую запись, если ее нет. Это помогает в выполнении одного запроса вместо выполнения двух запросов.

ВОЗВРАТ — Указывает выражение для возврата вместо количества записей.

LIMIT — определяет максимальное количество записей для обновления.

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

пример

Давайте рассмотрим ту же таблицу Customer, которую мы использовали в предыдущей главе.

Sr.No. название Возраст
1 Сатиш 25
2 Кришна 26
3 Киран 29
4 Javeed 21
5 Раджа 29

Попробуйте следующий запрос, чтобы обновить возраст клиента «Раджа».

Orientdb {db = demo}> UPDATE Customer SET age = 28 WHERE name = 'Raja'

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Updated 1 record(s) in 0.008000 sec(s).

Для проверки записи таблицы Customer вы можете использовать следующий запрос.

orientdb {db = demo}> SELECT FROM Customer 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:0|Customer|1   |satish |25   
1   |#11:1|Customer|2   |krishna|26   
2   |#11:2|Customer|3   |kiran  |29 
3   |#11:3|Customer|4   |javeed |21 
4   |#11:4|Customer|5   |raja   |28   
----+-----+--------+----+-------+---- 

OrientDB — Усеченная запись

Команда « Усеченная запись» используется для удаления значений определенной записи.

Следующий оператор является основным синтаксисом команды Truncate.

TRUNCATE RECORD <rid>* 

Где <rid> * указывает идентификатор записи для усечения. Вы можете использовать несколько Rids, разделенных запятой, чтобы обрезать несколько записей. Возвращает количество усеченных записей.

пример

Давайте рассмотрим ту же таблицу Customer, которую мы использовали в предыдущей главе.

Sr.No. название Возраст
1 Сатиш 25
2 Кришна 26
3 Киран 29
4 Javeed 21
5 Раджа 28

Попробуйте следующий запрос, чтобы обрезать запись с идентификатором записи # 11: 4.

Orientdb {db = demo}> TRUNCATE RECORD #11:4

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Truncated 1 record(s) in 0.008000 sec(s).

Для проверки записи таблицы Customer вы можете использовать следующий запрос.

Orientdb {db = demo}> SELECT FROM Customer

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:0|Customer|1   |satish |25   
1   |#11:1|Customer|2   |krishna|26   
2   |#11:2|Customer|3   |kiran  |29 
3   |#11:3|Customer|4   |javeed |21 
----+-----+--------+----+-------+----

OrientDB — Удалить запись

Команда « Удалить запись» используется для полного удаления одной или нескольких записей из базы данных.

Следующее утверждение является основным синтаксисом команды Delete.

DELETE FROM <Class>|cluster:<cluster>|index:<index> 
   [LOCK <default|record>] 
   [RETURN <returning>] 
   [WHERE <Condition>*] 
   [LIMIT <MaxRecords>] 
   [TIMEOUT <timeout>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

LOCK — указывает, как заблокировать записи между загрузкой и обновлением. У нас есть два варианта указать Default и Record .

ВОЗВРАТ — Указывает выражение для возврата вместо количества записей.

LIMIT — определяет максимальное количество записей для обновления.

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

Примечание. Не используйте DELETE для удаления вершин или краев, поскольку это влияет на целостность графика.

пример

Давайте рассмотрим таблицу клиентов.

Sr.No. название Возраст
1 Сатиш 25
2 Кришна 26
3 Киран 29
4 Javeed 21

Попробуйте следующий запрос, чтобы удалить запись с id = 4.

orientdb {db = demo}> DELETE FROM Customer WHERE id = 4

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Delete 1 record(s) in 0.008000 sec(s).

Для проверки записи таблицы Customer вы можете использовать следующий запрос.

Orientdb {db = demo}> SELECT FROM Customer

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+-----+--------+----+-------+---- 
#   |@RID |@CLASS  |id  |name   |age  
----+-----+--------+----+-------+---- 
0   |#11:0|Customer|1   |satish |25   
1   |#11:1|Customer|2   |krishna|26   
2   |#11:2|Customer|3   |kiran  |29 
----+-----+--------+----+-------+---- 

OrientDB — Создать класс

OrientDB поддерживает многомодельные функции и предоставляет различные способы подхода и понимания основных концепций базы данных. Однако мы можем легко получить доступ к этим моделям с точки зрения API базы данных документов. Как и RDBMS, OrientDB также использует запись в качестве элемента хранения, но использует тип документа. Документы хранятся в виде пар ключ / значение. Мы храним поля и свойства как пары ключ / значение, которые принадлежат классу понятий.

Класс — это тип модели данных, и концепция взята из парадигмы объектно-ориентированного программирования. На основе традиционной модели базы данных документов данные хранятся в виде коллекции, а в данных модели реляционной базы данных — в таблицах. OrientDB следует API документа вместе с парадигмой OPPS. Как концепция, класс в OrientDB имеет наиболее тесную связь с таблицей в реляционных базах данных, но (в отличие от таблиц) классы могут быть без схемы, с полной схемой или смешанными. Классы могут наследовать от других классов, создавая деревья классов. Каждый класс имеет свой собственный кластер или кластеры (создаются по умолчанию, если они не определены).

Следующее утверждение является основным синтаксисом команды создания класса.

CREATE CLASS <class> 
[EXTENDS <super-class>] 
[CLUSTER <cluster-id>*] 
[CLUSTERS <total-cluster-number>] 
[ABSTRACT]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<class> — Определяет имя класса, который вы хотите создать.

<суперкласс> — определяет суперкласс, который вы хотите расширить с помощью этого класса.

<total-cluster-number> — определяет общее количество кластеров, используемых в этом классе. По умолчанию 1.

ABSTARCT — Определяет класс абстрактный. Это необязательно.

пример

Как уже говорилось, класс — это понятие, связанное с таблицей. Поэтому здесь мы создадим таблицу Account. Однако при создании класса мы не можем определять поля, т. Е. Свойства, основанные на парадигме OOPS.

Следующая команда предназначена для создания класса с именем Account.

orientdb> CREATE CLASS Account

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Class created successfully 

Вы можете использовать следующую команду для создания класса Car, который распространяется на класс Vehicle .

orientdb> CREATE CLASS Car EXTENDS Vehicle 

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Class created successfully

Вы можете использовать следующую команду для создания класса Person как абстрактного.

orientdb> CREATE CLASS Person ABSTRACT 

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Class created successfully 

Примечание. Без свойств этот класс бесполезен и не может построить реальный объект. В следующих главах вы можете узнать, как создавать свойства для определенного класса.

OrientDB — Альтер Класс

Класс и свойство в OrientDB используются для построения схемы с соответствующими атрибутами, такими как имя класса, суперкласс, кластер, количество кластеров, аннотация и т. Д. Если вы хотите изменить или обновить любой атрибут существующих классов в схеме, то Вы должны использовать команду Alter Class .

Следующее утверждение является основным синтаксисом команды Alter Class.

ALTER CLASS <class> <attribute-name> <attribute-value> 

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<class> — Определяет имя класса.

<имя-атрибута> — определяет атрибут, который вы хотите изменить.

<attribute-value> — Определяет значение, которое вы хотите установить для атрибута.

Следующая таблица определяет список атрибутов, которые поддерживают команду Alter Class.

атрибут Тип Описание
НАЗВАНИЕ строка Изменяет имя класса.
КОРОТКОЕ ИМЯ строка Определяет короткое имя (то есть псевдоним) для класса. Используйте NULL, чтобы удалить назначение короткого имени.
суперкласса строка Определяет суперкласс для класса. Чтобы добавить новый класс, вы можете использовать синтаксис + <класс>, чтобы удалить его, используйте — <класс>.
OVERSIZE Десятичное число Определяет коэффициент увеличения.
ADDCLUSTER строка Добавляет кластер в класс. Если кластер не существует, он создает физический кластер. Добавление кластеров в класс также полезно при хранении записей на распределенных серверах.
REMOVECLUSTER строка Удаляет кластер из класса. Он не удаляет кластер, а только удаляет его из класса.
StrictMode Включает или отключает строгий режим. В строгом режиме вы работаете в режиме полной схемы и не можете добавлять новые свойства в запись, если они являются частью определения схемы класса.
CLUSTERSELECTION Определяет стратегию выбора при выборе кластера, который он использует для новых записей.
CUSTOM Определяет пользовательские свойства. Имена и значения свойств должны соответствовать синтаксису <propertyname> = <value> без пробелов между именем и значением.
АННОТАЦИЯ логический Преобразует класс в абстрактный класс или наоборот.

пример

Давайте попробуем несколько примеров, которые обновят или модифицируют атрибуты существующего класса.

Следующий запрос используется для определения суперкласса «Персона» для существующего класса «Сотрудник».

orientdb> ALTER CLASS Employee SUPERCLASS Person

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Class altered successfully

Следующий запрос используется для добавления суперкласса «Person» для существующего класса «Employee».

orientdb> ALTER CLASS Employee SUPERCLASS +Person 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Class altered successfully 

OrientDB — усеченный класс

Класс Truncate удалит все записи кластеров, определенных как часть класса. В OrientDB каждый класс имеет связанный кластер с тем же именем. Если вы также хотите удалить все записи из иерархии классов, вам нужно использовать ключевое слово POLYMORPHIC.

Следующее утверждение является основным синтаксисом Truncate Class Command.

TRUNCATE CLASS <class> [ POLYMORPHIC ] [ UNSAFE ]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<класс> — Определяет класс, который вы хотите усечь.

POLYMORPHIC — Определяет, усекает ли команда также иерархию.

UNSAFE — Определяет усечение команды в классе вершин или ребер.

пример

Следующий запрос для усечения класса Profile .

orientdb> TRUNCATE CLASS Profile

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Class truncated successfully 

OrientDB — Drop Class

Команда Drop Class удаляет класс из схемы. Важно обращать внимание и поддерживать последовательную схему. Например, избегайте удаления классов, которые являются суперклассами других. Связанный кластер не будет удален.

Следующее утверждение является основным синтаксисом команды Drop Class.

DROP CLASS <class> 

Оставьте класс с именем класса.

пример

Попробуйте следующий запрос, чтобы удалить класс Employee.

Orientdb> DROP CLASS Employee

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Class dropped successfully

OrientDB — Создать кластер

Кластер — это важная концепция в OrientDB, которая используется для хранения записей, документов или вершин. Проще говоря, кластер — это место, где хранится группа записей. По умолчанию OrientDB создает один кластер для каждого класса. Все записи класса хранятся в одном кластере, имя которого совпадает с именем класса. Вы можете создать до 32 767 (2 ^ 15-1) кластеров в базе данных.

Класс CREATE — это команда, используемая для создания кластера с определенным именем. После создания кластера вы можете использовать кластер для сохранения записей, указав имя во время создания любой модели данных. Если вы хотите добавить новый кластер в класс, используйте команды Alter Class и ADDCLUSTER.

Следующий оператор является основным синтаксисом команды Создать кластер.

CREATE CLUSTER <cluster> [ID <cluster-id>] 

Где <cluster> определяет имя кластера, который вы хотите создать, а <cluster-id> определяет числовой идентификатор, который вы хотите использовать для кластера.

В следующей таблице приведен список стратегий выбора кластера.

Sr.No. Стратегия и описание
1

По умолчанию

Выбирает кластер, используя свойство класса по умолчанию ClusterId.

2

По-круговой

Выбирает следующий кластер в круговом порядке. Перезапуск после завершения.

3

уравновешенный

Выбирает самый маленький кластер. Позволяет классу сбалансировать все базовые кластеры по размеру. При добавлении нового кластера в существующий класс он сначала заполняет новый кластер.

По умолчанию

Выбирает кластер, используя свойство класса по умолчанию ClusterId.

По-круговой

Выбирает следующий кластер в круговом порядке. Перезапуск после завершения.

уравновешенный

Выбирает самый маленький кластер. Позволяет классу сбалансировать все базовые кластеры по размеру. При добавлении нового кластера в существующий класс он сначала заполняет новый кластер.

пример

Давайте рассмотрим пример создания кластера с именем sales.

orientdb> CREATE CLUSTER sales 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Cluster created correctly with id #12 

OrientDB — Alter Cluster

Команда Alter Cluster предназначена для обновления атрибутов в существующем кластере. В этой главе вы можете узнать, как добавить или изменить атрибуты кластера.

Следующее утверждение является основным синтаксисом команды Alter Cluster.

ALTER CLUSTER <cluster> <attribute-name> <attribute-value> 

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<cluster> — определяет имя кластера.

<имя-атрибута> — определяет атрибут, который вы хотите изменить.

<attribute-value> — определяет значение, которое вы хотите установить для этого атрибута.

В следующем табличном формате представлен список поддерживаемых атрибутов, которые можно использовать вместе с командой «Изменить кластер».

название Тип Описание
НАЗВАНИЕ строка Изменяет имя кластера.
СТАТУС строка Изменяет состояние кластера. Допустимые значения: ONLINE и OFFLINE. По умолчанию кластеры находятся в сети.
СЖАТИЕ строка Определяет тип сжатия для использования. Допустимые значения: NOTHING, SNAPPY, GZIP и любые другие типы сжатия, зарегистрированные в классе OCompressionFactory.
USE_WAL логический Определяет, использует ли он журнал, когда OrientDB работает с кластером
RECORD_GROW_FACTO R целое число Определяет коэффициент роста для экономии места при создании записи. Это может оказаться полезным при обновлении записи с дополнительной информацией.
RECORD_OVERFLOW_GR OW_FACTOR целое число Определяет фактор роста на обновлениях. Когда он достигает предела размера, использует этот параметр, чтобы получить больше места (фактор> 1).
CONFLICTSTRATEGY строка Определяет стратегию, которую он использует для обработки конфликтов в случае, если OrientDB MVCC находит обновление или операцию удаления, выполняемую со старой записью.

В следующей таблице приведен список стратегий конфликтов.

Sr.No. Стратегия и описание
1

Версия

Выдает исключение, когда версии разные. Это значение по умолчанию.

2

содержание

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

3

Automerge

Объединяет изменения.

Версия

Выдает исключение, когда версии разные. Это значение по умолчанию.

содержание

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

Automerge

Объединяет изменения.

пример

Попробуйте следующие примеры запросов, чтобы узнать команду Alter cluster.

Выполните следующую команду, чтобы изменить имя кластера с Employee на Employee2.

orientdb {db = demo}> ALTER CLUSTER Employee NAME Employee2

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Cluster updated successfully 

Выполните следующую команду, чтобы изменить имя кластера с Employee2 на Employee, используя идентификатор кластера.

orientdb {db = demo}> ALTER CLUSTER 12 NAME Employee 

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Cluster updated successfully

Выполните следующую команду, чтобы изменить стратегию конфликта кластеров на автоматическое объединение.

orientdb {db = demo}> ALTER CLUSTER V CONFICTSTRATEGY automerge 

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Cluster updated successfully 

OrientDB — Усеченный кластер

Команда Truncate Cluster удаляет все записи кластера.

Следующее утверждение является основным синтаксисом Truncate Cluster Command.

TRUNCATE CLUSTER <cluster-name>

Где <имя-кластера> — это имя кластера.

пример

Попробуйте следующий запрос, чтобы усечь кластер с именем sales.

Orientdb {db = demo}> TRUNCATE CLUSTER Profile

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Cluster truncated successfully.

OrientDB — Drop Cluster

Команда Drop Cluster удаляет кластер и все связанное с ним содержимое. Эта операция является постоянной и откатной.

Следующее утверждение является основным синтаксисом команды Drop Cluster.

DROP CLUSTER <cluster-name>|<cluster-id>

Где <имя-кластера> определяет имя кластера, который вы хотите удалить, а <идентификатор-кластера> определяет идентификатор кластера, который вы хотите удалить.

пример

Попробуйте следующую команду, чтобы удалить кластер продаж.

orientdb> DROP CLUSTER Sales 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Cluster dropped successfully

OrientDB — Создать свойство

Свойство в OrientDB работает как поле класса и столбца в таблице базы данных. Создать свойство — это команда, используемая для создания свойства для определенного класса. Имя класса, которое вы использовали в команде, должно существовать.

Следующий оператор является основным синтаксисом команды Create Property.

CREATE PROPERTY <class-name>.<property-name> <property-type> [<linked-type>][ <linked-class>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<class-name> — Определяет класс, в котором вы хотите создать свойство.

<property-name> — Определяет логическое имя свойства.

<property-type> — Определяет тип свойства, которое вы хотите создать.

<связанный тип> — определяет тип контейнера, используемый в типе свойства контейнера.

<связанный класс> — определяет класс контейнера, используемый в типе свойства контейнера.

В следующей таблице представлен тип данных для свойства, чтобы OrientDB знал тип данных для хранения.

БУЛЕВЫ INTEGER КОРОТКАЯ ДОЛГО
FLOAT ДАТА STRING ВСТРОЕННЫЙ
ССЫЛКА НА САЙТ БАЙТ BINARY DOUBLE

В дополнение к этому есть несколько других типов свойств, которые работают как контейнеры.

EMBEDDEDLIST EMBEDDEDSET EMBEDDEDMAP
LINKLIST группа каналы LINKMAP

пример

Попробуйте следующий пример для создания имени свойства в классе Employee типа String.

orientdb> CREATE PROPERTY Employee.name STRING

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Property created successfully with id = 1 

OrientDB — Изменить свойство

Alter Property — это команда, используемая для изменения или обновления свойства определенного класса. Изменение свойства означает изменение полей таблицы. В этой главе вы можете узнать, как обновить свойство.

Следующее утверждение является основным синтаксисом команды Alter Property Command.

ALTER PROPERTY <class>.<property> <attribute-name> <attribute-value>

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<класс> — определяет класс, к которому относится свойство.

<свойство> — определяет свойство, которое вы хотите обновить.

<имя-атрибута> — определяет атрибут свойства, которое вы хотите обновить.

<attribute-value> — Определяет значение, которое вы хотите установить для атрибута.

Следующая таблица определяет список атрибутов для изменения свойства.

атрибут Тип Описание
LINKEDCLASS строка Определяет имя связанного класса. Используйте NULL, чтобы удалить существующее значение.
LINKEDTYPE строка Определяет тип ссылки. Используйте NULL, чтобы удалить существующее значение.
MIN целое число Определяет минимальное значение в качестве ограничения. Используйте NULL, чтобы удалить существующее ограничение.
ОБЯЗАТЕЛЬНЫЙ логический Определяет, требуется ли свойству значение.
МАКСИМУМ целое число Определяет максимальное значение в качестве ограничения. Используйте NULL, чтобы удалить существующее ограничение.
НАЗВАНИЕ строка Определяет имя свойства.
НЕНУЛЕВОЙ логический Определяет, может ли свойство иметь значение NULL.
REGEX строка Определяет регулярное выражение как ограничение. Используйте NULL, чтобы удалить существующее ограничение.
ТИП строка Определяет тип свойства.
СОРТИРОВКА строка Устанавливает сопоставление для одной из определенных стратегий сравнения. По умолчанию он установлен с учетом регистра (cs). Вы также можете установить его без учета регистра (ci).
READONLY логический Определяет, является ли значение свойства неизменным. То есть, если это возможно изменить после первого назначения. Используйте с DEFAULT, чтобы иметь неизменные значения при создании.
CUSTOM строка Определяет пользовательские свойства. Синтаксис для пользовательских свойств: <custom-name> = <custom-value>, такой как стереотип = значок.
ДЕФОЛТ Определяет значение или функцию по умолчанию.

Примечание. Если вы изменяете NAME или TYPE, обновление этой команды займет некоторое время, в зависимости от объема данных.

пример

Попробуйте несколько вопросов, которые приведены ниже, чтобы понять свойство Alter.

Выполните следующий запрос, чтобы изменить имя свойства с ‘age’ на ‘born’ в классе Customer.

orinetdb {db = demo}> ALTER PROPERTY Customer.age NAME born

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Property altered successfully 

Выполните следующий запрос, чтобы сделать name как обязательное свойство класса Customer.

orientdb {db = demo}> ALTER PROPERTY Customer.name MANDATORY TRUE

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Property altered successfully

OrientDB — свойство Drop

Команда свойства Drop удаляет свойство из схемы. Он не удаляет значения свойств из записи, он просто меняет схему.

Следующее утверждение является основным синтаксисом команды Drop Property.

DROP PROPERTY <class>.<property> [FORCE] 

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<класс> — определяет класс, в котором существует свойство.

<свойство> — Определяет свойство, которое вы хотите удалить.

[Force] — если в свойстве определены один или несколько индексов.

пример

Попробуйте следующую команду, чтобы удалить свойство age из класса «Customer».

orientdb> DROP PROPERTY Customer.age 

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Property dropped successfully 

OrientDB — Создать вершину

База данных OrientDB — это не только база данных Document, но и база данных Graph. Новые концепции, такие как Vertex и Edge, используются для хранения данных в форме графика. Это применяет полиморфизм на вершинах. Базовый класс для Vertex — V.

В этой главе вы можете узнать, как создать вершину для хранения данных графа.

Следующее утверждение является основным синтаксисом команды создания вершины.

CREATE VERTEX [<class>] [CLUSTER <cluster>] [SET <field> = <expression>[,]*]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<класс> — определяет класс, к которому принадлежит вершина.

<cluster> — определяет кластер, в котором хранится вершина.

<field> — определяет поле, которое вы хотите установить.

<выражение> — определяет экспресс для поля.

пример

Попробуйте следующий пример, чтобы понять, как создать вершину.

Выполните следующий запрос, чтобы создать вершину без ‘name’ и для базового класса V.

orientdb> CREATE VERTEX

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Created vertex 'V#9:0 v1' in 0.118000 sec(s)

Выполните следующий запрос, чтобы создать новый класс вершин с именем v1, затем создайте вершину в этом классе.

orientdb> CREATE CLASS V1 EXTENDS V 
orientdb> CREATE VERTEX V1

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Created vertex 'V1#14:0 v1' in 0.004000 sec(s)

Выполните следующий запрос, чтобы создать новую вершину класса с именем v1, определив его свойства, такие как brand = ‘Maruti’ и name = ‘Swift’.

orientdb> CREATE VERTEX V1 SET brand = 'maruti', name = 'swift'

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Created vertex 'V1#14:1{brand:maruti,name:swift} v1' in 0.004000 sec(s) 

OrientDB — Переместить Вершина

Команда «Переместить вершину» в OrientDB предназначена для перемещения одной или нескольких вершин из текущего местоположения в другой класс или кластер. Если вы применяете команду перемещения к определенной вершине, она обновит все ребра, связанные с этой вершиной. Если вы указываете кластер для перемещения вершины, он перемещает вершины к владельцу сервера целевого кластера.

Следующее утверждение является основным синтаксисом команды Move Vertex.

MOVE VERTEX <source> TO <destination> 
[SET [<field>=<value>]* [,]] 
[MERGE <JSON>] 
[BATCH <batch-size>] 

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<источник> — определяет вершину, которую вы хотите переместить. Он принимает идентификатор записи конкретной вершины или массив идентификаторов записи для вершин.

<назначение> — определяет, куда вы хотите переместить вершину. Он поддерживает либо класс, либо кластер в качестве пункта назначения.

SET — Устанавливает значения в поля.

MERGE — устанавливает значения для полей через JSON.

BATCH — Определяет размер партии.

Примечание. Эта команда обновляет все связанные ребра, но не ссылки. При использовании Graph API рекомендуется использовать ребро, связанное с вершинами.

пример

Попробуйте следующие примеры, чтобы узнать, как перемещать вершины.

Выполните следующий запрос, чтобы переместить одну вершину с идентификатором записи # 11: 2 из ее текущей позиции в Class Employee.

orientdb> MOVE VERTEX #11:2 TO CLASS:Employee

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод:

Move vertex command executed with result '[{old:#11:2, new:#13:0}]' in 0.022000 sec(s)

Выполните следующий запрос, чтобы переместить множество вершин из класса «Клиент» в класс «Сотрудник».

orientdb> MOVE VERTEX (SELECT FROM Customer) TO CLASS:Employee 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Move vertex command executed with result '[{old:#11:0, 
new:#13:1},{old:#11:1, new:#13:2},{old:#11:2, new:#13:3}]' in 0.011000 sec(s)

OrientDB — Удалить вершину

Команда Delete Vertex используется для удаления вершин из базы данных. При удалении он проверяет и поддерживает согласованность с краями и удаляет все перекрестные ссылки (с краями) на удаленную вершину.

Следующее утверждение является основным синтаксисом команды удаления вершины.

DELETE VERTEX <vertex> [WHERE <conditions>] 
[LIMIT <MaxRecords>>] [BATCH <batch-size>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<vertex> — Определяет вершину, которую вы хотите удалить, используя ее Class, Record ID или через подзапрос.

WHERE — фильтрует условие, чтобы определить, какие записи удаляет команда.

LIMIT — определяет максимальное количество записей, которые будут удалены.

BATCH — определяет, сколько записей удаляет команда за раз, что позволяет разбивать большие транзакции на более мелкие блоки, чтобы сэкономить на использовании памяти.

пример

Попробуйте следующую команду, чтобы узнать, как удалить одну или несколько вершин.

Выполните следующую команду, чтобы удалить вершину «# 14: 1».

orientdb> DELETE VERTEX #14:1

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Delete record(s) '1' in 0.005000 sec(s)

Выполните следующую команду, чтобы удалить все вершины из класса «Клиент», помеченные свойством «isSpam».

orientdb> DELETE VERTEX Customer WHERE isSpam = TRUE 

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Delete record(s) '3' in 0.005000 sec(s)

OrientDB — Создать край

В OrientDB концепция Edge работает как отношение между вершинами с помощью некоторых свойств. Ребра и вершины являются основными компонентами графовой базы данных. Это применяет полиморфизм на краях. Базовым классом для Edge является E. При реализации ребер, если исходные или конечные вершины отсутствуют или не существуют, транзакция будет иметь откат.

Следующее утверждение является основным синтаксисом команды Create Edge.

CREATE EDGE <class> [CLUSTER <cluster>] FROM <rid>|(<query>)|[<rid>]* TO <rid>|(<query>)|[<rid>]* 
     [SET <field> = <expression>[,]*]|CONTENT {<JSON>} 
     [RETRY <retry> [WAIT <pauseBetweenRetriesInMs]] [BATCH <batch-size>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<класс> — определяет имя класса для ребра.

<cluster> — определяет кластер, в котором вы хотите сохранить ребро.

JSON — Предоставляет содержимое JSON для установки в качестве записи.

RETRY — определяет количество повторных попыток в случае конфликта.

WAIT — Определяет время задержки между повторными попытками в миллисекундах.

BATCH — Определяет, разбивает ли команда на более мелкие блоки и размер пакетов.

пример

Выполните следующий запрос, чтобы создать ребро E между двумя вершинами # 9: 0 и # 14: 0.

orientdb> CREATE EDGE FROM #11:4 TO #13:2

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Created edge '[e[#10:0][#9:0->#14:0]]' in 0.012000 sec(s)

Выполните следующий запрос, чтобы создать новый тип ребра и ребро нового типа.

orientdb> CREATE CLASS E1 EXTENDS E 
orientdb> CREATE EDGE E1 FROM #10:3 TO #11:4

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Created edge '[e[#10:1][#10:3->#11:4]]' in 0.011000 sec(s) 

OrientDB — обновить Edge

Команда обновления края используется для обновления граничных записей в текущей базе данных. Это эквивалентно действительной команде обновления в дополнение к проверке и поддержанию согласованности графа с вершинами, если вы обновите свойства out и in .

Следующее утверждение является основным синтаксисом команды Update Edge.

UPDATE EDGE <edge>  
   [SET|INCREMENT|ADD|REMOVE|PUT <field-name> = <field-value> [,]*]|[CONTENT|MERGE <JSON>] 
   [RETURN <returning> [<returning-expression>]] 
   [WHERE <conditions>] 
   [LOCK default|record] 
   [LIMIT <max-records>] [TIMEOUT <timeout>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<edge> — Определяет ребро, которое вы хотите обновить. Вы можете выбрать между Class, который обновляет ребра по классу, Cluster, который обновляет ребра по кластеру, используя префикс CLUSTER, или ID записи, который обновляет ребра по идентификатору записи.

SET — обновляет поле до заданных значений.

INCREMENT — Увеличивает данное поле на значение.

ДОБАВИТЬ — определяет элемент для добавления в коллекцию полей.

УДАЛИТЬ — определяет элемент, который необходимо удалить из коллекции полей.

PUT — определяет запись для размещения в полях карты.

RETURN — определяет выражение, которое вы хотите вернуть после запуска обновления.

WHERE — Определяет условие фильтра.

LOCK — Определяет, как запись блокируется между загрузкой и обновлениями.

LIMIT — определяет максимальное количество записей.

пример

Давайте рассмотрим пример обновления ребра с именем ‘address’ в классе person, взяв данные из таблицы адресов, имеющей область Id = 001 и имя человека = Krishna.

orientdb> UPDATE EDGE address SET out = (SELECT FROM Address WHERE areaID = 001) 
WHERE name = 'krishna'

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Updated edge '[address[#10:3][#11:3->#14:2]]' in 0.012000 sec(s)

OrientDB — Удалить край

Команда удаления ребра используется для удаления базы данных. Это эквивалентно команде delete с добавлением проверки и поддержания согласованности с вершинами путем удаления всех перекрестных ссылок на ребро как из свойств вершин «in», так и «out».

Следующий оператор является основным синтаксисом команды Delete Edge.

DELETE EDGE  
   ( <rid> 
      | 
      [<rid> (, <rid>)*] 
      | 
      ( [ FROM (<rid> | <select_statement> ) ] [ TO ( <rid> | <select_statement> ) ] ) 
      | 
      [<class>]  
   ( 
      [WHERE <conditions>] 
      [LIMIT <MaxRecords>]  
      [BATCH <batch-size>]
   ))
   

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

FROM — Определяет начальную точку вершины ребра для удаления.

Кому — Определяет конечную точку вершины ребра для удаления.

WHERE — определяет условия фильтрации.

LIMIT — определяет максимальное количество ребер для удаления.

BATCH — Определяет размер блока для операции.

пример

Попробуйте следующие примеры, чтобы узнать, как удалять края.

Выполните следующий запрос, чтобы удалить ребро между двумя вершинами (# 11: 2, # 11: 10). Но может быть шанс, что между двумя вершинами может существовать одно или несколько ребер. Так что мы используем свойство date для правильной функциональности. Этот запрос удалит ребра, созданные на 2015-01-15 и позже.

orientdb {db = demo}> DELETE EDGE FROM #11:2 TO #11:10 WHERE date >= "2012-01-15" 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Delete record(s) '2' in 0.00200 sec(s)

Выполните следующий запрос, чтобы удалить ребра, начиная с вершины «# 11: 5» до вершины «# 11: 10» и связанные с «class = Customer».

orientdb {db = demo}> DELETE EDGE FROM #11:5 TO #11:10 WHERE @class = 'Customer' 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Delete record(s) '2' in 0.00200 sec(s)

OrientDB — Функции

В этой главе дается полное описание различных типов функций в OrientDB. Следующая таблица определяет список функций, которые классифицируются по их функциональности.

Функции графика

Из():

Получает смежные исходящие вершины, начиная с текущей записи как Vertex.

Синтаксис — out ([<label-1>] [, <label-n>] *)

В():

Получает смежные входящие вершины, начиная с текущей записи как Vertex.

Синтаксис — в ([<label-1>] [, <label-n>] *)

И то и другое():

Получает смежные исходящие и входящие вершины, начиная с текущей записи как Vertex.

Синтаксис — оба ([<label1>] [, <label-n>] *)

Oute ():

Получает смежные исходящие ребра, начиная с текущей записи как Vertex.

Синтаксис — outE ([<label1>] [, <label-n>] *)

в Е ():

Получает смежные входящие ребра, начиная с текущей записи как Vertex.

Синтаксис — inE ([<label1>] [, <label-n>] *)

Боте ():

Получает смежные исходящие и входящие ребра, начиная с текущей записи как Vertex.

Синтаксис — BothE ([<label1>] [, <label-n>] *)

OUTV ():

Получает исходящие вершины, начиная с текущей записи как Edge.

Синтаксис — outV ()

ОБР ():

Получить входящие вершины из текущей записи как Edge.

Синтаксис — inV ()

traversedElement ():

Возвращает пройденный элемент (ы) в командах перемещения.

Синтаксис — traversedElement (<индекс> [, <элементы>])

traversedVertex ():

Вернуть пройденную вершину (и) в командах перемещения.

Синтаксис — traversedVertex (<индекс> [, <элементы>])

traversedEdge ():

Возвращает пройденный край (ы) в командах перемещения.

Синтаксис — traversedEdge (<индекс> [, <элементы>])

shortestPath ():

Возвращает кратчайший путь между двумя вершинами. Направление может быть OUT (по умолчанию), IN или ОБА.

SynatxshorttestPath (<sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]]))

Дейкстра ():

Возвращает самый дешевый путь между двумя вершинами, используя алгоритм Дейкстры.

Синтаксис — dijkstra (<sourceVertex>, <destinationVertex>, <weightEdgeFieldName> [, <direction>])

Попробуйте некоторые графовые функции вместе со следующими запросами.

Выполните следующий запрос, чтобы получить все исходящие вершины из всех вершин транспортного средства.

orientdb {db = demo}>SELECT out() from Vehicle

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

---+----------+--------- 
 # | @class   | out 
---+----------+--------- 
 0 | Vehicle  | #11:2 
 1 | Vehicle  | #13:1 
 2 | Vehicle  | #13:4 
---+----------+--------- 

Выполните следующий запрос, чтобы получить как входящие, так и исходящие вершины из вершины № 11: 3.

orientdb {db = demo}>SELECT both() FROM #11:3 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

---+----------+--------+------- 
 # | @class   | out    | in  
---+----------+--------+------- 
 0 | Vehicle  | #13:2  | #10:2   
 ---+----------+-------+-------

Математические функции

Eval ():

Оценивает выражение между кавычками (или двойными кавычками).

Синтаксис — eval (‘<выражение>’)

мин ():

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

Синтаксис — мин. (<Поле> [, <поле-n>] *)

Максимум():

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

Синтаксис — max (<поле> [, <поле-n>] *)

сумма ()

Возвращает сумму всех возвращенных значений.

Синтаксис — сумма (<поле>)

абс ():

Возвращает абсолютное значение. Работает с Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null.

Синтаксис — abs (<поле>)

ср ():

Возвращает среднее значение.

Синтаксис — avg (<поле>)

кол():

Подсчитывает запись, которая соответствует условию запроса. Если * не используется в качестве поля, то запись будет учитываться, только если содержимое не равно нулю.

Синтаксис — количество (<поле>)

Режим():

Возвращает значение, которое встречается с наибольшей частотой. Нули игнорируются при расчете.

Синтаксис — режим (<поле>)

медиана ():

Возвращает среднее значение или интерполированное значение, представляющее среднее значение после сортировки значений. Нули игнорируются при расчете.

Синтаксис — медиана (<поле>)

процентиль ():

Возвращает n-й процентиль. Нуль игнорируется в расчете.

Синтаксис — процентиль (<поле> [, <квантиль-n>] *)

дисперсия ()

Возвращает среднюю дисперсию: среднее значение квадрата разницы от среднего.

Синтаксис — дисперсия (<поле>)

StdDev ()

Возвращает стандартное отклонение: мера разброса значений. Нули игнорируются при расчете.

Синтаксис — stddev (<поле>)

Попробуйте некоторые математические функции, используя следующие запросы.

Выполните следующий запрос, чтобы получить сумму зарплат всех сотрудников.

orientdb {db = demo}>SELECT SUM(salary) FROM Employee 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

---+----------+--------- 
 # | @CLASS   | sum 
---+----------+--------- 
 0 | null     | 150000 
---+----------+---------

Выполните следующий запрос, чтобы получить среднюю зарплату всех сотрудников.

orientdb {db = demo}>SELECT avg(salary) FROM Employee

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

---+----------+--------- 
 # | @CLASS   | avg 
---+----------+--------- 
 0 | null     | 25 
---+----------+--------- 

Коллекции Функции

задавать():

Добавляет значение в набор. Если значение является коллекцией, то оно объединяется с набором, в противном случае добавляется <значение>.

Синтаксис — установить (<поле>)

карта():

Добавляет значение к карте при первом создании карты. Если <значение> является картой, то она объединяется с картой, в противном случае пара <ключ> и <значение> добавляется на карту как новая запись.

Синтаксис — карта (<ключ>, <значение>)

IST ():

Добавляет значение в список при первом создании списка. Если <значение> является коллекцией, то она объединяется со списком, в противном случае <значение> добавляется в список.

Синтаксис — список (<поле>)

разность ():

Работает как совокупный или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняется и возвращает РАЗНИЦУ между коллекциями, полученными в качестве параметров.

Синтаксис — разница (<поле> [, <поле-n>] *)

первый():

Извлекает только первый элемент многозначных полей (массивы, коллекции и карты). Для не многозначных типов просто возвращает значение.

Синтаксис — первый (<поле>)

пересекаются ():

Работает как совокупный или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняет и возвращает ВЗАИМОДЕЙСТВИЕ коллекций, полученных в качестве параметров.

Синтаксис — пересечение (<field> [, <field-n>] *)

различны ():

Извлекает только уникальные записи данных в зависимости от поля, которое вы указали в качестве аргумента. Основное отличие от стандартного SQL DISTINCT состоит в том, что с OrientDB можно указывать функцию с круглыми скобками и только одно поле.

Синтаксис — отличный (<поле>)

развернуть ():

Эта функция имеет два значения:

При использовании в поле коллекции он раскручивает коллекцию в поле и использует ее в качестве результата.

При использовании в поле ссылки (RID) он расширяет документ, на который указывает эта ссылка.

Синтаксис — развернуть (<поле>)

unionall ():

Работает как совокупный или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняется и возвращает UNION всех коллекций, полученных в качестве параметров. Также работает без сбора значений.

Синтаксис — unionall (<поле> [, <поле-n>] *)

расплющить ():

Извлекает коллекцию в поле и использует ее как результат. Это устарело, используйте взамен expand ().

Синтаксис — выравнивание (<поле>)

прошлой():

Извлекает только последний элемент многозначных полей (массивы, коллекции и карты). Для не многозначных типов просто возвращает значение.

Синтаксис — последний (<поле>)

симметрическая разность ():

Работает как совокупный или встроенный. Если передается только один аргумент, то агрегирует, в противном случае выполняет и возвращает СИММЕТРИЧЕСКУЮ РАЗНИЦУ между коллекциями, полученными в качестве параметров.

Синтаксис —mmetricDifference (<поле> [, <поле-n>] *)

Попробуйте некоторые функции сбора, используя следующие запросы.

Выполните следующий запрос, чтобы получить набор учителей, преподающих 9-й класс.

orientdb {db = demo}>SELECT ID, set(teacher.id) AS teacherID from classess where class_id = 9 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

---+----------+--------+-------------------------- 
 # | @CLASS   | id     | TeacherID 
---+----------+--------+-------------------------- 
 0 | null     | 9     |   1201, 1202, 1205, 1208 
---+----------+-------+---------------------------

Разные Функции

Дата():

Возвращает дату форматирования строки. <date-as-string> — это дата в строковом формате, а <format> — это формат даты, соответствующий этим правилам.

Синтаксис — дата (<дата-как-строка> [<формат>] [, <часовой пояс>])

SYSDATE ():

Возвращает текущую дату и время.

Синтаксис — sysdate ([<format>] [, <часовой пояс>])

формат():

Форматирует значение с использованием соглашений String.format ().

Синтаксис — формат (<формат> [, <arg1>] (, <arg-n>] *. Md)

расстояние():

Возвращает расстояние между двумя точками на земном шаре с использованием алгоритма Хаверсайна. Координаты должны быть градусами.

Синтаксис — расстояние (<x-field>, <y-field>, <x-value>, <y-value>)

IFNULL ():

Возвращает переданное поле / значение (или необязательный параметр return_value_if_not_null). Если поле / значение не нулевое, оно возвращает return_value_if_null.

Синтаксис — ifnull (<поле | значение>, <return_value_if_null> [, <return_value_if_not_null>] (, <поле & .md # 124; значение>] *)

сливаться ():

Возвращает первое поле / значение, а не нулевой параметр. Если никакое поле / значение не равно нулю, возвращает ноль.

Синтаксис coalesce (<поле | значение> [, <поле-n | значение-n>] *)

UUID ():

Генерирует UUID как 128-битное значение, используя вариант Лича-Зальца.

Синтаксис — uuid ()

если():

Оценивает условие (первые параметры) и возвращает второй параметр, если условие истинно, в противном случае — третий.

Синтаксис — if (<expression>, <result-if-true>, <result-if-false>)

Попробуйте некоторые дополнительные функции, используя следующие запросы.

Выполните следующий запрос, чтобы узнать, как выполнить выражение if.

orientdb {db = demo}> SELECT if(eval("name = 'satish'"), "My name is satish", 
"My name is not satish") FROM Employee

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+--------+----------------------- 
#   |@CLASS  | IF 
----+--------+----------------------- 
0   |null    |My name is satish  
1   |null    |My name is not satish 
2   |null    |My name is not satish  
3   |null    |My name is not satish  
4   |null    |My name is not satish  
----+--------+------------------------ 

Выполните следующий запрос, чтобы получить системную дату.

orientdb {db = demo}> SELECT SYSDATE() FROM Employee

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+--------+----------------------- 
#   |@CLASS  | SYSDATE 
----+--------+----------------------- 
0   |null    |2016-02-10 12:05:06 
1   |null    |2016-02-10 12:05:06 
2   |null    |2016-02-10 12:05:06 
3   |null    |2016-02-10 12:05:06 
4   |null    |2016-02-10 12:05:06 
----+--------+------------------------ 

Тщательно используя эту функцию, вы можете легко манипулировать данными OrientDB.

OrientDB — последовательности

Последовательности — это концепция, используемая в механизме автоматического приращения, и она представлена ​​в OrientDB v2.2. В терминологии базы данных последовательность — это структура, которая управляет полем счетчика. Проще говоря, последовательности в основном используются, когда вам нужно число, которое всегда увеличивается. Поддерживает два типа —

ORDERED — каждый раз, когда указатель вызывает метод .next, который возвращает новое значение.

CACHED — последовательность будет кешировать ‘N’ элементов на каждом узле. Для вызова каждого элемента мы используем .next () , который предпочтителен, когда кеш содержит более одного элемента.

Создать последовательность

Последовательность обычно используется для автоматического увеличения значения идентификатора человека. Как и другие SQL-концепции OrientDB, он также выполняет те же операции, что и Sequence в RDBMS.

Следующее утверждение является основным синтаксисом для создания последовательностей.

CREATE SEQUENCE <sequence> TYPE <CACHED|ORDERED> [START <start>]  
[INCREMENT <increment>] [CACHE <cache>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<Sequence> — Локальное имя для последовательности.

TYPE — определяет тип последовательности ORDERED или CACHED.

START — определяет начальное значение.

INCREMENT — определяет приращение для каждого вызова метода .next.

CACHE — определяет количество значений для предварительного кэширования в случае, если вы использовали для кэширования тип последовательности.

Давайте создадим последовательность с именем ‘seqid’, которая начинается с номера 1201. Попробуйте следующие запросы, чтобы реализовать этот пример с последовательностью.

CREATE SEQUENCE seqid START 1201

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Sequence created successfully

Попробуйте следующий запрос, чтобы использовать последовательность ‘seqid’ для вставки значения id таблицы Account.

INSERT INTO Account SET id = sequence('seqid').next() 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Insert 1 record(s) in 0.001000 sec(s) 

Изменить последовательность

Изменить последовательность — это команда, используемая для изменения свойств последовательности. Это изменит все параметры последовательности, кроме типа последовательности.

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

ALTER SEQUENCE <sequence> [START <start-point>] 
[INCREMENT <increment>] [CACHE <cache>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<Sequence> — определяет последовательность, которую вы хотите изменить.

START — определяет начальное значение.

INCREMENT — определяет приращение для каждого вызова метода .next.

CACHE — определяет количество значений для предварительного кэширования в случае, когда вы использовали для кэширования тип последовательности.

Попробуйте следующий запрос, чтобы изменить начальное значение с «1201 на 1000» последовательности с именем seqid.

ALTER SEQUENCE seqid START 1000

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Altered sequence successfully 

Падение последовательности

Удалить последовательность — это команда, используемая для удаления последовательности.

Следующее утверждение является основным синтаксисом для удаления последовательности.

DROP SEQUENCE <sequence>

Где <Sequence> определяет последовательность, которую вы хотите удалить.

Попробуйте следующий запрос, чтобы удалить последовательность с именем ‘seqid’.

DROP SEQUENCE seqid

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Sequence dropped successfully

OrientDB — Индексы

Индекс — это указатель, который указывает на местоположение данных в базе данных. Индексирование — это концепция, используемая для быстрого поиска данных без необходимости поиска каждой записи в базе данных. OrientDB поддерживает четыре индексных алгоритма и несколько типов в каждом.

Четыре типа индекса:

SB-Tree Index

Это обеспечивает хорошее сочетание функций, доступных из других типов индексов. Лучше использовать это для общей полезности. Это долговечный, транзакционный и поддерживает диапазон запросов. Это тип индекса по умолчанию. Плагины разных типов, которые поддерживают этот алгоритм:

  • UNIQUE — эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

  • NOTUNIQUE — эти индексы позволяют дублировать ключи.

  • FULLTEXT — эти индексы основаны на любом отдельном слове текста. Вы можете использовать их в запросах через оператор CONTAINSTEXT .

  • СЛОВАРЬ. Эти индексы аналогичны индексам, использующим UNIQUE, но в случае дублирующих ключей они заменяют существующую запись новой записью.

UNIQUE — эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

NOTUNIQUE — эти индексы позволяют дублировать ключи.

FULLTEXT — эти индексы основаны на любом отдельном слове текста. Вы можете использовать их в запросах через оператор CONTAINSTEXT .

СЛОВАРЬ. Эти индексы аналогичны индексам, использующим UNIQUE, но в случае дублирующих ключей они заменяют существующую запись новой записью.

Хэш-индекс

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

  • UNIQUE_HASH_INDEX — эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

  • NOTUNIQUE_HASH_INDEX — эти индексы позволяют дублировать ключи.

  • FULLTEXT_HASH_INDEX — эти индексы основаны на любом отдельном текстовом слове. Вы можете использовать их в запросах через оператор CONTAINSTEXT.

  • DICTIONARY_HASH_INDEX — эти индексы аналогичны индексам, использующим UNIQUE_HASH_INDEX , но в случае дублирования ключей они заменяют существующую запись новой записью.

UNIQUE_HASH_INDEX — эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

NOTUNIQUE_HASH_INDEX — эти индексы позволяют дублировать ключи.

FULLTEXT_HASH_INDEX — эти индексы основаны на любом отдельном текстовом слове. Вы можете использовать их в запросах через оператор CONTAINSTEXT.

DICTIONARY_HASH_INDEX — эти индексы аналогичны индексам, использующим UNIQUE_HASH_INDEX , но в случае дублирования ключей они заменяют существующую запись новой записью.

Lucene Full Text Index

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

Lucene Spatial Index

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

Создание индексов

Создать индекс — это команда для создания индекса для определенной схемы.

Следующее утверждение является основным синтаксисом для создания индекса.

CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>] 
[METADATA {<metadata>}]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<имя> — определяет логическое имя для индекса. Вы также можете использовать нотацию <class.property> для создания автоматического индекса, привязанного к свойству схемы. <class> использует класс схемы, а <property> использует свойство, созданное в классе.

<class-name> — Предоставляет имя класса, для которого вы создаете автоматический индекс для индексации. Этот класс должен существовать в базе данных.

<prop-names> — Предоставляет список свойств, которые нужно индексировать автоматическим индексом. Эти свойства уже должны существовать в схеме.

<тип> — Предоставляет алгоритм и тип индекса, который вы хотите создать.

<тип ключа> — Предоставляет необязательный тип ключа с автоматическими индексами.

<метаданные> — предоставляет представление JSON.

пример

Попробуйте следующий запрос, чтобы создать автоматический индекс, привязанный к свойству ‘ID’ пользователя sales_user.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Creating index... 
Index created successfully with 4 entries in 0.021000 sec(s)

Запрос индексов

Вы можете использовать запрос select, чтобы получить записи в индексе.

Попробуйте следующий запрос, чтобы получить ключи индекса с именем ‘indexforId’.

SELECT FROM INDEX:indexforId 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+------+----+----- 
#   |@CLASS|key |rid   
----+------+----+----- 
0   |null  |1   |#11:7 
1   |null  |2   |#11:6 
2   |null  |3   |#11:5 
3   |null  |4   |#11:8 
----+------+----+-----

Drop Index

Если вы хотите удалить определенный индекс, вы можете использовать эту команду. Эта операция не удаляет связанные записи.

Следующее утверждение является основным синтаксисом для удаления индекса.

DROP INDEX <name>

Где <name> предоставляет имя индекса, который вы хотите удалить.

Попробуйте следующий запрос, чтобы удалить индекс с именем ‘ID’ пользователя sales_user.

DROP INDEX sales_users.Id 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Index dropped successfully 

OrientDB — Сделки

Как и RDBMS, OrientDB поддерживает свойства ACID транзакций. Транзакция состоит из единицы работы, выполняемой в системе управления базой данных. Существует две основные причины для поддержки транзакций в среде базы данных.

  • Для одновременного восстановления после сбоев и поддержания согласованности базы данных даже в случае сбоев системы.

  • Обеспечить изоляцию между программами, обращающимися к базе данных одновременно.

Для одновременного восстановления после сбоев и поддержания согласованности базы данных даже в случае сбоев системы.

Обеспечить изоляцию между программами, обращающимися к базе данных одновременно.

По умолчанию транзакция базы данных должна соответствовать свойствам ACID, таким как свойства Atomic, Consistent, Isolated и Durable. Но OrientDB является ACID-совместимой базой данных, что означает, что она не противоречит и не отрицает концепцию ACID, но меняет свое восприятие при обработке базы данных NoSQL. Посмотрите, как свойства ACID работают вместе с базой данных NoSQL.

Атомная — когда вы делаете что-то, чтобы изменить базу данных, изменение должно работать или потерпеть неудачу в целом.

Согласованный — база данных должна оставаться согласованной.

Изолированный — если одновременно выполняются другие транзакции, пользователь не сможет просматривать записи в параллельном выполнении.

Долговечный. В случае сбоя системы (аппаратной или программной) сама база данных должна быть в состоянии сделать резервную копию.

Транзакция базы данных может быть достигнута с помощью команд Commit и Rollback.

совершить

Фиксация означает закрытие транзакции путем сохранения всех изменений в базе данных. Откат означает восстановление состояния базы данных до точки, в которой вы открыли транзакцию.

Следующий оператор является основным синтаксисом команды базы данных COMMIT.

COMMIT

Примечание. Эту команду можно использовать только после подключения к определенной базе данных и после начала транзакции.

пример

В этом примере мы будем использовать ту же базу данных с именем «demo», которую мы создали в предыдущей главе этого урока. Мы увидим операцию фиксации транзакции и сохранения записи с использованием транзакций.

Сначала необходимо запустить транзакцию, используя следующую команду BEGIN.

orientdb {db = demo}> BEGIN

Вставьте запись в таблицу сотрудников со значениями id = 12 и name = satish.P с помощью следующей команды.

orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')

Вы можете использовать следующую команду для подтверждения транзакции.

orientdb> commit

Если эта транзакция успешно зафиксирована, вы получите следующий вывод.

Transaction 2 has been committed in 4ms

отмена

Откат означает восстановление состояния базы данных до точки, в которой вы открыли транзакцию.

Следующий оператор является основным синтаксисом команды базы данных ROLLBACK.

ROLLBACK

Примечание. Эту команду можно использовать только после подключения к определенной базе данных и после начала транзакции.

пример

В этом примере мы будем использовать ту же базу данных с именем ‘demo’, которую мы создали в предыдущей главе учебника. Мы увидим операцию отката транзакции и сохраним запись с помощью транзакции.

Сначала вы должны начать транзакцию, используя следующую команду BEGIN.

orientdb {db = demo}> BEGIN

Вставьте запись в таблицу сотрудников со значениями id = 12 и name = satish.P с помощью следующей команды.

orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')

Вы можете использовать следующую команду, чтобы получить записи таблицы сотрудника.

orientdb> SELECT FROM employee WHERE name LIKE '%.P'

Если эта команда выполнена успешно, вы получите следующий вывод.

---+-------+-------------------- 
 # | ID   | name 
---+-------+-------------------- 
 0 | 12   | satish.P 
---+-------+-------------------- 
1 item(s) found. Query executed in 0.076 sec(s). 

Вы можете использовать следующую команду для отката этой транзакции.

orientdb> ROLLBACK

Снова проверьте запрос на выборку, чтобы получить ту же запись из таблицы Employee.

orientdb> SELECT FROM employee WHERE name LIKE '%.P' 

Если откат выполнен успешно, вы получите 0 записей, найденных в выходных данных.

0 item(s) found. Query executed in 0.037 sec(s). 

OrientDB — Крючки

Хуки OrientDB — это не что иное, как триггеры в терминологии базы данных, которые разрешают внутренние события до и после каждой операции CRUD в пользовательских приложениях. Вы можете использовать ловушки для написания пользовательских правил проверки, для обеспечения безопасности или для организации внешних событий, таких как репликация в реляционную СУБД.

OrientDB поддерживает два вида хуков —

Динамический зацеп — триггеры, которые могут быть построены на уровне класса и / или уровне документа.

Java (Native) Hook — триггеры, которые могут быть построены с использованием классов Java.

Динамические крючки

Динамические хуки являются более гибкими, чем хуки Java, потому что они могут быть изменены во время выполнения и могут запускаться для каждого документа, если это необходимо, но медленнее, чем хуки Java.

Чтобы выполнить хуки для ваших документов, сначала позвольте вашим классам расширить базовый класс OTriggered . Позже определите пользовательское свойство для интересующего события. Ниже приведены доступные события.

  • onBeforeCreate — вызывается перед созданием нового документа.

  • onAfterCreateвызывается после создания нового документа.

  • onBeforeRead — Вызывается перед чтением документа.

  • onAfterRead — Вызывается после прочтения документа.

  • onBeforeUpdate — вызывается перед обновлением документа.

  • onAfterUpdateвызывается после обновления документа.

  • onBeforeDelete — Вызывается перед удалением документа.

  • onAfterDelete — Вызывается после удаления документа.

onBeforeCreate — вызывается перед созданием нового документа.

onAfterCreateвызывается после создания нового документа.

onBeforeRead — Вызывается перед чтением документа.

onAfterRead — Вызывается после прочтения документа.

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

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

onBeforeDelete — Вызывается перед удалением документа.

onAfterDelete — Вызывается после удаления документа.

Динамические Крючки могут звонить —

  • Функции, написанные на SQL, Javascript или любом языке, поддерживаемом OrientDB и JVM.

  • Статические методы Java.

Функции, написанные на SQL, Javascript или любом языке, поддерживаемом OrientDB и JVM.

Статические методы Java.

Крючки уровня класса

Хуки уровня класса определены для всех документов, которые относятся к классу. Ниже приведен пример настройки ловушки, которая действует на уровне класса в отношении документов счета.

CREATE CLASS Invoice EXTENDS OTriggered 
ALTER CLASS Invoice CUSTOM onAfterCreate = invoiceCreated 

Давайте создадим функцию invoiceCreated в Javascript, которая печатает на консоли сервера номер созданного счета.

CREATE FUNCTION invoiceCreated "print('\\nInvoice created: ' + doc.field ('number'));"
LANGUAGE Javascript

Теперь попробуйте зацепить, создав новый документ Invoice .

INSERT INTO Invoice CONTENT {number: 100, notes: 'This is a test}

Если эта команда выполнена успешно, вы получите следующий вывод.

Invoice created: 100

Уровень документа Крюк

Вы можете определить специальное действие только для одного или нескольких документов. Для этого позвольте вашему классу расширить класс OTriggered .

Например, давайте выполним триггер в виде функции Javascript для существующего класса Profile для всех документов со свойством account = ‘Premium’. Триггер будет вызван для предотвращения удаления документов.

ALTER CLASS Profile SUPERCLASS OTriggered UPDATE Profile 
SET onBeforeDelete = 'preventDeletion' WHERE account = 'Premium' 

Давайте создадим функцию Javascript protectDeletion () .

CREATE FUNCTION preventDeletion "throw new java.lang.RuntimeException('Cannot 
delete Premium profile ' + doc)" LANGUAGE Javascript

А затем протестируйте ловушку, пытаясь удалить «Премиум» аккаунт.

DELETE FROM #12:1 
java.lang.RuntimeException: Cannot delete Premium profile
profile#12:1{onBeforeDelete:preventDeletion,account:Premium,name:Jill} v-1 
(<Unknown source>#2) in <Unknown source> at line number 2

JAVA Крючки

Один из распространенных вариантов использования OrientDB Hooks (триггеры) — управление созданными и обновленными датами для любого или всех классов. Например, вы можете установить поле CreatedDate всякий раз, когда создается запись, и устанавливать поле UpdatedDate при каждом обновлении записи, и делать это таким образом, чтобы вы реализовали логику один раз на уровне базы данных, и вам больше никогда не придется беспокоиться об этом в прикладной уровень.

Перед созданием вам необходимо скачать файл orientdb-core.jar, перейдя по следующей ссылке скачать ядро ​​OrientDB . А затем скопируйте этот файл JAR в папку, где вы хотите сохранить исходный файл Java.

Создать файл хука

Создайте файл Java с именем HookTest.java , который будет проверять механизм Hook с использованием языка Java.

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.StringReader; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.concurrent.locks.ReentrantLock; 
import com.orientechnologies.orient.core.hook.ODocumentHookAbstract; 
import com.orientechnologies.orient.core.hook.ORecordHook; 
import com.orientechnologies.orient.core.hook.ORecordHookAbstract; 
import com.orientechnologies.orient.core.db.ODatabaseLifecycleListener; 
import com.orientechnologies.orient.core.db.ODatabase; 
import com.orientechnologies.orient.core.record.ORecord; 
import com.orientechnologies.orient.core.record.impl.ODocument;
  
public class HookTest extends ODocumentHookAbstract implements ORecordHook { 
   public HookTest() {
  
   }
  
   @Override 
   public DISTRIBUTED_EXECUTION_MODE getDistributedExecutionMode() { 
      return DISTRIBUTED_EXECUTION_MODE.BOTH; 
   } 
   public RESULT onRecordBeforeCreate( ODocument iDocument ) { 
      System.out.println("Ran create hook"); 
      return ORecordHook.RESULT.RECORD_NOT_CHANGED; 
   } 
   public RESULT onRecordBeforeUpdate( ODocument iDocument ) { 
      System.out.println("Ran update hook"); 
      return ORecordHook.RESULT.RECORD_NOT_CHANGED;  
   }  
} 

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

Давайте добавим еще один подключаемый файл setCreatedUpdatedDates.java следующим образом:

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.StringReader; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.concurrent.locks.ReentrantLock; 
import com.orientechnologies.orient.core.hook.ODocumentHookAbstract; 
import com.orientechnologies.orient.core.hook.ORecordHook; 
import com.orientechnologies.orient.core.hook.ORecordHookAbstract; 
import com.orientechnologies.orient.core.db.ODatabaseLifecycleListener; 
import com.orientechnologies.orient.core.db.ODatabase; 
import com.orientechnologies.orient.core.record.ORecord; 
import com.orientechnologies.orient.core.record.impl.ODocument; 
 
public class setCreatedUpdatedDates extends ODocumentHookAbstract implements ORecordHook { 
   public setCreatedUpdatedDates() { 
   
   }
   
   @Override 
   public DISTRIBUTED_EXECUTION_MODE getDistributedExecutionMode() { 
      return DISTRIBUTED_EXECUTION_MODE.BOTH; 
   } 
   public RESULT onRecordBeforeCreate( ODocument iDocument ) { 
      if ((iDocument.getClassName().charAt(0) == 't') || (iDocument.getClassName().charAt(0)=='r')) { 
         iDocument.field("CreatedDate", System.currentTimeMillis() / 1000l); 
         iDocument.field("UpdatedDate", System.currentTimeMillis() / 1000l); 
         return ORecordHook.RESULT.RECORD_CHANGED; 
      } else { 
         return ORecordHook.RESULT.RECORD_NOT_CHANGED; 
      } 
   } 
   
   public RESULT onRecordBeforeUpdate( ODocument iDocument ) { 
      if ((iDocument.getClassName().charAt(0) == 't') || (iDocument.getClassName().charAt(0)=='r')) { 
         iDocument.field("UpdatedDate", System.currentTimeMillis() / 1000l); 
         return ORecordHook.RESULT.RECORD_CHANGED; 
      } else { 
         return ORecordHook.RESULT.RECORD_NOT_CHANGED; 
      } 
   }  
}

Вышеприведенный код выполняет поиск любого класса, который начинается с букв « r » или « t » и устанавливает CreatedDate и UpdatedDate при создании записи и устанавливает только UpdateDate при каждом обновлении записи.

Компиляция Java-хуков

Скомпилируйте код Java с помощью следующей команды. Примечание . Храните загруженный файл jar и эти файлы Java в одной папке.

$ jar cf hooks-1.0-SNAPSHOT.jar *.java

Переместить скомпилированный код туда, где его может найти сервер OrientDB

Вам необходимо скопировать готовый файл .jar в каталог, где их будет искать ваш сервер OrientDB. Это означает, что папка « ./lib » в корневом каталоге вашего сервера OrientDB будет выглядеть так:

$ cp hooks-1.0-SNAPSHOT.jar "$ORIENTDB_HOME/lib"

Включите тестовый хук в файле конфигурации сервера OrientDB

Отредактируйте файл $ ORIENTDB_HOME / config / orientdb-server-config.xml и добавьте следующий раздел в конец файла.

   <hooks> 
      <hook class = "HookTest" position = "REGULAR"/> 
   </hooks> 
   ... 
</orient-server>

Перезагрузите сервер OrientDB

После перезапуска сервера OrientDB перехват, определенный вами в orientdb-server-config.xml, становится активным. Запустите консоль OrientDB, подключите ее к базе данных и выполните следующую команду:

INSERT INTO V SET ID = 1;

Если эта команда выполнена успешно, вы получите следующий вывод.

Ran create hook 

Теперь выполните следующую команду —

UPDATE V SET ID = 2 WHERE ID = 1; 

Если эта команда выполнена успешно, вы получите следующий вывод.

Ran update hook

Включите Real Hook в файле конфигурации сервера OrientDB

Отредактируйте $ ORIENTDB_HOME / config / orientdb-server-config.xml и измените раздел ловушек следующим образом:

   <hooks> 
      <hook class="setCreatedUpdatedDates" position="REGULAR"/> 
   </hooks> 
   ... 
</orient-server>

Перезагрузите сервер OrientDB

Создайте новый класс, который начинается с буквы « r » или « t » —

CREATE CLASS tTest EXTENDS V;

Теперь вставьте запись —

INSERT INTO tTest SET ID = 1 
SELECT FROM tTest 

Если эта команда выполнена успешно, вы получите следующий вывод.

----+-----+------+----+-----------+----------- 
#   |@RID |@CLASS|ID  |CreatedDate|UpdatedDate 
----+-----+------+----+-----------+----------- 
0   |#19:0|tTest |1   |1427597275 |1427597275 
----+-----+------+----+-----------+-----------

Даже если вы не указали значения для CreatedDate и updatedDate , OrientDB установил эти поля автоматически.

Далее вам необходимо обновить запись с помощью следующей команды —

UPDATE tTest SET ID = 2 WHERE ID = 1; 
SELECT FROM tTest; 

Если эта команда выполнена успешно, вы получите следующий вывод.

----+-----+------+----+-----------+----------- 
#   |@RID |@CLASS|ID  |CreatedDate|UpdatedDate 
----+-----+------+----+-----------+----------- 
0   |#19:0|tTest |2   |1427597275 |1427597306 
----+-----+------+----+-----------+----------- 

Вы можете видеть, что OrientDB изменил UpdatedDate, но оставил CreatedDate без изменений.

OrientDB Java Hooks может быть чрезвычайно ценным инструментом, помогающим автоматизировать работу, которую в противном случае пришлось бы выполнять в коде приложения. Поскольку многие администраторы баз данных не всегда являются экспертами по Java, мы надеемся, что информация, содержащаяся в этом руководстве, даст вам преимущество и позволит вам чувствовать себя комфортно с технологией, позволяющей вам успешно создавать триггеры базы данных по мере необходимости.

OrientDB — Кэширование

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

Следующая иллюстрация дает представление о том, что такое кэширование.

Механизмы кеширования

На приведенном выше рисунке DB1 , DB2 , DB3 — это три разных экземпляра базы данных, используемых в приложении.

Кэш уровня 1 — это локальный кеш, в котором хранятся все сущности, известные определенному сеансу. Если у вас есть три транзакции в этом сеансе, он будет содержать все объекты, используемые всеми тремя транзакциями. Этот кеш очищается, когда вы закрываете сеанс или когда вы выполняете «чистый» метод. Это снижает нагрузку на операции ввода-вывода между приложением и базой данных и, в свою очередь, повышает производительность.

Кеш уровня 2 — это реальный кеш, который работает с использованием стороннего поставщика. Вы можете иметь полный контроль над содержимым кэша, т.е. вы сможете указать, какие записи следует удалять, какие хранить дольше и так далее. Это полный общий кеш между несколькими потоками.

Модель хранения — это не что иное, как устройство хранения, которое является диском, памятью или удаленным сервером.

Как работает кэш в OrientDB?

Кэширование OrientDB предоставляет разные методологии в разных средах. Кэширование в основном используется для более быстрых транзакций базы данных, сокращения времени обработки транзакции и повышения производительности. Следующие блок-схемы показывают, как работает кэширование в локальном режиме и режиме клиент-сервер.

Локальный режим (встроенная база данных)

Следующая схема показывает, как запись находится между хранилищем и используемым приложением в локальном режиме, т. Е. Когда сервер базы данных находится на вашем локальном хосте.

Встроенная база данных

Когда клиентское приложение запрашивает запись, OrientDB проверяет следующее:

  • Если транзакция началась, то она ищет внутри транзакции измененные записи и возвращает ее, если найдена.

  • Если локальный кеш включен и содержит запрошенную запись, то возвращает ее.

  • Если в этот момент запись не находится в кеше, то запрашивает ее в хранилище (диск, память).

Если транзакция началась, то она ищет внутри транзакции измененные записи и возвращает ее, если найдена.

Если локальный кеш включен и содержит запрошенную запись, то возвращает ее.

Если в этот момент запись не находится в кеше, то запрашивает ее в хранилище (диск, память).

Режим клиент-сервер (удаленная база данных)

Следующая блок-схема показывает, как запись находится между хранилищем и используемым приложением в режиме клиент-сервер, т. Е. Когда сервер базы данных находится в удаленном расположении.

Удаленная база данных

Когда клиентское приложение запрашивает запись, OrientDB проверяет следующее:

  • Если транзакция началась, то она ищет внутри транзакции измененные записи и возвращает ее, если найдена.

  • Если локальный кеш включен и содержит запрошенную запись, то возвращает ее.

  • В этот момент, если запись не находится в кеше, она запрашивает ее у сервера через вызов TCP / IP.

  • На сервере, если локальный кеш включен и содержит запрошенную запись, то возвращает ее.

  • На этом этапе запись все еще не кэшируется на сервере, а затем запрашивает ее в хранилище (диск, память).

Если транзакция началась, то она ищет внутри транзакции измененные записи и возвращает ее, если найдена.

Если локальный кеш включен и содержит запрошенную запись, то возвращает ее.

В этот момент, если запись не находится в кеше, она запрашивает ее у сервера через вызов TCP / IP.

На сервере, если локальный кеш включен и содержит запрошенную запись, то возвращает ее.

На этом этапе запись все еще не кэшируется на сервере, а затем запрашивает ее в хранилище (диск, память).

OrientDB — ведение журнала

OrientDB использует каркас Java Logging в комплекте с виртуальной машиной Java. Формат журнала OrientDB по умолчанию управляется классом OLogFormatter .

Следующее утверждение является основным синтаксисом команды ведения журнала.

<date> <level> <message> [<requester>]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<дата> — это дата журнала в следующем формате: гггг-мм-дд чч: мм: сс: ссс.

<уровень> — это уровень регистрации как 5 символов вывода.

<сообщение> — это текст журнала, он может быть любого размера.

[<class>] — это класс Java, который регистрируется (необязательно).

Поддерживаются уровни, содержащиеся в классе JRE java.util.logging.Level. Они —

  • SEVERE (высшее значение)
  • ПРЕДУПРЕЖДЕНИЕ
  • ИНФОРМАЦИЯ
  • CONFIG
  • FINE
  • FINER
  • FINEST (минимальное значение)

По умолчанию установлены два регистратора —

  • Консоль , как вывод оболочки / командной строки, которая запускает приложение / сервер. Может быть изменено путем установки переменной ‘log.console.level’.

  • Файл , как вывод в лог файлы. Может быть изменено путем установки ‘log.file.level’.

Консоль , как вывод оболочки / командной строки, которая запускает приложение / сервер. Может быть изменено путем установки переменной ‘log.console.level’.

Файл , как вывод в лог файлы. Может быть изменено путем установки ‘log.file.level’.

Настроить ведение журнала

Стратегии и политики ведения журнала можно настроить с помощью файла, следующего за Java.

синтаксис — конфигурация регистрации Java.

пример

Скопируйте следующее содержимое из файла orientdb-server-log.properties и поместите его в файл $ ORIENTDB_HOME / config .

# Specify the handlers to create in the root logger 
# (all loggers are children of the root logger) 
# The following creates two handlers 
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler 
# Set the default logging level for the root logger 
.level = ALL 
 
# Set the default logging level for new ConsoleHandler instances 
java.util.logging.ConsoleHandler.level = INFO 
# Set the default formatter for new ConsoleHandler instances 
java.util.logging.ConsoleHandler.formatter = 
   com.orientechnologies.common.log.OLogFormatter 
 
# Set the default logging level for new FileHandler instances 
java.util.logging.FileHandler.level = INFO 
# Naming style for the output file 
java.util.logging.FileHandler.pattern =../log/orient-server.log 
# Set the default formatter for new FileHandler instances 
java.util.logging.FileHandler.formatter = com.orientechnologies.common.log.OLogFormatter 
# Limiting size of output file in bytes: 
java.util.logging.FileHandler.limit = 10000000 
# Number of output files to cycle through, by appending an 
# integer to the base file name: 
java.util.logging.FileHandler.count = 10

Чтобы сообщить JVM, где находится файл свойств, необходимо установить для него системное свойство « java.util.logging.config.file ». Например, используйте следующую команду —

$ java -Djava.util.logging.config.file=mylog.properties ... 

Установите уровень ведения журнала

Чтобы изменить уровень ведения журнала без изменения конфигурации ведения журнала, просто установите системные переменные « log.console.level » и « log.file.level » на запрошенные уровни.

Вход при запуске

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

В конфигурации сервера

Откройте файл orientdb-server-config.xml и добавьте или обновите эти строки в конце файла в разделе <properties> —

<entry value = "fine" name = "log.console.level" /> 
<entry value = "fine" name = "log.file.level" /> 

В скрипте Server.sh (или .bat)

Установите системные свойства » log.console.level » и » log.file.level » на нужные вам уровни, используя параметр -D в java.

$ java -Dlog.console.level = FINE ... 

Ведение журнала во время выполнения

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

Используя код Java

Системная переменная может быть установлена ​​при запуске с помощью API-интерфейса System.setProperty (). Следующий фрагмент кода представляет собой синтаксис для установки уровня ведения журнала с использованием кода Java.

public void main(String[] args){ 
   System.setProperty("log.console.level", "FINE"); 
   ... 
}

На удаленном сервере

Выполните HTTP POST для URL: /server/log.<type> / <level>, где —

  • <тип> может быть «консоль» или «файл»
  • <уровень> является одним из поддерживаемых уровней

пример

В следующем примере cURL используется для выполнения команды HTTP POST на сервере OrientDB. Использовались «root» пользователь и пароль сервера, замените свой пароль.

Включить лучший уровень трассировки для консоли —

curl -u root:root -X POST http://localhost:2480/server/log.console/FINEST 

Включить лучший уровень трассировки в файл —

curl -u root:root -X POST http://localhost:2480/server/log.file/FINEST 

OrientDB — Настройка производительности

В этой главе вы можете получить некоторые общие советы о том, как оптимизировать ваше приложение, которое использует OrientDB. Существует три способа повысить производительность для разных типов баз данных.

  • Настройка производительности базы данных документов — в ней используется метод, помогающий избежать создания документа для каждого нового документа.

  • Настройка производительности базы данных объектов — использует общие методы для повышения производительности.

  • Настройка распределенной конфигурации — она ​​использует различные методологии для повышения производительности в распределенной конфигурации.

Настройка производительности базы данных документов — в ней используется метод, помогающий избежать создания документа для каждого нового документа.

Настройка производительности базы данных объектов — использует общие методы для повышения производительности.

Настройка распределенной конфигурации — она ​​использует различные методологии для повышения производительности в распределенной конфигурации.

Вы можете добиться общей настройки производительности, изменив настройки памяти, JVM и удаленного подключения.

Настройки памяти

Существуют разные стратегии в настройке памяти для улучшения производительности.

Сервер и встроенные настройки

Эти параметры действительны как для серверного компонента, так и для JVM, где приложение Java запускается с использованием OrientDB в встроенном режиме, напрямую используя plocal .

Самое главное при настройке — убедиться в правильности настроек памяти. Что может реально измениться, так это правильный баланс между кучей и виртуальной памятью, используемой отображением памяти, особенно в больших наборах данных (ГБ, ТБ и т. Д.), Где структуры кэша памяти имеют меньший объем, чем необработанный ввод-вывод.

Например, если вы можете назначить максимум 8 ГБ процессу Java, обычно лучше назначить малую кучу и большой буфер кеша диска (память вне кучи).

Попробуйте следующую команду, чтобы увеличить память кучи.

java -Xmx800m -Dstorage.diskCache.bufferSize=7200 ... 

Параметр storage.diskCache.bufferSize (со старым «локальным» хранилищем это был file.mmap.maxMemory ) находится в МБ и сообщает, сколько памяти нужно использовать для компонента Disk Cache. По умолчанию это 4 ГБ.

ПРИМЕЧАНИЕ. — Если сумма максимальной кучи и буфера дискового кэша слишком велика, это может привести к перестановке ОС с огромным замедлением.

Настройки JVM

Настройки JVM кодируются в пакетных файлах server.sh (и server.bat). Вы можете изменить их, чтобы настроить JVM в соответствии с вашим использованием и настройками hw / sw. Добавьте следующую строку в файл server.bat.

-server -XX:+PerfDisableSharedMem 

Этот параметр отключит запись отладочной информации о JVM. Если вам нужно профилировать JVM, просто удалите этот параметр.

Удаленные подключения

Есть много способов повысить производительность при доступе к базе данных с помощью удаленного подключения.

Выбор стратегии

При работе с удаленной базой данных вы должны обращать внимание на используемую стратегию выборки. По умолчанию клиент OrientDB загружает только запись, содержащуюся в наборе результатов. Например, если запрос возвращает 100 элементов, но если вы скрещиваете эти элементы с клиента, клиент OrientDB лениво загружает элементы еще одним сетевым вызовом на сервер для каждой пропущенной записи.

Пул сетевых подключений

Каждый клиент по умолчанию использует только одно сетевое соединение для связи с сервером. Несколько потоков на одном клиенте совместно используют один и тот же пул сетевых подключений.

Когда у вас несколько потоков, может возникнуть узкое место, так как много времени тратится на ожидание свободного сетевого подключения. По этой причине важно настроить пул сетевых подключений.

Конфигурация очень простая, всего 2 параметра —

  • minPool — это начальный размер пула соединений. Значение по умолчанию настраивается как глобальные параметры «client.channel.minPool».

  • maxPool — это максимальный размер, который может достичь пул соединений. Значение по умолчанию настраивается как глобальные параметры «client.channel.maxPool».

minPool — это начальный размер пула соединений. Значение по умолчанию настраивается как глобальные параметры «client.channel.minPool».

maxPool — это максимальный размер, который может достичь пул соединений. Значение по умолчанию настраивается как глобальные параметры «client.channel.maxPool».

Если все соединения пула заняты, то клиентский поток будет ожидать первого свободного соединения.

Пример команды настройки с использованием свойств базы данных.

database = new ODatabaseDocumentTx("remote:localhost/demo"); 
database.setProperty("minPool", 2); 
database.setProperty("maxPool", 5);  

database.open("admin", "admin");

Настройка распределенной конфигурации

Есть много способов улучшить производительность распределенной конфигурации.

Использовать транзакции

Даже когда вы обновляете графики, вы всегда должны работать в транзакциях. OrientDB позволяет вам работать вне их. Распространенными случаями являются запросы только для чтения, или в случае сбоя могут быть восстановлены массивные и непоследовательные операции. Когда вы работаете в распределенной конфигурации, использование транзакций помогает уменьшить задержку. Это потому, что распределенная операция происходит только во время коммита. Распределение одной большой операции намного эффективнее, чем передача нескольких небольших операций из-за задержки.

Репликация против Шардинга

Распределенная конфигурация OrientDB настроена на полную репликацию. Наличие нескольких узлов с одной и той же копией базы данных важно для масштабного чтения. Фактически, каждый сервер независим от выполнения операций чтения и запросов. Если у вас есть 10 серверных узлов, пропускная способность чтения будет 10x.

С записью все наоборот: наличие нескольких узлов с полной репликацией замедляет операции, если репликация синхронная. В этом случае разделение базы данных между несколькими узлами позволяет увеличить масштаб записи, поскольку при записи участвует только подмножество узлов. Кроме того, вы можете иметь базу данных больше, чем один серверный узел HD.

Увеличьте на Пишет

Если у вас медленная сеть и у вас синхронная (по умолчанию) репликация, вы можете оплатить стоимость задержки. Фактически, когда OrientDB работает синхронно, он ожидает, по крайней мере, writeQuorum . Это означает, что если writeQuorum равен 3, а у вас 5 узлов, узел сервера-координатора (с которого начинается распределенная операция) должен ждать ответа как минимум от 3 узлов, чтобы предоставить ответ клиенту.

Чтобы поддерживать согласованность, для writeQuorum должно быть установлено большинство. Если у вас 5 узлов, то большинство — 3. При 4 узлах это все равно 3. Установка для writeQuorum значения 3 вместо 4 или 5 позволяет снизить стоимость задержки и при этом сохранить согласованность.

Асинхронная репликация

Чтобы ускорить процесс, вы можете настроить асинхронную репликацию, чтобы устранить узкое место задержки. В этом случае узел сервера-координатора выполняет операцию локально и дает ответ клиенту. Вся репликация будет в фоновом режиме. Если кворум не достигнут, изменения будут отменены прозрачно.

Расширять чтение

Если вы уже установили writeQuorum для большинства узлов, вы можете оставить readQuorum равным 1 (по умолчанию). Это ускоряет все чтения.

OrientDB — Обновление

При обновлении необходимо учитывать номер версии и формат. Существует три типа форматов — MAJOR, MINOR, PATCH.

  • ОСНОВНАЯ версия влечет за собой несовместимые изменения API.

  • Версия MINOR влечет за собой функциональность в обратно-совместимой манере.

  • Версия PTCH влечет за собой обратную совместимость исправлений ошибок.

ОСНОВНАЯ версия влечет за собой несовместимые изменения API.

Версия MINOR влечет за собой функциональность в обратно-совместимой манере.

Версия PTCH влечет за собой обратную совместимость исправлений ошибок.

Для синхронизации между младшей и основной версиями вам может понадобиться экспортировать и импортировать базы данных. Иногда вам нужно перенести базу данных из LOCAL в PLOCAL и перенести график в RidBag.

Миграция с LOCAL Storage Engine на PLOCAL

Начиная с версии 1.5.x OrientDB поставляется с новым механизмом хранения: PLOCAL (Paginated LOCAL). Он постоянен, как LOCAL, но хранит информацию другим способом. Следующие пункты показывают сравнение между PLOCAL и LOCAL —

  • В PLOCAL записи хранятся в файлах кластера, в то время как с LOCAL был разделен между кластером и сегментами данных.

  • PLOCAL более долговечен, чем LOCAL, благодаря режиму добавления-записи.

  • PLOCAL имеет незначительные конфликты блокировки при записи, что означает больше параллелизма.

  • PLOCAL не использует методы отображения памяти (MMap), поэтому поведение более «предсказуемо».

В PLOCAL записи хранятся в файлах кластера, в то время как с LOCAL был разделен между кластером и сегментами данных.

PLOCAL более долговечен, чем LOCAL, благодаря режиму добавления-записи.

PLOCAL имеет незначительные конфликты блокировки при записи, что означает больше параллелизма.

PLOCAL не использует методы отображения памяти (MMap), поэтому поведение более «предсказуемо».

Чтобы перенести хранилище LOCAL в новый PLOCAL, вам необходимо экспортировать и повторно импортировать базу данных, используя PLOCAL в качестве механизма хранения. Ниже приведена процедура.

Шаг 1 — Откройте новую оболочку (Linux / Mac) или командную строку (Windows).

Шаг 2 — Экспорт базы данных с помощью консоли. Следуйте данной команде, чтобы экспортировать демо базы данных в файл demo.json.gzip .

$ bin/console.sh (or bin/console.bat under Windows) 
orientdb> CONNECT DATABASE local:/temp/demo admin admin 
orientdb> EXPORT DATABASE /temp/demo.json.gzip 
orientdb> DISCONNECT

Шаг 3 — В локальной файловой системе создайте новую базу данных, используя механизм «plocal» —

orientdb> CREATE DATABASE plocal:/temp/newdb admin admin plocal graph 

Шаг 4 — Импортируйте старую базу данных в новую.

orientdb> IMPORT DATABASE /temp/demo.json.gzip -preserveClusterIDs=true 
orientdb> QUIT

Если вы обращаетесь к базе данных в той же JVM, не забудьте изменить URL с «local:» на «plocal:»

Перенос графика в RidBag

Начиная с OrientDB 1.7, RidBag является коллекцией по умолчанию, которая управляет отношениями смежности в графах. Хотя более старая база данных, управляемая MVRB-Tree, полностью совместима, вы можете обновить свою базу данных до более позднего формата.

Вы можете обновить график с помощью консоли или с помощью класса ORidBagMigration .

  • Соединиться с базой данных CONNECT plocal: database / <graphdb-name>

  • Запустите команду обновления графика

Соединиться с базой данных CONNECT plocal: database / <graphdb-name>

Запустите команду обновления графика

OrientDB — Безопасность

Как и RDBMS, OrientDB также обеспечивает безопасность на основе известных концепций, пользователей и ролей. Каждая база данных имеет своих собственных пользователей, и у каждого пользователя есть одна или несколько ролей. Роли — это сочетание режимов работы и набора разрешений.

пользователей

По умолчанию OrientDB поддерживает трех разных пользователей для всей базы данных на сервере —

  • Администратор — этот пользователь имеет доступ ко всем функциям в базе данных без ограничений.

  • Читатель — Этот пользователь только для чтения. Читатель может запрашивать любые записи в базе данных, но не может изменять или удалять их. Он не имеет доступа к внутренней информации, такой как сами пользователи и роли.

  • Writer — этот пользователь такой же, как пользовательский читатель, но он также может создавать, обновлять и удалять записи.

Администратор — этот пользователь имеет доступ ко всем функциям в базе данных без ограничений.

Читатель — Этот пользователь только для чтения. Читатель может запрашивать любые записи в базе данных, но не может изменять или удалять их. Он не имеет доступа к внутренней информации, такой как сами пользователи и роли.

Writer — этот пользователь такой же, как пользовательский читатель, но он также может создавать, обновлять и удалять записи.

Работа с пользователями

Когда вы подключены к базе данных, вы можете запрашивать текущих пользователей в базе данных с помощью запросов SELECT в классе OUser .

orientdb> SELECT RID, name, status FROM OUser 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

---+--------+--------+-------- 
#  | @CLASS | name   | status 
---+--------+--------+-------- 
0  | null   | admin  | ACTIVE 
1  | null   | reader | ACTIVE 
2  | null   | writer | ACTIVE 
---+--------+--------+-------- 
3 item(s) found. Query executed in 0.005 sec(s). 

Создание нового пользователя

Чтобы создать нового пользователя, используйте команду INSERT. Помните, что при этом вы должны установить статус ACTIVE и дать ему допустимую роль.

orientdb> INSERT INTO OUser SET 
               name = 'jay', 
               password = 'JaY',
               status = 'ACTIVE',
               roles = (SELECT FROM ORole WHERE name = 'reader')

Обновление пользователей

Вы можете изменить имя пользователя с помощью оператора UPDATE.

orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'

Таким же образом вы также можете изменить пароль для пользователя.

orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'

OrientDB сохраняет пароль в формате хэша. Триггер OUserTrigger прозрачно шифрует пароль перед сохранением записи.

Отключение пользователей

Чтобы отключить пользователя, используйте UPDATE, чтобы изменить его статус с АКТИВНОГО на СУСПЕДЕННЫЙ. Например, если вы хотите отключить всех пользователей, кроме администратора, используйте следующую команду —

orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'

Роли

Роль определяет, какие операции пользователь может выполнять с ресурсом. Главным образом, это решение зависит от режима работы и правил. Сами правила работают по-разному, в зависимости от режима работы.

Работа с ролями

Когда вы подключены к базе данных, вы можете запрашивать текущие роли в базе данных, используя запросы SELECT для класса ORole .

orientdb> SELECT RID, mode, name, rules FROM ORole 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

--+------+----+--------+------------------------------------------------------- 
# |@CLASS|mode| name   | rules 
--+------+----+--------+------------------------------------------------------- 
0 | null | 1  | admin  | {database.bypassRestricted = 15} 
1 | null | 0  | reader | {database.cluster.internal = 2, database.cluster.orole = 0... 
2 | null | 0  | writer | {database.cluster.internal = 2, database.cluster.orole = 0... 
--+------+----+--------+------------------------------------------------------- 
3 item(s) found.  Query executed in 0.002 sec(s). 

Создание новых ролей

Чтобы создать новую роль, используйте оператор INSERT.

orientdb> INSERT INTO ORole SET name = 'developer', mode = 0 

Работа с режимами

Когда правила определяют, что пользователи, принадлежащие к определенным ролям, могут выполнять в базах данных, режимы работы определяют, как OrientDB интерпретирует эти правила. Существует два типа режимов работы, обозначенные 1 и 0.

  • Allow All But (Rules) — по умолчанию это режим суперпользователя. Укажите исключения для этого, используя правила. Если OrientDB не находит правил для запрошенного ресурса, он позволяет пользователю выполнить операцию. Используйте этот режим в основном для опытных пользователей и администраторов. Администратор роли по умолчанию использует этот режим по умолчанию и не имеет правил исключения. Это записано как 1 в базе данных.

  • Запретить все, но (правила) — по умолчанию этот режим ничего не разрешает. Укажите исключения для этого, используя правила. Если OrientDB находит правила для запрошенного ресурса, он позволяет пользователю выполнить операцию. Используйте этот режим по умолчанию для всех классических пользователей. Роли по умолчанию, читатель и писатель, используют этот режим. Это записано как 0 в базе данных.

Allow All But (Rules) — по умолчанию это режим суперпользователя. Укажите исключения для этого, используя правила. Если OrientDB не находит правил для запрошенного ресурса, он позволяет пользователю выполнить операцию. Используйте этот режим в основном для опытных пользователей и администраторов. Администратор роли по умолчанию использует этот режим по умолчанию и не имеет правил исключения. Это записано как 1 в базе данных.

Запретить все, но (правила) — по умолчанию этот режим ничего не разрешает. Укажите исключения для этого, используя правила. Если OrientDB находит правила для запрошенного ресурса, он позволяет пользователю выполнить операцию. Используйте этот режим по умолчанию для всех классических пользователей. Роли по умолчанию, читатель и писатель, используют этот режим. Это записано как 0 в базе данных.

OrientDB — Студия

OrientDB предоставляет веб-интерфейс для выполнения операций с базой данных через графический интерфейс. В этой главе описываются различные параметры, доступные в OrientDB.

Домашняя страница студии

Studio — это веб-интерфейс для администрирования OrientDB, который поставляется в комплекте с дистрибутивом OrientDB.

Сначала вам нужно запустить сервер OrientDB с помощью следующей команды.

$ server.sh 

Если вы запустите OrientDB на своем компьютере, доступ к веб-интерфейсу можно получить через URL —

http://localhost:2480

Если команда выполнена успешно, на экране будет выведено следующее.

Администрация OrientDB

Подключиться к существующей базе данных

Для входа выберите базу данных из списка баз данных и используйте любого пользователя базы данных. По умолчанию (имя пользователя / пароль) читатель / читатель может читать записи из базы данных, писатель / писатель может читать, создавать, обновлять и удалять записи, в то время как администратор / администратор имеет все права.

Удалить существующую базу данных

Выберите базу данных из списка баз данных и щелкните значок корзины. Studio откроет всплывающее окно с подтверждением, в котором вам нужно будет ввести имя пользователя сервера и пароль сервера.

Затем нажмите кнопку «Удалить базу данных». Вы можете найти учетные данные сервера в файле $ ORIENTDB_HOME / config / orientdb-server-config.xml .

<users> 
   <user name = "root" password = "pwd" resources = "*" /> 
</users>

Создать новую базу данных

Чтобы создать новую базу данных, нажмите кнопку «Новая БД» на главной странице.

Новая база данных

Следующая информация необходима для создания новой базы данных —

  • Имя базы данных
  • Тип базы данных (Документ / График)
  • Тип хранения (plocal / memory)
  • Пользователь сервера
  • Пароль сервера

Вы можете найти учетные данные сервера в файле $ ORIENTDB_HOME / config / orientdbserver-config.xml .

<users> 
   <user name = "root" password = "pwd" resources = "*" /> 
</users>

После создания Studio автоматически войдет в новую базу данных.

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

Studio поддерживает автоматическое распознавание языка, который вы используете между поддерживаемыми: SQL и Gremlin. Во время записи используйте функцию автозаполнения, нажав Ctrl + Пробел .

Следующие ярлыки доступны в редакторе запросов —

  • Ctrl + Return — чтобы выполнить запрос или просто нажать кнопку « Выполнить» .

  • Ctrl / Cmd + Z — отменить изменения.

  • Ctrl / Cmd + Shift + Z — чтобы повторить изменения.

  • Ctrl / Cmd + F — для поиска в редакторе.

  • Ctrl / Cmd + / — Переключить комментарий.

Ctrl + Return — чтобы выполнить запрос или просто нажать кнопку « Выполнить» .

Ctrl / Cmd + Z — отменить изменения.

Ctrl / Cmd + Shift + Z — чтобы повторить изменения.

Ctrl / Cmd + F — для поиска в редакторе.

Ctrl / Cmd + / — Переключить комментарий.

На следующем снимке экрана показано, как выполнить запрос.

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

Нажав любое значение @rid в наборе результатов, вы перейдете в режим редактирования документа, если запись является Документом, в противном случае вы перейдете к редактированию вершины.

Вы можете добавить в закладки свои запросы, щелкнув значок звездочки в наборе результатов или в редакторе. Чтобы просмотреть запросы, добавленные в закладки , нажмите кнопку « Закладки» . Studio откроет список закладок слева, где вы сможете редактировать / удалять или повторно запускать запросы.

Запрос закладок

Studio сохраняет выполненные запросы в локальном хранилище браузера. В настройках запросов вы можете настроить, сколько запросов студия будет хранить в истории. Вы также можете выполнить поиск ранее выполненного запроса, удалить все запросы из истории или удалить один запрос.

Редактировать вершину

Для редактирования вершины графа перейдите в раздел «График». Затем выполните следующий запрос.

Select From Customer

При успешном выполнении запроса следующий снимок экрана. Выберите конкретную вершину на холсте графа для редактирования.

Граф Холст

Выберите символ редактирования в конкретной вершине. Вы получите следующий экран, который содержит опции для редактирования вершины.

Редактировать символ

Диспетчер схем

OrientDB может работать в режиме без схемы, в режиме схемы или в комбинации обоих. Здесь мы обсудим режим схемы. Нажмите на раздел Схема в верхней части веб-интерфейса. Вы получите следующий скриншот.

Режим схемы

Создать новый класс

Чтобы создать новый класс, просто нажмите кнопку « Новый класс» . Следующий скриншот появится. Вам нужно будет предоставить следующую информацию, как показано на скриншоте, чтобы создать новый класс.

Создать новый класс

Просмотреть все индексы

Если вы хотите получить обзор всех индексов, созданных в вашей базе данных, просто нажмите кнопку «Все индексы» в пользовательском интерфейсе схемы. Это обеспечит быстрый доступ к некоторой информации об индексах (имя, тип, свойства и т. Д.), И вы можете удалить или перестроить их отсюда.

Просмотреть все индексы

Редактировать класс

Нажмите на любой класс в разделе схемы, вы получите следующий скриншот.

Редактировать класс

При редактировании класса вы можете добавить свойство или новый индекс.

Добавить недвижимость

Нажмите кнопку «Создать свойство», чтобы добавить свойство. Вы получите следующий скриншот.

Вы должны предоставить следующие данные, как показано на скриншоте, чтобы добавить свойство.

Добавить недвижимость

Добавить индекс

Нажмите кнопку «Новый индекс». Вы получите следующий скриншот. Вы должны предоставить следующие данные, как показано на скриншоте, чтобы добавить индекс.

Добавить индекс

Редактор графиков

Нажмите на раздел графика. Вы можете не только визуализировать свои данные в графическом стиле, но и взаимодействовать с графиком и изменять его.

Чтобы заполнить область графика, введите запрос в редакторе запросов или используйте функцию Send To Graph из пользовательского интерфейса Browse.

Редактор графиков

Добавить вершины

Чтобы добавить новую вершину в базу данных графиков и в область холста графика, необходимо нажать кнопку « Добавить вершину» . Эта операция выполняется в два этапа.

На первом шаге вы должны выбрать класс для новой вершины и затем нажать «Далее».

Добавить вершину

На втором шаге вы должны вставить значения полей новой вершины. Вы также можете добавить настраиваемые поля, так как OrientDB поддерживает режим без схемы. Чтобы сделать новую вершину постоянной, нажмите «Сохранить изменения», и вершина будет сохранена в базе данных и добавлена ​​в область холста.

Новая вершина

Удалить вершины

Откройте круглое меню, нажав на вершину, которую вы хотите удалить. Откройте подменю, наведя указатель мыши на пункт меню далее (…), а затем щелкните значок корзины.

Удалить вершины из холста

Откройте круглое меню, откройте подменю, наведя указатель мыши на пункт меню далее (…), а затем щелкните значок ластика.

Проверять вершины

Если вы хотите быстро взглянуть на свойство Vertex, щелкните значок глаза.

Осмотреть Вершину

Безопасность

Studio 2.0 включает новое Управление безопасностью, где вы можете управлять пользователями и ролями в графической форме.

пользователей

Для управления пользователями базы данных вы можете выполнить следующие действия:

  • Поиск пользователей
  • Добавить пользователей
  • Удалить пользователей
  • Изменить пользователя: роли можно редактировать в строке, для имени, статуса и пароля нажмите кнопку Изменить.

пользователи базы данных

Добавить пользователей

Чтобы добавить нового пользователя, нажмите кнопку « Добавить пользователя» , заполните информацию о новом пользователе (имя, пароль, статус, роли) и затем сохраните, чтобы добавить нового пользователя в базу данных.

Добавить пользователей

Роли

Для управления ролями базы данных вы можете выполнить следующие действия:

  • Поиск Роль
  • Добавить роль
  • Удалить роль
  • Изменить роль

Роли базы данных

Добавить роль

Чтобы добавить нового пользователя, нажмите кнопку « Добавить роль» , заполните информацию о новой роли (имя, родительская роль, режим) и затем сохраните, чтобы добавить новую роль в базу данных.

Добавить роли

Добавить правило к роли

Чтобы добавить новое правило безопасности для выбранной роли, нажмите кнопку « Добавить правило» . Это спросит у вас строку ресурса, который вы хотите защитить. Затем вы можете настроить разрешения CRUD для вновь созданного ресурса.

Добавить роль

OrientDB — интерфейс Java

Как и в RDBMS, OrientDB поддерживает JDBC. Для этого сначала нам нужно настроить среду для программирования JDBC. Ниже описана процедура создания соединения между вашим приложением и базой данных.

Для начала нам нужно скачать драйвер JDBC. Посетите следующую ссылку https://code.google.com/archive/p/orient/downloads, чтобы загрузить OrientDB-JDBC.

Ниже приведены пять основных шагов для достижения подключения OrientDB-jdbc.

  • Загрузить драйвер JDBC
  • Создать соединение
  • Создать заявление
  • Выполнить заявление
  • Закрыть соединение

пример

Попробуйте следующий пример, чтобы понять подключение OrientDB-JDBC. Давайте рассмотрим, у нас есть таблица сотрудников, которая содержит следующие поля и их типы.

Sr.No. Имя поля Тип
1 Я бы целое число
2 название строка
3 Оплата труда целое число
4 Дате вступления Дата

Вы можете создать схему (таблицу), выполнив следующие команды.

CREATE DATABASE PLOCAL:/opt/orientdb/databases/testdb 
CREATE CLASS Employee 
CREATE PROPERTY Customer.id integer 
CREATE PROPERTY Customer.name String 
CREATE PROPERTY Customer.salary integer 
CREATE PROPERTY Customer.join_date date 

После выполнения всех команд вы получите таблицу Employee со следующими полями, имя сотрудника с полями id, age и join_date.

Сохраните следующий код в файле OrientJdbcDemo.java .

import com.orientechnologies.common.log.OLogManager; 
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.BeforeClass;
  
import java.io.File; 
import java.sql.DriverManager; 
import java.util.Properties;
  
import static com.orientechnologies.orient.jdbc.OrientDbCreationHelper.createSchemaDB; 
import static com.orientechnologies.orient.jdbc.OrientDbCreationHelper.loadDB; 
import static java.lang.Class.forName;
  
public abstract class OrientJdbcDemo {
  
   protected OrientJdbcConnection conn; 
   
   public static void main(String ar[]){ 
       
      //load Driver 
      forName(OrientJdbcDriver.class.getName()); 
      String dbUrl = "memory:testdb"; 
      ODatabaseDocumentTx db = new ODatabaseDocumentTx(dbUrl); 
      String username = "admin"; 
      String password = "admin"; 
      createSchemaDB(db); 
      loadDB(db, 20); 
      dbtx.create(); 
       
      //Create Connection 
      Properties info = new Properties(); 
      info.put("user", username); 
      info.put("password", password); 
      conn = (OrientJdbcConnection) DriverManager.getConnection("jdbc:orient:" + dbUrl, info); 
	  
      //create and execute statement 
      Statement stmt = conn.createStatement(); 
      int updated = stmt.executeUpdate("INSERT into emplyoee 
         (intKey, text, salary, date) values ('001','satish','25000','" 
         + date.toString() + "')"); 
      int updated = stmt.executeUpdate("INSERT into emplyoee 
         (intKey, text, salary, date) values ('002','krishna','25000','" 
         + date.toString() + "')"); 
      System.out.println("Records successfully inserted"); 
	  
      //Close Connection 
      if (conn != null && !conn.isClosed()) 
         conn.close(); 
   } 
}

Следующая команда используется для компиляции вышеуказанной программы.

$ javac –classpath:.:orientdb-jdbc-1.0-SNAPSHOT.jar OrientJdbcDemo.java  
$ java –classpath:.:orientdb-jdbc-1.0-SNAPSHOT.jar OrientJdbcDemo 

Если вышеуказанная команда выполнена успешно, вы получите следующий вывод.

Records Successfully Inserted 

OrientDB — интерфейс Python

Драйвер OrientDB для Python использует двоичный протокол. PyOrient — это имя проекта git hub, которое помогает связать OrientDB с Python. Он работает с OrientDB версии 1.7 и выше.

Следующая команда используется для установки PyOrient.

pip install pyorient

Вы можете использовать файл сценария с именем demo.py для выполнения следующих задач:

  • Создать экземпляр клиента означает создать соединение.

  • Создайте БД с именем DB_Demo .

  • Откройте БД с именем DB_Demo.

  • Создайте класс my_class.

  • Создайте свойства id и name.

  • Вставьте запись в мой класс.

Создать экземпляр клиента означает создать соединение.

Создайте БД с именем DB_Demo .

Откройте БД с именем DB_Demo.

Создайте класс my_class.

Создайте свойства id и name.

Вставьте запись в мой класс.

//create connection 
client = pyorient.OrientDB("localhost", 2424) 
session_id = client.connect( "admin", "admin" ) 
//create a databse 
client.db_create( db_name, pyorient.DB_TYPE_GRAPH, pyorient.STORAGE_TYPE_MEMORY ) 
//open databse 
client.db_open( DB_Demo, "admin", "admin" ) 
//create class 
cluster_id = client.command( "create class my_class extends V" ) 
//create property 
cluster_id = client.command( "create property my_class.id Integer" ) 
cluster_id = client.command( "create property my_class.name String" ) 
//insert record 
client.command("insert into my_class ( 'id','’name' ) values( 1201, 'satish')") 

Выполните приведенный выше сценарий с помощью следующей команды.