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

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

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

MongoDB против OrientDB

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

Особенности MongoDB OrientDB
Relationships Использует СОЕДИНЕНИЯ СУБД для создания отношений между сущностями. Он требует высоких затрат времени выполнения и не масштабируется при увеличении масштаба базы данных. Встраивает и связывает документы, такие как реляционная база данных. Он использует прямые сверхбыстрые ссылки, взятые из мира баз данных графов.
Fetch Plan Дорогостоящие операции JOIN. Легко возвращает полный график со связанными документами.
Transactions Не поддерживает транзакции ACID, но поддерживает атомарные операции. Поддерживает транзакции ACID, а также атомарные операции.
Query language Имеет собственный язык на основе JSON. Язык запросов построен на SQL.
Indexes Использует алгоритм B-Tree для всех индексов. Поддерживает три различных алгоритма индексации, чтобы пользователь мог добиться максимальной производительности.
Storage engine Использует технику отображения памяти. Использует имя механизма хранения LOCAL и PLOCAL.

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

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

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

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

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

Предпосылки

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

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

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

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

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

После загрузки вы получите бинарный пакет в своем Downloads папка.

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

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

В Linux

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

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

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

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

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

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

В Windows

  • После скачивания вы получите orientdb-community-2.1.9.zip файл в вашем Downloadsпапка. Распакуйте zip-файл с помощью средства для распаковки zip.

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

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

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

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

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

В Linux

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

В Windows

OrientDB - это серверное приложение, поэтому оно должно выполнить несколько задач, прежде чем начать завершение процесса виртуальной машины Java. Если вы хотите выключить сервер OrientDB вручную, вам необходимо выполнитьshutdown.batфайл. Но экземпляры сервера не останавливаются правильно, когда система внезапно выключается без выполнения вышеуказанного сценария. Программы, которые управляются операционной системой с помощью набора определенных сигналов, называютсяservices в 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 file - это служебное приложение для запуска приложений как служб.

    • prunmgr.exe file - это приложение, используемое для мониторинга и настройки служб 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

  • Служба устанавливается, когда вы запускаете файл 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, используя следующие шаги.

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

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

В Linux

Следуйте данной процедуре для проверки установки OrientDB в Linux.

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

$ 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]

Running the console - Вы можете использовать следующую команду для запуска 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>

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

В Windows

Следуйте данной процедуре для проверки установки OrientDB в Windows.

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

> 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]

Running the console - Вы можете использовать следующую команду для запуска 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\>

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

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

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

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

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

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

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

Модель графа

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

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

Реляционная модель Модель графа Модель графика OrientDB
Стол Класс вершины и ребра Класс, расширяющий "V" (для вершины) и "E" (для ребер)
Строка Вершина Вершина
Столбец Vertex and Edge свойство Vertex and Edge свойство
Отношения Край Край

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

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

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

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

Объектная модель

Эта модель унаследована от объектно-ориентированного программирования и поддерживает Inheritance между типами (подтипы расширяют супертипы), Polymorphism когда вы ссылаетесь на базовый класс и Direct binding from / to Объекты, используемые в языках программирования.

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

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

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

Запись

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

  • Document
  • Запись байтов
  • Vertex
  • Edge

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 в СУБД. OrientDB может загружать и сохранять документ Тип записи вместе с двоичными данными.

Вершина

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

Край

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

Класс

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

Кластер

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

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

Отношения

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

База данных

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

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

Sr. No. Тип Описание
1 Булево

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

Java types: java.lang.Boolean

Min: 0

Max: 1

2 Целое число

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

Java types: java.lang.Interger

Min: -2 147 483 648

Max: +2 147 483 647

3 короткий

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

Java types: java.lang.short

Min: -32 768

Max: 32 767

4 Долго

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

Java types: java.lang.Long

Min: -2 63

Max+2 63 -1

5 Плавать

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

Java types: java.lang.Float

: 2 -149

Max: ( 2-2-23 ) * 2, 127

6 Двойной

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

Java types: Java.lang.Double.

Min: 2 -1074

Max: ( 2-2-52 ) * 2 1023

7 Дата-время

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

Java types: java.util.Date

8 Строка

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

Java types: java.lang.String

9 Двоичный

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

Java types: byte []

Min: 0

Max: 2 147 483 647

10 Встроенный

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

Java types: ORecord

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

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

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

Min: 0

Max: 41 000 000 наименований

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

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

Java types: set <объекты>

Min: 0

Max: 41 000 000 наименований

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

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

Java types: Карта <String, ORecord>

Min: 0

Max: 41 000 000 наименований

14 Ссылка

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

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

Min: 1

Max: 32767: 2 ^ 63-1

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

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

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

Min: 0

Max: 41 000 000 наименований

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

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

Java types: Установить <? расширяет ORecord>

Min: 0

Max: 41 000 000 наименований

17 Ссылка на карту

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

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

Min: 0

Max: 41 000 000 наименований

18 Байт

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

Java types: java.lang.Byte

Min: -128

Max: +127

19 Переходный Любое значение, не сохраненное в базе данных.
20 Свидание

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

Java Types: java.util.Date

21 год На заказ

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

Java types: OSerializableStream

Min: 0

Max: Икс

22 Десятичный

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

Java types: java.math.BigDecimal

23 LinkBag

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

Java types: ORidBag

24 Любые

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

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

Консоль OrientDB - это приложение 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

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

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

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

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

<database-url>- Определяет URL-адрес базы данных. URL-адрес состоит из двух частей: одна - <режим>, а вторая - <путь>.

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

<path> - Определяет путь к базе данных.

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

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

<storage-type>- Определяет типы хранилищ. Вы можете выбрать МЕСТО или ПАМЯТЬ.

пример

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

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

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

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

orientdb {db = demo}>

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

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

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

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

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

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

пример

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

orientdb> ALTER DATABASE custom strictSQL = false

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

Database updated successfully

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

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

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

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

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

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

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

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

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

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

<destination> - Расположение целевого файла с указанием места для хранения архива zip-файла.

<type>- Дополнительный тип резервного копирования. Имеется любой из двух вариантов.

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

  • LVM - в фоновом режиме использует моментальный снимок LVM для копирования при записи.

пример

Сделайте резервную копию демонстрационной базы данных, которая находится в локальной файловой системе / opt / orientdb / databases / 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 также поддерживает операцию восстановления. Только из консольного режима вы можете успешно выполнить эту операцию.

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

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. Он открывает базу данных.

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

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

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

<database-url>- Определяет URL-адрес базы данных. URL-адрес состоит из двух частей: одна - <режим>, а вторая - <путь>.

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

<path> - Определяет путь к базе данных.

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

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

пример

В предыдущих главах мы уже создали базу данных под названием «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. Он закрывает текущую открытую базу данных.

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

DISCONNECT

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

пример

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

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

orientdb {db = demo}> DISCONNECT

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

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

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

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

info

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

пример

В этом примере мы будем использовать ту же базу данных с именем 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.

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

LIST DATABASES

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

пример

Прежде чем получить список баз данных, мы должны подключиться к серверу localhost через удаленный сервер. Необходимо напомнить, что имя пользователя и пароль для подключения к экземпляру localhost - это гость и гость соответственно, что настраивается в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.

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

FREEZE DATABASE

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

пример

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

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

Orientdb {db = demo}> FREEZE DATABASE

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

Database 'demo' was frozen successfully

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

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

RELEASE DATABASE

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

пример

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

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

Orientdb {db = demo}> RELEASE DATABASE

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

Database 'demo' was release successfully

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

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

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

CONFIG

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

пример

В этом примере мы будем использовать ту же базу данных с именем 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.

Набор конфигурации

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

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

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

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

пример

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

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

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

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

Local configuration value changed correctly

Конфигурация Получить

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

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

CONFIG GET <config-variable>

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

пример

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

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

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

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

Local configuration: tx.autoRetry = 5

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

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

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

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

EXPORT DATABASE <output file>

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

пример

В этом примере мы будем использовать ту же базу данных с именем 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

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

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

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

IMPORT DATABASE <input file>

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

пример

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

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

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

Database import completed in 11612ms

Подобно СУБД, OrientDB также предоставляет концепции транзакций, такие как фиксация и откат. Commit относится к закрытию транзакции путем сохранения всех изменений в базе данных. Rollback относится к восстановлению состояния базы данных до точки, в которой вы открыли транзакцию.

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

COMMIT

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

пример

В этом примере мы будем использовать ту же базу данных с именем 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.

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

ROLLBACK

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

пример

В этом примере мы будем использовать ту же базу данных с именем 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).

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

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

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

OPTMIZE DATABASE [-lwedges] [-noverbose]

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

пример

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

OPTIMIZE DATABASE -lwedges

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

Database Optimization completed in 35ms

Подобно РСУБД, OrientDB предоставляет возможность удаления базы данных. Drop database означает полное удаление базы данных.

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

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

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

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

<server-username> - Имя пользователя базы данных, у которого есть право удалять базу данных.

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

пример

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

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

orientdb {db = demo}> DROP DATABASE

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

Database 'demo' deleted successfully

OR

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

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

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

Database 'demo' deleted successfully

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

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

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

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 - Возвращает всю новую запись.

FROM - Куда вы хотите вставить запись или набор результатов.

пример

Рассмотрим таблицу 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. Вы можете проверить таблицу, выполнив запрос выбора в таблице клиентов.

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

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

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

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 поддерживает различные типы 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 ]

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

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

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

WHERE - Задает условие фильтрации набора результатов.

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

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

ORDER BY - Указывает поле для упорядочивания записей.

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

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

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

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

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

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

PARALLEL - Выполняет запрос к параллельным потокам 'x'.

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

пример

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

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

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

Method 1 - Вы можете использовать следующий запрос, чтобы выбрать все записи из таблицы «Клиент».

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   
----+-----+--------+----+-------+----

Method 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 
----+-----+--------+----+-------+----

Method 3 - Выберите идентификатор, имя записи из таблицы «Клиент» с именами в верхнем регистре.

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      
----+--------+----+-------

Method 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   
----+-----+--------+----+-------+----

Method 5 - Выберите все записи из таблицы «Клиент», в любом поле которой содержится слово «ш».

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   
----+-----+--------+----+-------+----

Method 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 
----+-----+--------+----+-------+----

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

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

LOAD RECORD <record-id>

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

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

пример

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

Sr.No. имя Возраст
1 Сатиш 25
2 Кришна 26
3 Kiran 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                                             | 
+---------------------------------------------------------------------------+

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

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

RELOAD RECORD <record-id>

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

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

пример

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

Sr.No. имя Возраст
1 Сатиш 25
2 Кришна 26
3 Kiran 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                                             | 
+---------------------------------------------------------------------------+

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

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

EXPORT RECORD <format>

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

Note - Команда экспорта экспортирует загруженную запись на основе идентификатора записи.

пример

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

Sr.No. имя Возраст
1 Сатиш 25
2 Кришна 26
3 Kiran 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 
}

Update Recordкоманда используется для изменения значения конкретной записи. SET - основная команда для обновления определенного значения поля.

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

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 - Увеличивает указанное значение поля на заданное значение.

ADD - Добавляет новый элемент в поля коллекции.

REMOVE - Удаляет предмет из поля коллекции.

PUT - Ставит запись в поле карты.

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

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

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

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

RETURN - Задает возвращаемое выражение вместо количества записей.

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

TIMEOUT - Определяет время, в течение которого обновление запускается до истечения времени ожидания.

пример

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

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

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

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

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

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

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

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   
----+-----+--------+----+-------+----

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

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

TRUNCATE RECORD <rid>*

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

пример

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

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

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

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

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

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

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

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 
----+-----+--------+----+-------+----

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

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

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

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

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

RETURN - Задает возвращаемое выражение вместо количества записей.

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

TIMEOUT - Определяет время, в течение которого обновление запускается до истечения времени ожидания.

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

пример

Рассмотрим таблицу Customer.

Sr.No. имя Возраст
1 Сатиш 25
2 Кришна 26
3 Kiran 29
4 Javeed 21 год

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

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

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

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

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

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 поддерживает многомодельную функцию и предоставляет различные способы подхода и понимания основных концепций базы данных. Однако мы можем легко получить доступ к этим моделям с точки зрения API базы данных документов. Как и СУБД, OrientDB также использует запись как элемент хранилища, но использует тип документа. Документы хранятся в виде пар ключ / значение. Мы храним поля и свойства в виде пар ключ / значение, которые принадлежат классу концепций.

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

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

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

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

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

<super-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

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

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

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

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

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

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

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

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

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

Атрибут Тип Описание
ИМЯ Строка Меняет имя класса.
КОРОТКОЕ ИМЯ Строка Определяет короткое имя (то есть псевдоним) для класса. Используйте NULL, чтобы удалить присвоение короткого имени.
СУПЕРКЛАСС Строка Определяет суперкласс для класса. Чтобы добавить новый класс, вы можете использовать синтаксис + <class>, для его удаления используйте - <class>.
ЗАВЕРШИТЬ Десятичное число Определяет фактор негабаритности.
ADDCLUSTER Строка Добавляет кластер в класс. Если кластера не существует, создается физический кластер. Добавление кластеров в класс также полезно для хранения записей на распределенных серверах.
УДАЛИТЬ Строка Удаляет кластер из класса. Он не удаляет кластер, а только удаляет его из класса.
STRICTMODE - Включает или отключает строгий режим. В строгом режиме вы работаете в режиме полной схемы и не можете добавлять новые свойства в запись, если они являются частью определения схемы класса.
ВЫБОР КЛАСТЕРОВ - Определяет стратегию выбора при выборе кластера, который он использует для новых записей.
ТАМОЖЕННЫЙ - Определяет настраиваемые свойства. Имена и значения свойств должны соответствовать синтаксису <propertyname> = <value> без пробелов между именем и значением.
АННОТАЦИЯ Булево Преобразует класс в абстрактный класс или наоборот.

пример

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

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

orientdb> ALTER CLASS Employee SUPERCLASS Person

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

Class altered successfully

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

orientdb> ALTER CLASS Employee SUPERCLASS +Person

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

Class altered successfully

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

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

TRUNCATE CLASS <class> [ POLYMORPHIC ] [ UNSAFE ]

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

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

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

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

пример

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

orientdb> TRUNCATE CLASS Profile

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

Class truncated successfully

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

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

DROP CLASS <class>

Отбросьте класс с именем класса.

пример

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

Orientdb> DROP CLASS Employee

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

Class dropped successfully

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

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

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

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

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

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

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

Default

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

2

Round-robin

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

3

Balanced

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

пример

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

orientdb> CREATE CLUSTER sales

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

Cluster created correctly with id #12

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

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

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

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

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

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

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

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

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

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

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

Version

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

2

Content

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

3

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

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

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

TRUNCATE CLUSTER <cluster-name>

где <cluster-name> это имя кластера.

пример

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

Orientdb {db = demo}> TRUNCATE CLUSTER Profile

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

Cluster truncated successfully.

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

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

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

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

пример

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

orientdb> DROP CLUSTER Sales

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

Cluster dropped successfully

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

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

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

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

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

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

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

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

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

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

BOOLEAN ЦЕЛОЕ КОРОТКАЯ ДОЛГО
Поплавок СВИДАНИЕ STRING ВСТРОЕННЫЙ
ССЫЛКА БАЙТ БИНАРНЫЙ ДВОЙНОЙ

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

ВСТРОЕННЫЙ СПИСОК EMBEDDEDSET ВСТРОЕННАЯ КАРТА
LINKLIST LINKSET LINKMAP

пример

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

orientdb> CREATE PROPERTY Employee.name STRING

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

Property created successfully with id = 1

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

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

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

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

<class> - Определяет класс, к которому принадлежит собственность.

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

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

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

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

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

Note - если вы изменяете ИМЯ или ТИП, этой команде потребуется некоторое время для обновления в зависимости от объема данных.

пример

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

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

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

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

Property altered successfully

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

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

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

Property altered successfully

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

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

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

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

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

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

[Force] - Если на объекте определены один или несколько индексов.

пример

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

orientdb> DROP PROPERTY Customer.age

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

Property dropped successfully

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

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

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

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

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

<class> - Определяет класс, к которому принадлежит вершина.

<cluster> - Определяет кластер, в котором хранится вершина.

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

<expression> - Определяет экспресс, который нужно установить для поля.

пример

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

Выполните следующий запрос, чтобы создать вершину без «имени» и на базовом классе 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)

Команда Move Vertex в OrientDB предназначена для перемещения одной или нескольких вершин из текущего местоположения в другой класс или кластер. Если вы применяете команду перемещения к определенной вершине, она обновит все ребра, которые связаны с этой вершиной. Если вы указываете кластер для перемещения вершины, он перемещает вершины к серверу-владельцу целевого кластера.

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

MOVE VERTEX <source> TO <destination> 
[SET [<field>=<value>]* [,]] 
[MERGE <JSON>] 
[BATCH <batch-size>]

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

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

<destination>- Определяет, куда вы хотите переместить вершину. Он поддерживает либо класс, либо кластер в качестве пункта назначения.

SET - Устанавливает значения в поля.

MERGE - Устанавливает значения в поля через JSON.

BATCH - Определяет размер партии.

Note- Эта команда обновляет все соединенные ребра, но не ссылки. При использовании 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)

Delete Vertexкоманда используется для удаления вершин из базы данных. При удалении он проверяет и поддерживает согласованность с ребрами и удаляет все перекрестные ссылки (с ребрами) на удаленную вершину.

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

DELETE VERTEX <vertex> [WHERE <conditions>] 
[LIMIT <MaxRecords>>] [BATCH <batch-size>]

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

<vertex> - Определяет вершину, которую вы хотите удалить, используя ее класс, идентификатор записи или с помощью подзапроса.

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 концепция 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>]

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

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

<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)

Update 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, или Record ID что обновляет края по идентификатору записи.

SET - Обновляет поле до заданных значений.

INCREMENT - Увеличивает данное поле на значение.

ADD - Определяет элемент для добавления в набор полей.

REMOVE - Определяет элемент, который нужно удалить из набора полей.

PUT - Определяет запись для размещения в полях карты.

RETURN - Определяет выражение, которое вы хотите вернуть после запуска обновления.

WHERE - Определяет условие фильтра.

LOCK - Определяет, как запись блокируется между загрузкой и обновлениями.

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

пример

Давайте рассмотрим пример обновления края с именем «адрес» в классе людей, взяв данные из адресной таблицы, имеющей область Id = 001 и имя человека = Кришна.

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)

Delete edgeкоманда используется для удаления базы данных. Это эквивалент команды удаления с добавлением проверки и поддержания согласованности с вершинами путем удаления всех перекрестных ссылок на ребро из свойств вершин «вход» и «выход».

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

DELETE EDGE  
   ( <rid> 
      | 
      [<rid> (, <rid>)*] 
      | 
      ( [ FROM (<rid> | <select_statement> ) ] [ TO ( <rid> | <select_statement> ) ] ) 
      | 
      [<class>]  
   ( 
      [WHERE <conditions>] 
      [LIMIT <MaxRecords>]  
      [BATCH <batch-size>]
   ))

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

FROM - Определяет вершину начальной точки удаляемого ребра.

To - Определяет вершину конечной точки удаляемого ребра.

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. В следующей таблице определен список функций, сгруппированных по их функциональности.

Графические функции

Sr.No. Название и описание функции
1

Out():

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

Syntax - out ([<label-1>] [, <label-n>] *)

2

In():

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

Syntax - в ([<label-1>] [, <label-n>] *)

3

Both():

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

Syntax - оба ([<label1>] [, <label-n>] *)

4

outE():

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

Syntax - outE ([<label1>] [, <label-n>] *)

5

inE():

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

Syntax - inE ([<label1>] [, <label-n>] *)

6

bothE():

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

Syntax - bothE ([<label1>] [, <label-n>] *)

7

outV():

Получает исходящие вершины, начиная с текущей записи как Edge.

Syntax - outV ()

8

inV():

Получить входящие вершины из текущей записи как Edge.

Syntax - inV ()

9

traversedElement():

Возвращает пройденный элемент (ы) в командах перемещения.

Syntax - traversedElement (<индекс> [, <элементы>])

10

traversedVertex():

Возвращает пройденные вершины в командах перемещения.

Syntax - traversedVertex (<индекс> [, <элементы>])

11

traversedEdge():

Возвращает пройденную кромку (-и) в командах перемещения.

Syntax - traversedEdge (<индекс> [, <элементы>])

12

shortestPath():

Возвращает кратчайший путь между двумя вершинами. Направление может быть ВНЕ (по умолчанию), ВХОДИТЕ или ОБА.

Synatx - shorttestPath (<sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]])

13

dijkstra():

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

Syntax - 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   
 ---+----------+-------+-------

Математические функции

Sr.No. Название и описание функции
1

eval():

Оценивает выражение в кавычках (или двойных кавычках).

Syntax - eval ('<выражение>')

2

min():

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

Syntax - min (<поле> [, <поле-n>] *)

3

max():

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

Syntax - max (<поле> [, <поле-n>] *)

4

sum()

Возвращает сумму всех возвращенных значений.

Syntax - сумма (<поле>)

5

abs():

Возвращает абсолютное значение. Он работает с Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null.

Syntax - абс (<поле>)

6

avg():

Возвращает среднее значение.

Syntax - avg (<поле>)

7

count():

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

Syntax - количество (<поле>)

8

mode():

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

Syntax - режим (<поле>)

9

median():

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

Syntax - медиана (<поле>)

10

percentile():

Возвращает n-й процентиль. При вычислении значение NULL игнорируется.

Syntax - процентиль (<поле> [, <квантиль-n>] *)

11

variance()

Возвращает среднюю дисперсию: среднее квадратичное отклонение от среднего.

Syntax - дисперсия (<поле>)

12

stddev()

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

Syntax - 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 
---+----------+---------

Коллекции Функции

Sr.No. Название и описание функции
1

set():

Добавляет значение в набор. Если значение является коллекцией, то оно объединяется с набором, в противном случае добавляется <value>.

Syntax - установить (<поле>)

2

map():

Добавляет значение к карте при первом создании карты. Если <value> - это карта, то она объединяется с картой, в противном случае пара <key> и <value> добавляется к карте как новая запись.

Syntax - карта (<ключ>, <значение>)

3

ist():

Добавляет значение в список при первом создании списка. Если <value> - это коллекция, то она объединяется со списком, иначе <value> добавляется в список.

Syntax - список (<поле>)

4

difference():

Работает как агрегат или встроенный. Если передан только один аргумент, то выполняется агрегирование, в противном случае выполняется и возвращается РАЗНИЦА между коллекциями, полученными в качестве параметров.

Syntax - разница (<поле> [, <поле-n>] *)

5

first():

Извлекает только первый элемент многозначных полей (массивов, коллекций и карт). Для типов без нескольких значений просто возвращает значение.

Syntax - первый (<поле>)

6

intersect():

Работает как агрегат или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняет и возвращает ВЗАИМОДЕЙСТВИЕ коллекций, полученных в качестве параметров.

Syntax - пересечь (<поле> [, <поле-n>] *)

7

distinct():

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

Syntax - отличное (<поле>)

8

expand():

Эта функция имеет два значения:

  • При использовании в поле коллекции он разворачивает коллекцию в поле и использует ее как результат.

  • При использовании в поле ссылки (RID) расширяет документ, на который указывает эта ссылка.

Syntax - развернуть (<поле>)

9

unionall():

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

Syntax - unionall (<field> [, <field-n>] *)

10

flatten():

Извлекает коллекцию в поле и использует ее как результат. Он устарел, используйте вместо него expand ().

Syntax - сгладить (<поле>)

11

last():

Извлекает только последний элемент многозначных полей (массивов, коллекций и карт). Для типов без нескольких значений просто возвращает значение.

Syntax - последний (<поле>)

12

symmetricDifference():

Работает как агрегат или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняет и возвращает СИММЕТРИЧНУЮ РАЗНИЦУ между коллекциями, полученными в качестве параметров.

Syntax - symricDifference (<field> [, <field-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 
---+----------+-------+---------------------------

Разные функции

Sr.No. Название и описание функции
1

date():

Возвращает дату, форматирующую строку. <date-as-string> - это дата в строковом формате, а <format> - это формат даты в соответствии с этими правилами.

Syntax - дата (<дата-как-строка> [<формат>] [, <часовой пояс>])

2

sysdate():

Возвращает текущую дату и время.

Syntax - sysdate ([<формат>] [, <часовой пояс>])

3

format():

Форматирует значение, используя соглашения String.format ().

Syntax - формат (<format> [, <arg1>] (, <arg-n>] *. Md)

4

distance():

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

Syntax - расстояние (<x-field>, <y-field>, <x-value>, <y-value>)

5

ifnull():

Возвращает переданное поле / значение (или необязательный параметр return_value_if_not_null). Если поле / значение не равно нулю, возвращается return_value_if_null.

Syntax - ifnull (<field | value>, <return_value_if_null> [, <return_value_if_not_null>] (, <field & .md # 124; value>] *)

6

coalesce():

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

Syntax - coalesce (<поле | значение> [, <поле-n | значение-n>] *)

7

uuid():

Создает UUID как 128-битное значение, используя вариант Лича-Зальца.

Syntax - uuid ()

8

if():

Оценивает условие (первые параметры) и возвращает второй параметр, если условие истинно, и третий - в противном случае.

Syntax - if (<выражение>, <результат-если-истина>, <результат-если-ложь>)

Попробуйте некоторые функции Misc, используя следующие запросы.

Выполните следующий запрос, чтобы узнать, как выполнить выражение 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.

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

ORDERED - Каждый раз, когда указатель вызывает метод .next, который возвращает новое значение.

CACHED- Последовательность кеширует N элементов на каждом узле. Для вызова каждого элемента мы используем.next(), что предпочтительнее, если кеш содержит более одного элемента.

Создать последовательность

Последовательность обычно используется для автоматического увеличения значения идентификатора человека. Как и другие концепции SQL в OrientDB, он также выполняет аналогичные операции, как Sequence в СУБД.

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

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 для вставки значения идентификатора в таблицу 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

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

Четыре типа индекса:

Индекс SB-Tree

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

  • UNIQUE- Эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

  • NOTUNIQUE - Эти индексы допускают дублирование ключей.

  • FULLTEXT- Эти индексы основаны на любом отдельном слове текста. Вы можете использовать их в запросах черезCONTAINSTEXT оператор.

  • DICTIONARY - Эти индексы аналогичны тем, которые используют UNIQUE, но в случае повторяющихся ключей они заменяют существующую запись новой записью.

Хеш-индекс

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

  • UNIQUE_HASH_INDEX- Эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

  • NOTUNIQUE_HASH_INDEX - Эти индексы допускают дублирование ключей.

  • FULLTEXT_HASH_INDEX- Эти индексы основаны на любом отдельном слове текста. Вы можете использовать их в запросах с помощью оператора CONTAINSTEXT.

  • DICTIONARY_HASH_INDEX - Эти индексы аналогичны тем, которые используют UNIQUE_HASH_INDEX, но в случае повторяющихся ключей они заменяют существующую запись новой записью.

Полнотекстовый указатель Lucene

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

Пространственный индекс Lucene

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

Создание индексов

Создать индекс - это команда для создания индекса по определенной схеме.

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

CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>] 
[METADATA {<metadata>}]

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

<name>- Определяет логическое имя для индекса. Вы также можете использовать нотацию <class.property> для создания автоматического индекса, привязанного к свойству схемы. <class> использует класс схемы, а <property> использует свойство, созданное в классе.

<class-name>- Предоставляет имя класса, который вы создаете для автоматического индексации. Этот класс должен существовать в базе данных.

<prop-names>- Предоставляет список свойств, которые вы хотите проиндексировать автоматическим индексом. Эти свойства уже должны существовать в схеме.

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

<key-type> - Предоставляет дополнительный тип ключа с автоматическими индексами.

<metadata> - Предоставляет представление 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)

Запрос индексов

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

Попробуйте выполнить следующий запрос, чтобы получить ключи индекса с именем 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 <name>

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

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

DROP INDEX sales_users.Id

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

Index dropped successfully

Как и СУБД, OrientDB поддерживает свойства ACID транзакций. Аtransactionвключает единицу работы, выполняемую в системе управления базой данных. Есть две основные причины поддерживать транзакции в среде базы данных.

  • Чтобы обеспечить одновременное восстановление после сбоев и сохранить целостность базы данных даже в случае сбоев системы.

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

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

Atomic - Когда вы что-то делаете для изменения базы данных, это изменение должно работать или не работать в целом.

Consistent - База данных должна оставаться согласованной.

Isolated - Если в то же время выполняются другие транзакции, пользователь не сможет видеть записи в параллельном выполнении.

Durable - Если система выйдет из строя (аппаратная или программная), сама база данных должна иметь возможность сделать резервную копию.

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

Зафиксировать

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

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

COMMIT

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

пример

В этом примере мы будем использовать ту же базу данных с именем 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

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

пример

В этом примере мы будем использовать ту же базу данных с именем 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 Hooksв терминологии базы данных не что иное, как триггеры, которые разрешают внутренние события до и после каждой операции CRUD в пользовательских приложениях. Вы можете использовать хуки для написания собственных правил проверки, для обеспечения безопасности или для организации внешних событий, таких как репликация в реляционной СУБД.

OrientDB поддерживает два типа перехватчиков:

Dynamic Hook - Триггеры, которые могут быть построены на уровне класса и / или на уровне документа.

Java (Native) Hook - Триггеры, которые могут быть построены с использованием классов Java.

Динамические хуки

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

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

  • onBeforeCreate - называется before создание нового документа.

  • onAfterCreate - называется after создание нового документа.

  • onBeforeRead - называется before чтение документа.

  • onAfterRead - называется after чтение документа.

  • onBeforeUpdate - называется before обновление документа.

  • onAfterUpdate - называется after обновление документа.

  • onBeforeDelete - называется before удаление документа.

  • onAfterDelete - называется after удаление документа.

Dynamic Hooks может вызывать -

  • Функции, написанные на 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'

Создадим preventDeletion() Функция Javascript.

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 является управление датами создания и обновления любого или всех классов. Например, вы можете установить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 при создании записи и устанавливает только UpdatedDate при каждом обновлении записи.

Компиляция хуков Java

Скомпилируйте код Java с помощью следующей команды. Note: Храните загруженный файл jar и эти файлы Java в одной папке.

$ jar cf hooks-1.0-SNAPSHOT.jar *.java

Переместите скомпилированный код туда, где сервер OrientDB может его найти

Вам нужно скопировать готовый файл .jar в каталог, где ваш сервер OrientDB будет их искать. Это означает './lib'папка в корневом каталоге вашего сервера OrientDB будет выглядеть так:

$ cp hooks-1.0-SNAPSHOT.jar "$ORIENTDB_HOME/lib"

Включить Test Hook в файле конфигурации сервера 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 оставаться без изменений.

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

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

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

На иллюстрации выше DB1, DB2, DB3 - это три разных экземпляра базы данных, используемые в приложении.

Level-1 кеш - это Local cacheв котором хранятся все сущности, известные конкретному сеансу. Если у вас есть три транзакции в этом сеансе, он будет содержать все сущности, используемые всеми тремя транзакциями. Этот кеш очищается при закрытии сеанса или при выполнении метода «очистки». Это снижает нагрузку на операции ввода-вывода между приложением и базой данных и, в свою очередь, увеличивает производительность.

Level-2 кеш - это Real cacheкоторый работает с использованием стороннего поставщика. Вы можете иметь полный контроль над содержимым кеша, то есть вы сможете указать, какие записи следует удалить, какие хранить дольше и так далее. Это полный общий кеш для нескольких потоков.

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

Как работает кеш в OrientDB?

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

Локальный режим (встроенная база данных)

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

Когда клиентское приложение запрашивает запись, OrientDB проверяет следующее:

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

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

  • Если в этот момент запись отсутствует в кеше, то запрашивает ее в Хранилище (диск, память).

Клиент-серверный режим (удаленная база данных)

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

Когда клиентское приложение запрашивает запись, OrientDB проверяет следующее:

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

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

  • На этом этапе, если запись отсутствует в кэше, она запрашивает ее у Сервера через вызов TCP / IP.

  • На сервере, если локальный кеш включен и содержит запрошенную запись, возвращает ее.

  • На этом этапе запись все еще не кэшируется на сервере, а затем запрашивает ее в хранилище (диск, память).

OrientDB использует платформу ведения журналов Java в комплекте с виртуальной машиной Java. Формат журнала OrientDB по умолчанию управляетсяOLogFormatter класс.

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

<date> <level> <message> [<requester>]

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

<date> - Это дата журнала в следующем формате: гггг-ММ-дд ЧЧ: мм: сс: SSS.

<level> - Это уровень записи в виде 5-символьного вывода.

<message> - Это текст журнала, он может быть любого размера.

[<class>] - Регистрируется класс Java (необязательно).

Поддерживаемые уровни содержатся в классе JRE java.util.logging.Level. Они -

  • ТЯЖЕЛЫЙ (максимальное значение)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST (наименьшее значение)

По умолчанию установлено два регистратора -

  • Consoleв качестве вывода оболочки / командной строки, запускающей приложение / сервер. Можно изменить, установив переменную log.console.level.

  • File, в качестве вывода в файлы журнала. Можно изменить, установив "log.file.level".

Настроить ведение журнала

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

syntax - Конфигурация ведения журнала 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>, где -

  • <тип> может быть "консоль" или "файл"
  • <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. Есть три способа повысить производительность для разных типов баз данных.

  • Document Database Performance Tuning - Он использует технику, которая помогает избежать создания каждого нового документа.

  • Object Database Performance Tuning - Он использует общие методы для повышения производительности.

  • Distributed Configuration Tuning - Он использует различные методологии для повышения производительности в распределенной конфигурации.

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

Настройки памяти

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

Серверные и встроенные настройки

Эти настройки действительны как для серверного компонента, так и для JVM, где приложение Java запускается с использованием OrientDB в режиме Embedded, при непосредственном использовании plocal.

Самым важным при настройке является обеспечение правильности настроек памяти. Что может иметь реальное значение, так это правильный баланс между кучей и виртуальной памятью, используемой картированием памяти, особенно для больших наборов данных (ГБ, ТБ и более), где структуры кэша памяти учитываются меньше, чем необработанный ввод-вывод.

Например, если вы можете назначить процессу Java максимум 8 ГБ, обычно лучше назначить небольшую кучу и большой буфер дискового кеша (память вне кучи).

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

java -Xmx800m -Dstorage.diskCache.bufferSize=7200 ...

В storage.diskCache.bufferSize установка (со старым "локальным" хранилищем было file.mmap.maxMemory) указывается в МБ и указывает, сколько памяти использовать для компонента Disk Cache. По умолчанию это 4 ГБ.

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

Настройки JVM

Настройки JVM кодируются в пакетных файлах server.sh (и server.bat). Вы можете изменить их, чтобы настроить JVM в соответствии с вашим использованием и настройками аппаратного и программного обеспечения. Добавьте следующую строку в файл server.bat.

-server -XX:+PerfDisableSharedMem

Этот параметр отключит запись отладочной информации о JVM. Если вам нужно профилировать JVM, просто удалите этот параметр.

Удаленные подключения

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

Стратегия получения

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

Пул сетевых подключений

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

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

Конфигурация очень простая, всего 2 параметра -

  • 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 (по умолчанию). Это ускоряет все чтения.

При обновлении вы должны учитывать номер версии и формат. Есть три типа форматов - MAJOR, MINOR, PATCH.

  • MAJOR версия влечет за собой несовместимые изменения API.

  • MINOR версия влечет за собой обратно совместимую функциональность.

  • PTCH версия влечет за собой исправления ошибок с обратной совместимостью.

Для синхронизации между дополнительной и основной версиями может потребоваться экспорт и импорт баз данных. Иногда вам нужно перенести базу данных из LOCAL в PLOCAL и перенести график в RidBag.

Миграция с LOCAL Storage Engine на PLOCAL

Начиная с версии 1.5.x OrientDB поставляется с новым механизмом хранения: PLOCAL (Paginated LOCAL). Он постоянен, как LOCAL, но хранит информацию по-другому. Следующие пункты показывают сравнение между МЕСТНЫМ и МЕСТНЫМ -

  • В PLOCAL записи хранятся в файлах кластера, а в LOCAL они разделены между кластером и сегментами данных.

  • PLOCAL более надежен, чем LOCAL, из-за режима добавления при записи.

  • PLOCAL имеет незначительные блокировки конфликтов при записи, что означает больший параллелизм.

  • PLOCAL не использует методы отображения памяти (MMap), поэтому поведение более «предсказуемо».

Чтобы перенести ваше ЛОКАЛЬНОЕ хранилище на новый PLOCAL, вам необходимо экспортировать и повторно импортировать базу данных, используя PLOCAL в качестве механизма хранения. Ниже приводится процедура.

Step 1 - Откройте новую оболочку (Linux / Mac) или командную строку (Windows).

Step 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

Step 3 - В локальной файловой системе создайте новую базу данных с помощью механизма "plocal" -

orientdb> CREATE DATABASE plocal:/temp/newdb admin admin plocal graph

Step 4 - Импортируйте старую базу данных в новую.

orientdb> IMPORT DATABASE /temp/demo.json.gzip -preserveClusterIDs=true 
orientdb> QUIT

Если вы обращаетесь к базе данных в той же JVM, не забудьте изменить URL-адрес с "local:" на "plocal:"

Перенести Graph в RidBag

Начиная с OrientDB 1.7, RidBag - это коллекция по умолчанию, которая управляет отношениями смежности в графах. Хотя более старая база данных, управляемая MVRB-деревом, полностью совместима, вы можете обновить свою базу данных до более нового формата.

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

  • Подключиться к базе данных CONNECT plocal:databases/<graphdb-name>

  • Запустить команду графа обновления

Как и СУБД, OrientDB также обеспечивает безопасность на основе хорошо известных концепций, пользователей и ролей. У каждой базы данных есть свои пользователи, и у каждого пользователя есть одна или несколько ролей. Роли - это сочетание режимов работы и набора разрешений.

Пользователи

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

  • Admin - Этот пользователь имеет доступ ко всем функциям базы данных без ограничений.

  • Reader- Этот пользователь имеет доступ только для чтения. Читатель может запрашивать любые записи в базе данных, но не может изменять или удалять их. У него нет доступа к внутренней информации, такой как сами пользователи и роли.

  • 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.

  • Deny All But (Rules)- По умолчанию этот режим ничего не позволяет. Укажите исключения из этого правила. Если OrientDB находит правила для запрошенного ресурса, он позволяет пользователю выполнить операцию. Используйте этот режим по умолчанию для всех классических пользователей. Роли по умолчанию, читатель и писатель, используют этот режим. В базе данных записывается как 0.

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

Домашняя страница студии

Studio - это веб-интерфейс для администрирования OrientDB, который входит в комплект поставки OrientDB.

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

$ server.sh

Если вы запустите OrientDB на своем компьютере, доступ к веб-интерфейсу можно получить через URL-адрес -

http://localhost:2480

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

Подключиться к существующей базе данных

Для входа в систему выберите базу данных из списка баз данных и используйте любого пользователя базы данных. По умолчанию (логин / пароль)reader/reader может читать записи из базы данных, writer/writer может читать, создавать, обновлять и удалять записи, а admin/admin имеет все права.

Удалить существующую базу данных

Выберите базу данных из списка баз данных и щелкните значок корзины. 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 + Space.

В редакторе запросов доступны следующие ярлыки -

  • Ctrl + Return - Чтобы выполнить запрос или просто нажмите Run кнопка.

  • Ctrl/Cmd + Z - Отменить изменения.

  • Ctrl/Cmd + Shift + Z - Чтобы повторить изменения.

  • Ctrl/Cmd + F - Искать в редакторе.

  • Ctrl/Cmd + / - Чтобы переключить комментарий.

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

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

Вы можете добавить свои запросы в закладки, щелкнув значок звездочки в наборе результатов или в редакторе. Чтобы просмотреть запросы, отмеченные закладками, щелкните значокBookmarksкнопка. Studio откроет список закладок слева, где вы можете редактировать / удалять или повторно запускать запросы.

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

Редактировать вершину

Чтобы отредактировать вершину графа, перейдите в раздел График. Затем выполните следующий запрос.

Select From Customer

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

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

Менеджер схемы

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

Создать новый класс

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

Просмотреть все индексы

Если вы хотите получить обзор всех индексов, созданных в вашей базе данных, просто нажмите кнопку «Все индексы» в пользовательском интерфейсе схемы. Это обеспечит быстрый доступ к некоторой информации об индексах (имя, тип, свойства и т. Д.), И вы можете удалить или перестроить их отсюда.

Изменить класс

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

При редактировании класса вы можете добавить свойство или новый индекс.

Добавить недвижимость

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

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

Добавить индекс

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

Редактор графиков

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

Чтобы заполнить область графика, введите запрос в редакторе запросов или воспользуйтесь функцией «Отправить в график» из пользовательского интерфейса обзора.

Добавить вершины

Чтобы добавить новую вершину в базу данных графика и в область холста графика, необходимо нажать кнопку Add Vertex. Эта операция выполняется в два этапа.

На первом этапе вы должны выбрать класс для новой вершины и затем нажать кнопку «Далее».

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

Удалить вершины

Откройте круговое меню, щелкнув вершину, которую вы хотите удалить. Откройте подменю, наведя указатель мыши на пункт меню «Дополнительно» (...), а затем щелкните значок корзины.

Удалить вершины с холста

Откройте круговое меню, откройте подменю, наведя указатель мыши на пункт меню «Дополнительно» (...), а затем щелкните значок ластика.

Осмотреть вершины

Если вы хотите быстро взглянуть на свойство Vertex, щелкните значок глаза.

Безопасность

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

Пользователи

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

  • Поиск пользователей
  • Добавить пользователей
  • Удалить пользователей
  • Редактировать пользователя: роли можно редактировать в режиме реального времени, для получения имени, статуса и пароля нажмите кнопку Edit кнопка

Добавить пользователей

Чтобы добавить нового пользователя, щелкните значок Add User кнопку, введите информацию для нового пользователя (имя, пароль, статус, роли), а затем сохраните, чтобы добавить нового пользователя в базу данных.

Роли

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

  • Роль поиска
  • Добавить роль
  • Удалить роль
  • Изменить роль

Добавить роль

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

Добавить правило к роли

Чтобы добавить новое правило безопасности для выбранной роли, щелкните значок Add Ruleкнопка. Вам будет задан вопрос о строке ресурса, который вы хотите защитить. Затем вы можете настроить разрешения CRUD для вновь созданного ресурса.

Подобно СУБД, 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

После выполнения всех команд вы получите таблицу сотрудников со следующими полями, имя сотрудника с полями id, возраст и 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 использует двоичный протокол. PyOrient - это название проекта концентратора git, которое помогает соединить OrientDB с Python. Он работает с OrientDB версии 1.7 и новее.

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

pip install pyorient

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

  • Создание экземпляра клиента означает создание соединения.

  • Создать БД с именем DB_Demo.

  • Откройте БД с именем DB_Demo.

  • Создайте класс my_class.

  • Создайте идентификатор свойства и имя.

  • Вставьте запись в мой класс.

//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')")

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

$ python demo.py