OrientDB - คู่มือฉบับย่อ

OrientDB เป็น Open Source NoSQL Database Management System NoSQL Databaseจัดให้มีกลไกในการจัดเก็บและดึงข้อมูล NO-relational หรือ NON-relational data ที่อ้างถึงข้อมูลอื่นที่ไม่ใช่ข้อมูลตารางเช่นข้อมูลเอกสารหรือข้อมูลกราฟ ฐานข้อมูล NoSQL ถูกนำมาใช้มากขึ้นใน Big Data และเว็บแอปพลิเคชันแบบเรียลไทม์ ระบบ NoSQL บางครั้งเรียกว่า "Not Only SQL" เพื่อเน้นว่าระบบเหล่านี้อาจรองรับภาษาแบบสอบถามที่เหมือน SQL

OrientDB ยังเป็นของตระกูล NoSQL OrientDB เป็นฐานข้อมูลกราฟแบบกระจายรุ่นที่สองที่มีความยืดหยุ่นของเอกสารในผลิตภัณฑ์เดียวพร้อมใบอนุญาตโอเพนซอร์สของ Apache 2 มีฐานข้อมูล NoSQL หลายแห่งในตลาดก่อน OrientDB หนึ่งในนั้นคือ MongoDB

MongoDB กับ OrientDB

MongoDB และ OrientDB มีคุณสมบัติทั่วไปมากมาย แต่เครื่องยนต์มีความแตกต่างกันโดยพื้นฐาน MongoDB เป็นฐานข้อมูลเอกสารบริสุทธิ์และ OrientDB เป็นเอกสารไฮบริดที่มีเครื่องมือกราฟ

คุณสมบัติ MongoDB OrientDB
Relationships ใช้ RDBMS JOINS เพื่อสร้างความสัมพันธ์ระหว่างเอนทิตี มีต้นทุนรันไทม์สูงและไม่ปรับขนาดเมื่อขนาดฐานข้อมูลเพิ่มขึ้น ฝังและเชื่อมต่อเอกสารเช่นฐานข้อมูลเชิงสัมพันธ์ ใช้ลิงก์โดยตรงและรวดเร็วเป็นพิเศษที่นำมาจากโลกฐานข้อมูลกราฟ
Fetch Plan เข้าร่วมการดำเนินการที่มีค่าใช้จ่ายสูง ส่งคืนกราฟที่สมบูรณ์ได้อย่างง่ายดายด้วยเอกสารที่เชื่อมต่อกัน
Transactions ไม่รองรับธุรกรรม ACID แต่รองรับการทำงานของอะตอม รองรับธุรกรรม ACID เช่นเดียวกับการดำเนินการของอะตอม
Query language มีภาษาของตัวเองตาม JSON ภาษาคิวรีสร้างขึ้นบน SQL
Indexes ใช้อัลกอริทึม B-Tree สำหรับดัชนีทั้งหมด รองรับอัลกอริทึมการจัดทำดัชนีที่แตกต่างกันสามแบบเพื่อให้ผู้ใช้ได้รับประสิทธิภาพที่ดีที่สุด
Storage engine ใช้เทคนิคการทำแผนที่หน่วยความจำ ใช้ชื่อเอ็นจินการจัดเก็บ LOCAL และ PLOCAL

OrientDB เป็นโอเพนซอร์ส NoSQL DBMS แบบหลายรุ่นตัวแรกที่รวบรวมพลังของกราฟและความยืดหยุ่นของเอกสารไว้ในฐานข้อมูลการดำเนินงานประสิทธิภาพสูงที่ปรับขนาดได้

ไฟล์การติดตั้ง OrientDB มีให้เลือกสองรุ่น -

  • Community Edition - OrientDB community edition เผยแพร่โดย Apache ภายใต้ 0.2 license เป็นโอเพ่นซอร์ส

  • Enterprise Edition- OrientDB Enterprise Edition เปิดตัวเป็นซอฟต์แวร์ที่เป็นกรรมสิทธิ์ซึ่งสร้างขึ้นจากรุ่นชุมชน เป็นส่วนขยายของฉบับชุมชน

บทนี้อธิบายขั้นตอนการติดตั้ง OrientDB community edition เนื่องจากเป็นโอเพ่นซอร์ส

ข้อกำหนดเบื้องต้น

ทั้ง community และ Enterprise สามารถรันบนระบบปฏิบัติการใดก็ได้ที่ใช้ Java Virtual Machine (JVM) OrientDB ต้องการ Java ที่มีเวอร์ชัน 1.7 หรือใหม่กว่า

ใช้ขั้นตอนต่อไปนี้เพื่อดาวน์โหลดและติดตั้ง OrientDB ลงในระบบของคุณ

ขั้นตอนที่ 1 - ดาวน์โหลดไฟล์ติดตั้ง OrientDB Binary

OrientDB มาพร้อมกับไฟล์ติดตั้งในตัวเพื่อติดตั้งฐานข้อมูลบนระบบของคุณ มีแพ็กเกจไบนารีที่รวบรวมไว้ล่วงหน้าที่แตกต่างกัน (แพ็กเกจ tarred หรือ zipped) สำหรับระบบปฏิบัติการที่แตกต่างกัน คุณสามารถดาวน์โหลดไฟล์ OrientDB ได้จากลิงค์ดาวน์โหลด OrientDB

ภาพหน้าจอต่อไปนี้แสดงหน้าดาวน์โหลดของ OrientDB คุณสามารถดาวน์โหลดไฟล์ซิปหรือไฟล์ tarred โดยคลิกไอคอนระบบปฏิบัติการที่เหมาะสม

ในการดาวน์โหลดคุณจะได้รับแพ็คเกจไบนารีในไฟล์ Downloads โฟลเดอร์

ขั้นตอนที่ 2 - แยกและติดตั้ง OrientDB

ต่อไปนี้เป็นขั้นตอนในการแยกและติดตั้ง OrientDB สำหรับระบบปฏิบัติการอื่น

ใน Linux

หลังจากดาวน์โหลดคุณจะได้รับ orientdb-community-2.1.9.tar.gz ไฟล์ในไฟล์ Downloadsโฟลเดอร์ คุณสามารถใช้คำสั่งต่อไปนี้เพื่อแตกไฟล์ tarred

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

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อย้ายไฟล์ไลบรารี OrientDB ทั้งหมดจาก orientdbcommunity-2.1.9 to /opt/orientdb/ไดเรกทอรี ที่นี่เราใช้คำสั่ง super user (sudo) ดังนั้นคุณต้องระบุรหัสผ่านผู้ใช้ขั้นสูงเพื่อดำเนินการคำสั่งต่อไปนี้

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

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อลงทะเบียนไฟล์ orientdb คำสั่งและเซิร์ฟเวอร์ Orient

$ 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/ไดเร็กทอรีสำหรับเริ่มต้นและรันสคริปต์ ที่นี่เราใช้คำสั่ง super user (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

ใช้คำสั่งต่อไปนี้เพื่อหยุด daemon เซิร์ฟเวอร์ OrientDB ที่นี่คุณต้องระบุรหัสผ่านของผู้ใช้ตามลำดับซึ่งคุณกล่าวถึงในไฟล์ orientdb.sh เพื่อหยุดเซิร์ฟเวอร์

$ service orientdb stop

ใน Windows

OrientDB เป็นเซิร์ฟเวอร์แอ็พพลิเคชันดังนั้นจึงต้องทำงานหลายอย่างก่อนที่จะเริ่มปิดกระบวนการเครื่องเสมือน Java หากคุณต้องการปิดเซิร์ฟเวอร์ OrientDB ด้วยตนเองคุณต้องดำเนินการshutdown.batไฟล์. แต่อินสแตนซ์เซิร์ฟเวอร์ไม่หยุดทำงานอย่างถูกต้องเมื่อระบบปิดตัวลงอย่างกะทันหันโดยไม่เรียกใช้สคริปต์ด้านบน เรียกโปรแกรมที่ควบคุมโดยระบบปฏิบัติการที่มีชุดสัญญาณที่ระบุservices ใน Windows

เราต้องใช้ Apache Common Daemonซึ่งอนุญาตให้ผู้ใช้ Windows รวมแอปพลิเคชัน Java เป็นบริการ Windows ต่อไปนี้เป็นขั้นตอนในการดาวน์โหลดและลงทะเบียน Apache common daemon

  • คลิกที่ลิงค์ต่อไปนี้สำหรับApache ภูตทั่วไปสำหรับหน้าต่าง

  • คลิกที่ 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 →สร้างไดเรกทอรีใหม่และตั้งชื่อบริการ

  • คัดลอกไฟล์ 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 daemon

$ 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 หมายความว่าข้อมูลถูกเก็บไว้ใน Documents และกลุ่มของ Documents เรียกว่าเป็นCollection. ในทางเทคนิคเอกสารหมายถึงชุดของคู่คีย์ / ค่าหรือเรียกอีกอย่างว่าฟิลด์หรือคุณสมบัติ

OrientDB ใช้แนวคิดเช่นคลาสคลัสเตอร์และลิงค์สำหรับจัดเก็บจัดกลุ่มและวิเคราะห์เอกสาร

ตารางต่อไปนี้แสดงการเปรียบเทียบระหว่างโมเดลเชิงสัมพันธ์โมเดลเอกสารและโมเดลเอกสาร OrientDB -

แบบจำลองเชิงสัมพันธ์ แบบจำลองเอกสาร แบบจำลองเอกสาร OrientDB
ตาราง คอลเลกชัน คลาสหรือคลัสเตอร์
แถว เอกสาร เอกสาร
คอลัมน์ คู่คีย์ / ค่า ฟิลด์เอกสาร
ความสัมพันธ์ ไม่สามารถใช้ได้ ลิงค์

โมเดลกราฟ

โครงสร้างข้อมูลกราฟคือแบบจำลองข้อมูลที่สามารถจัดเก็บข้อมูลในรูปแบบของจุดยอด (โหนด) ที่เชื่อมต่อกันด้วยขอบ (Arcs) แนวคิดของฐานข้อมูลกราฟ OrientDB มาจากกราฟคุณสมบัติ จุดยอดและขอบเป็นสิ่งประดิษฐ์หลักของแบบจำลองกราฟ ประกอบด้วยคุณสมบัติซึ่งสามารถทำให้สิ่งเหล่านี้ดูเหมือนกับเอกสาร

ตารางต่อไปนี้แสดงการเปรียบเทียบระหว่างโมเดลกราฟโมเดลข้อมูลเชิงสัมพันธ์และโมเดลกราฟ OrientDB

แบบจำลองเชิงสัมพันธ์ โมเดลกราฟ โมเดลกราฟ OrientDB
ตาราง Vertex และ Edge Class คลาสที่ขยาย "V" (สำหรับ Vertex) และ "E" (สำหรับ Edges)
แถว จุดยอด จุดยอด
คอลัมน์ คุณสมบัติ Vertex และ Edge คุณสมบัติ Vertex และ Edge
ความสัมพันธ์ ขอบ ขอบ

รูปแบบคีย์ / ค่า

แบบจำลองคีย์ / ค่าหมายความว่าข้อมูลสามารถจัดเก็บในรูปแบบของคู่คีย์ / ค่าซึ่งค่าอาจเป็นประเภทที่เรียบง่ายและซับซ้อน สามารถรองรับเอกสารและองค์ประกอบกราฟเป็นค่า

ตารางต่อไปนี้แสดงการเปรียบเทียบระหว่างโมเดลเชิงสัมพันธ์โมเดลคีย์ / ค่าและโมเดลคีย์ / ค่า OrientDB

แบบจำลองเชิงสัมพันธ์ แบบจำลองคีย์ / ค่า โมเดลคีย์ / ค่าของ OrientDB
ตาราง ถัง คลาสหรือคลัสเตอร์
แถว คู่คีย์ / ค่า เอกสาร
คอลัมน์ ไม่สามารถใช้ได้ ฟิลด์เอกสารหรือคุณสมบัติ Vertex / Edge
ความสัมพันธ์ ไม่สามารถใช้ได้ ลิงค์

โมเดลวัตถุ

โมเดลนี้ได้รับการสืบทอดโดยการเขียนโปรแกรมเชิงวัตถุและรองรับ Inheritance ระหว่างประเภท (ประเภทย่อยขยายประเภทซุปเปอร์) Polymorphism เมื่อคุณอ้างถึงคลาสพื้นฐานและ Direct binding from / to Objects ที่ใช้ในภาษาโปรแกรม

ตารางต่อไปนี้แสดงการเปรียบเทียบระหว่างโมเดลเชิงสัมพันธ์โมเดลอ็อบเจ็กต์และโมเดลอ็อบเจ็กต์ OrientDB

แบบจำลองเชิงสัมพันธ์ แบบจำลองวัตถุ โมเดลวัตถุ OrientDB
ตาราง คลาส คลาสหรือคลัสเตอร์
แถว วัตถุ เอกสารหรือจุดยอด
คอลัมน์ คุณสมบัติของวัตถุ ฟิลด์เอกสารหรือคุณสมบัติ Vertex / Edge
ความสัมพันธ์ ตัวชี้ ลิงค์

ก่อนที่จะดำเนินการต่อในรายละเอียดควรทราบคำศัพท์พื้นฐานที่เกี่ยวข้องกับ OrientDB ก่อนดีกว่า ต่อไปนี้เป็นคำศัพท์ที่สำคัญบางส่วน

บันทึก

หน่วยที่เล็กที่สุดที่คุณสามารถโหลดและจัดเก็บในฐานข้อมูล บันทึกสามารถจัดเก็บได้สี่ประเภท

  • Document
  • บันทึกไบต์
  • Vertex
  • Edge

รหัสบันทึก

เมื่อ 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

Record Type เหมือนกับประเภท BLOB ใน RDBMS OrientDB สามารถโหลดและจัดเก็บเอกสารประเภท Record พร้อมกับข้อมูลไบนารี

จุดยอด

ฐานข้อมูล OrientDB ไม่เพียง แต่เป็นฐานข้อมูลเอกสารเท่านั้น แต่ยังเป็นฐานข้อมูล Graph ด้วย แนวคิดใหม่เช่น Vertex และ Edge ใช้ในการจัดเก็บข้อมูลในรูปแบบของกราฟ ในฐานข้อมูลกราฟหน่วยพื้นฐานที่สุดของข้อมูลคือโหนดซึ่งใน OrientDB เรียกว่าจุดยอด เวอร์เท็กซ์เก็บข้อมูลสำหรับฐานข้อมูล

ขอบ

มีประเภทบันทึกแยกต่างหากที่เรียกว่า Edge ที่เชื่อมต่อจุดยอดหนึ่งไปยังอีกจุดยอดหนึ่ง ขอบเป็นแบบสองทิศทางและสามารถเชื่อมต่อจุดยอดสองจุดเท่านั้น ขอบใน OrientDB มีสองประเภทคือแบบปกติและอีกแบบหนึ่งมีน้ำหนักเบา

คลาส

คลาสเป็นแบบจำลองข้อมูลประเภทหนึ่งและแนวคิดที่ดึงมาจากกระบวนทัศน์การเขียนโปรแกรมเชิงวัตถุ ตามแบบจำลองฐานข้อมูลเอกสารแบบดั้งเดิมข้อมูลจะถูกจัดเก็บในรูปแบบของการรวบรวมในขณะที่ข้อมูลแบบจำลองฐานข้อมูลเชิงสัมพันธ์จะถูกเก็บไว้ในตาราง OrientDB เป็นไปตาม Document API พร้อมกับกระบวนทัศน์ OPPS ตามแนวคิดคลาสใน OrientDB มีความสัมพันธ์ใกล้เคียงที่สุดกับตารางในฐานข้อมูลเชิงสัมพันธ์ แต่คลาส (ไม่เหมือนตาราง) สามารถเป็น schema-less, schema-full หรือ mixed คลาสสามารถสืบทอดจากคลาสอื่น ๆ ได้โดยสร้างต้นไม้ของคลาส แต่ละคลาสมีคลัสเตอร์หรือคลัสเตอร์ของตนเอง (สร้างขึ้นโดยค่าเริ่มต้นหากไม่มีการกำหนด)

คลัสเตอร์

คลัสเตอร์เป็นแนวคิดสำคัญที่ใช้ในการจัดเก็บเร็กคอร์ดเอกสารหรือจุดยอด พูดง่ายๆคลัสเตอร์คือที่เก็บกลุ่มของระเบียน โดยค่าเริ่มต้น OrientDB จะสร้างหนึ่งคลัสเตอร์ต่อคลาส ระเบียนทั้งหมดของคลาสจะถูกเก็บไว้ในคลัสเตอร์เดียวกันที่มีชื่อเดียวกันกับคลาส คุณสามารถสร้างคลัสเตอร์ได้สูงสุด 32,767 (2 ^ 15-1) ในฐานข้อมูล

คลาส CREATE เป็นคำสั่งที่ใช้สร้างคลัสเตอร์ที่มีชื่อเฉพาะ เมื่อสร้างคลัสเตอร์แล้วคุณสามารถใช้คลัสเตอร์เพื่อบันทึกเรกคอร์ดโดยระบุชื่อระหว่างการสร้างแบบจำลองข้อมูลใด ๆ

ความสัมพันธ์

OrientDB รองรับความสัมพันธ์สองประเภท: อ้างอิงและฝัง Referenced relationships หมายความว่าจะจัดเก็บลิงก์โดยตรงไปยังวัตถุเป้าหมายของความสัมพันธ์ Embedded relationshipsหมายความว่าจะเก็บความสัมพันธ์ไว้ในระเบียนที่ฝังไว้ ความสัมพันธ์นี้แข็งแกร่งกว่าความสัมพันธ์อ้างอิง

ฐานข้อมูล

ฐานข้อมูลเป็นอินเทอร์เฟซสำหรับเข้าถึงที่เก็บข้อมูลจริง IT เข้าใจแนวคิดระดับสูงเช่นแบบสอบถามสคีมาข้อมูลเมตาดัชนีและอื่น ๆ OrientDB ยังมีฐานข้อมูลหลายประเภท สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทเหล่านี้โปรดดูประเภทฐานข้อมูล

OrientDB รองรับข้อมูลหลายประเภทโดยกำเนิด ต่อไปนี้เป็นตารางที่สมบูรณ์บนเดียวกัน

เลขที่ ประเภท คำอธิบาย
1 บูลีน

จัดการเฉพาะค่าจริงหรือเท็จ

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: ตั้งค่า <วัตถุ>

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: แผนที่ <สตริง,? ขยายบันทึก>

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: x

22 ทศนิยม

ตัวเลขทศนิยมโดยไม่ต้องปัดเศษ

Java types: java.math.BigDecimal

23 LinkBag

รายการ RecordIds เป็น RidBag เฉพาะ

Java types: ORidBag

24

ไม่ใช่ประเภทที่กำหนดใช้เพื่อระบุคอลเล็กชันประเภทผสมและ null

ในบทต่อไปนี้จะกล่าวถึงวิธีการใช้ชนิดข้อมูลเหล่านี้ใน OrientDB

OrientDB Console เป็น Java Application ที่สร้างขึ้นเพื่อทำงานกับฐานข้อมูล 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

เมื่อคุณรันคำสั่งคอนโซลในไปป์ไลน์คุณจะต้องแสดงคำสั่งเหล่านั้น เปิดใช้งาน "เสียงสะท้อน" ของคำสั่งโดยตั้งเป็นคุณสมบัติที่จุดเริ่มต้น ต่อไปนี้เป็นไวยากรณ์เพื่อเปิดใช้งานคุณสมบัติ 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>

<mode> - กำหนดโหมดเช่นโหมดท้องถิ่นหรือโหมดระยะไกล

<path> - กำหนดเส้นทางไปยังฐานข้อมูล

<user> - กำหนดผู้ใช้ที่คุณต้องการเชื่อมต่อกับฐานข้อมูล

<password> - กำหนดรหัสผ่านสำหรับเชื่อมต่อกับฐานข้อมูล

<storage-type>- กำหนดประเภทการจัดเก็บ คุณสามารถเลือกระหว่าง PLOCAL และ MEMORY

ตัวอย่าง

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อสร้างฐานข้อมูลโลคัลชื่อเดโม

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> กำหนดค่าที่คุณต้องการตั้งค่าสำหรับแอตทริบิวต์นั้น

ตารางต่อไปนี้กำหนดรายการแอตทริบิวต์ที่รองรับสำหรับการแก้ไขฐานข้อมูล

ซีเนียร์ ชื่อแอตทริบิวต์ คำอธิบาย
1 สถานะ กำหนดสถานะของฐานข้อมูลระหว่างแอตทริบิวต์ต่างๆ
2 การนำเข้า ตั้งค่าสถานะการนำเข้า
3 DEFAULTCLUSTERID ตั้งค่าคลัสเตอร์เริ่มต้นโดยใช้ ID โดยค่าเริ่มต้นคือ 2
4 รูปแบบวันที่ ตั้งค่ารูปแบบวันที่เฉพาะเป็นค่าเริ่มต้น โดยค่าเริ่มต้นจะเป็น "yyyy-MM-dd"
5 DATETIMEFORMAT ตั้งค่ารูปแบบวันที่เวลาเฉพาะเป็นค่าเริ่มต้น ตามค่าเริ่มต้นคือ "yyyy-MM-dd HH: mm: ss"
6 เขตเวลา ตั้งค่าเขตเวลาเฉพาะ โดยค่าเริ่มต้นจะเป็นโซนเวลาเริ่มต้นของ Java Virtual Machine (JVM)
7 LOCALECOUNTRY ตั้งค่าประเทศโลแคลเริ่มต้น โดยค่าเริ่มต้นเป็นประเทศโลแคลเริ่มต้นของ JVM ตัวอย่างเช่น "GB"
8 LOCALELANGUAGE ตั้งค่าภาษาโลแคลเริ่มต้น โดยค่าเริ่มต้นเป็นภาษาโลแคลเริ่มต้นของ JVM ตัวอย่างเช่น "en"
9 CHARSET ตั้งค่าประเภทของชุดอักขระ โดยค่าเริ่มต้นจะเป็นชุดอักขระเริ่มต้นของ JVM ตัวอย่างเช่น "utf8"
10 CLUSTERSELECTION ตั้งค่ากลยุทธ์เริ่มต้นที่ใช้สำหรับการเลือกคลัสเตอร์ กลยุทธ์เหล่านี้สร้างขึ้นพร้อมกับการสร้างคลาส กลยุทธ์ที่รองรับคือค่าเริ่มต้น roundrobin และ balanced
11 MINIMUMCLUSTERS ตั้งค่าจำนวนขั้นต่ำของคลัสเตอร์เพื่อสร้างโดยอัตโนมัติเมื่อสร้างคลาสใหม่ โดยค่าเริ่มต้นคือ 1
12 กำหนดเอง ตั้งค่าคุณสมบัติที่กำหนดเอง
13 VALIDATION ปิดใช้งานหรือเปิดใช้งานการตรวจสอบความถูกต้องสำหรับฐานข้อมูลทั้งหมด

ตัวอย่าง

จากเวอร์ชันของ OrientDB-2.2 มีการเพิ่มตัวแยกวิเคราะห์ SQL ใหม่ซึ่งจะไม่อนุญาตให้ใช้ไวยากรณ์ปกติในบางกรณี ดังนั้นเราจึงต้องปิดการใช้งานตัวแยกวิเคราะห์ SQL (StrictSQL) ใหม่ในบางกรณี คุณสามารถใช้คำสั่ง Alter database ต่อไปนี้เพื่อปิดใช้งานตัวแยกวิเคราะห์ StrictSQL

orientdb> ALTER DATABASE custom strictSQL = false

หากดำเนินการคำสั่งสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้

Database updated successfully

เช่นเดียวกับ RDBMS OrientDB ยังสนับสนุนการสำรองข้อมูลและเรียกคืนการดำเนินการ ขณะดำเนินการสำรองข้อมูลจะนำไฟล์ทั้งหมดของฐานข้อมูลปัจจุบันไปอยู่ในรูปแบบ zip ที่บีบอัดโดยใช้อัลกอริทึม ZIP คุณลักษณะนี้ (การสำรองข้อมูล) สามารถใช้งานได้โดยอัตโนมัติโดยเปิดใช้งานปลั๊กอินเซิร์ฟเวอร์สำรองข้อมูลอัตโนมัติ

การสำรองฐานข้อมูลหรือการส่งออกฐานข้อมูลจะเหมือนกันอย่างไรก็ตามตามขั้นตอนที่เราต้องทราบว่าเมื่อใดควรใช้การสำรองข้อมูลและเมื่อใดที่จะใช้การส่งออก

ในขณะที่ทำการสำรองข้อมูลจะสร้างสำเนาของฐานข้อมูลที่สอดคล้องกันการดำเนินการเขียนเพิ่มเติมทั้งหมดจะถูกล็อกและรอให้กระบวนการสำรองข้อมูลเสร็จสิ้น ในการดำเนินการนี้จะสร้างไฟล์สำรองข้อมูลแบบอ่านอย่างเดียว

หากคุณต้องการการดำเนินการอ่านและเขียนพร้อมกันในขณะที่ทำการสำรองข้อมูลคุณต้องเลือกการส่งออกฐานข้อมูลแทนการสำรองฐานข้อมูล การส่งออกไม่ได้ล็อกฐานข้อมูลและอนุญาตให้เขียนพร้อมกันในระหว่างกระบวนการส่งออก

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของการสำรองฐานข้อมูล

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<dburl> - URL ของฐานข้อมูลที่ฐานข้อมูลตั้งอยู่ในท้องถิ่นหรือในสถานที่ห่างไกล

<user> - ระบุชื่อผู้ใช้เพื่อเรียกใช้การสำรองข้อมูล

<password> - ระบุรหัสผ่านสำหรับผู้ใช้โดยเฉพาะ

<destination> - ตำแหน่งไฟล์ปลายทางระบุตำแหน่งที่จะจัดเก็บไฟล์ zip สำรอง

<type>- ประเภทการสำรองข้อมูลเสริม มีสองตัวเลือกอย่างใดอย่างหนึ่ง

  • ค่าเริ่มต้น - ล็อกฐานข้อมูลระหว่างการสำรองข้อมูล

  • LVM - ใช้ LVM copy-on-write snapshot ในพื้นหลัง

ตัวอย่าง

สำรองข้อมูลสาธิตฐานข้อมูลซึ่งอยู่ในระบบไฟล์โลคัล / 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

เช่นเดียวกับ RDBMS OrientDB ยังสนับสนุนการดำเนินการกู้คืน คุณสามารถดำเนินการนี้ได้จากโหมดคอนโซลเท่านั้น

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานสำหรับการกู้คืนการดำเนินการ

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

ตัวอย่าง

คุณต้องดำเนินการนี้จากโหมดคอนโซลเท่านั้น ดังนั้นก่อนอื่นคุณต้องเริ่มคอนโซล OrientDB โดยใช้คำสั่ง OrientDB ต่อไปนี้

$ orientdb

จากนั้นเชื่อมต่อกับฐานข้อมูลที่เกี่ยวข้องเพื่อกู้คืนข้อมูลสำรอง คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อกับฐานข้อมูลที่ชื่อว่า demo

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

หลังจากเชื่อมต่อสำเร็จคุณสามารถใช้คำสั่งต่อไปนี้เพื่อกู้คืนข้อมูลสำรองจากไฟล์ 'backup-demo.zip' ก่อนดำเนินการตรวจสอบให้แน่ใจว่าไฟล์ backup-demo.zip อยู่ในไดเร็กทอรีปัจจุบัน

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

หากคำสั่งนี้ดำเนินการสำเร็จคุณจะได้รับการแจ้งเตือนความสำเร็จพร้อมกับข้อความต่อไปนี้

Database restored in 0.26 seconds

บทนี้อธิบายถึงวิธีการเชื่อมต่อกับฐานข้อมูลเฉพาะจากบรรทัดรับคำสั่ง OrientDB จะเปิดฐานข้อมูล

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง Connect

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<database-url>- กำหนด URL ของฐานข้อมูล URL ประกอบด้วยสองส่วนส่วนหนึ่งคือ <mode> และส่วนที่สองคือ <path>

<mode> - กำหนดโหมดเช่นโหมดท้องถิ่นหรือโหมดระยะไกล

<path> - กำหนดเส้นทางไปยังฐานข้อมูล

<user> - กำหนดผู้ใช้ที่คุณต้องการเชื่อมต่อกับฐานข้อมูล

<password> - กำหนดรหัสผ่านสำหรับเชื่อมต่อกับฐานข้อมูล

ตัวอย่าง

เราได้สร้างฐานข้อมูลชื่อ 'สาธิต' ในบทก่อนหน้านี้แล้ว ในตัวอย่างนี้เราจะเชื่อมต่อโดยใช้ user 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 - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะและจะปิดฐานข้อมูลที่กำลังทำงานอยู่เท่านั้น

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว เราจะยกเลิกการเชื่อมต่อจากฐานข้อมูลสาธิต

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อยกเลิกการเชื่อมต่อฐานข้อมูล

orientdb {db = demo}> DISCONNECT

หากตัดการเชื่อมต่อสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้ -

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

บทนี้อธิบายวิธีรับข้อมูลของฐานข้อมูลเฉพาะจากบรรทัดรับคำสั่ง OrientDB

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง Info

info

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะและจะดึงข้อมูลเฉพาะฐานข้อมูลที่กำลังทำงานอยู่

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว เราจะดึงข้อมูลพื้นฐานจากฐานข้อมูลสาธิต

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อยกเลิกการเชื่อมต่อฐานข้อมูล

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 ไฟล์.

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อกับอินสแตนซ์เซิร์ฟเวอร์ฐานข้อมูลโลคัลโฮสต์

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

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะในฐานข้อมูลระยะไกลหรือในพื้นที่

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว เราจะตรึงฐานข้อมูลนี้จาก CLI

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อตรึงฐานข้อมูล

Orientdb {db = demo}> FREEZE DATABASE

หากดำเนินการสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Database 'demo' was frozen successfully

ในบทนี้คุณสามารถเรียนรู้วิธีปลดฐานข้อมูลจากสถานะหยุดทำงานผ่านบรรทัดคำสั่ง OrientDB

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่งฐานข้อมูล Release

RELEASE DATABASE

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะซึ่งอยู่ในสถานะหยุดนิ่ง

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว เราจะปล่อยฐานข้อมูลที่ถูกตรึงในบทก่อนหน้านี้

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อปล่อยฐานข้อมูล

Orientdb {db = demo}> RELEASE DATABASE

หากดำเนินการสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Database 'demo' was release successfully

ในบทนี้คุณสามารถเรียนรู้วิธีการแสดงการกำหนดค่าของฐานข้อมูลเฉพาะผ่านบรรทัดคำสั่ง OrientDB คำสั่งนี้ใช้ได้กับทั้งฐานข้อมูลในเครื่องและฐานข้อมูลระยะไกล

ข้อมูลคอนฟิกูเรชันประกอบด้วยแคชเริ่มต้นที่เปิดใช้งานหรือไม่ขนาดของแคชนั้นค่าโหลดแฟกเตอร์หน่วยความจำสูงสุดสำหรับแม็พขนาดเพจโหนดขนาดพูลต่ำสุดและสูงสุดเป็นต้น

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่งฐานข้อมูล config

CONFIG

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะเท่านั้น

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อแสดงการกำหนดค่าของฐานข้อมูลสาธิต

Orientdb {db = demo}> CONFIG

หากดำเนินการสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

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

ในรายการพารามิเตอร์การกำหนดค่าด้านบนหากคุณต้องการเปลี่ยนค่าพารามิเตอร์ใด ๆ คุณสามารถทำได้จากบรรทัดคำสั่งอย่างง่ายดายโดยใช้ config set และ get command

กำหนดค่าชุด

คุณสามารถอัปเดตค่าตัวแปรคอนฟิกูเรชันโดยใช้ไฟล์ CONFIG SET คำสั่ง

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง config set

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

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะเท่านั้น

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว เราจะแก้ไขค่าตัวแปร '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 - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะเท่านั้น

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว เราจะพยายามดึงค่าตัวแปร 'tx.autoRetry'

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อแสดงการกำหนดค่าของฐานข้อมูลสาธิต

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

หากดำเนินการสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Local configuration: tx.autoRetry = 5

เช่นเดียวกับ RDBMS OrientDB ยังมีคุณสมบัติเช่นการส่งออกและนำเข้าฐานข้อมูล OrientDB ใช้รูปแบบ JSON เพื่อส่งออกข้อมูล โดยค่าเริ่มต้นคำสั่งส่งออกใช้อัลกอริทึม GZIP เพื่อบีบอัดไฟล์

ในขณะที่ส่งออกฐานข้อมูลจะไม่ได้ล็อกฐานข้อมูลซึ่งหมายความว่าคุณสามารถดำเนินการอ่านและเขียนพร้อมกันได้ นอกจากนี้ยังหมายความว่าคุณสามารถสร้างสำเนาที่ถูกต้องของข้อมูลนั้นได้เนื่องจากการดำเนินการอ่านและเขียนพร้อมกัน

ในบทนี้คุณสามารถเรียนรู้วิธีการเอ็กซ์พอร์ตฐานข้อมูลจากบรรทัดรับคำสั่ง OrientDB

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่งส่งออกฐานข้อมูล

EXPORT DATABASE <output file>

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะเท่านั้น

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเอ็กซ์พอร์ตฐานข้อมูลไปยังไฟล์ชื่อ '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 ซึ่งสร้างโดยคำสั่ง export

ในบทนี้คุณสามารถเรียนรู้วิธีการนำเข้าฐานข้อมูลจากบรรทัดคำสั่ง OrientDB

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่งนำเข้าฐานข้อมูล

IMPORT DATABASE <input file>

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะเท่านั้น

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว คุณสามารถใช้คำสั่งต่อไปนี้เพื่อนำเข้าฐานข้อมูลไปยังไฟล์ชื่อ 'export-demo.gz'

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

หากดำเนินการสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้พร้อมกับการแจ้งเตือนที่ประสบความสำเร็จ

Database import completed in 11612ms

เช่นเดียวกับ RDBMS OrientDB ยังมีแนวคิดการทำธุรกรรมเช่น Commit และ Rollback Commit หมายถึงการปิดธุรกรรมโดยบันทึกการเปลี่ยนแปลงทั้งหมดลงในฐานข้อมูล Rollback หมายถึงการกู้คืนสถานะฐานข้อมูลไปยังจุดที่คุณเปิดธุรกรรม

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง Commit database

COMMIT

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะและหลังจากเริ่มต้นธุรกรรม

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว เราจะเห็นการดำเนินการของการทำธุรกรรมและจัดเก็บบันทึกโดยใช้ธุรกรรม

ขั้นแรกเริ่มทำธุรกรรมโดยใช้สิ่งต่อไปนี้ 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 database

ROLLBACK

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะและหลังจากเริ่มต้นธุรกรรม

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว เราจะเห็นการทำงานของธุรกรรมย้อนกลับและจัดเก็บบันทึกโดยใช้ธุรกรรม

ขั้นแรกเริ่มทำธุรกรรมโดยใช้สิ่งต่อไปนี้ 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

ตรวจสอบคิวรีแบบเลือกอีกครั้งเพื่อดึงเรกคอร์ดเดียวกันจากตารางพนักงาน

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

หากดำเนินการย้อนกลับสำเร็จคุณจะได้รับ 0 เร็กคอร์ดที่พบในเอาต์พุต

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

ตามคำศัพท์ทางเทคนิค Optimizationหมายถึง "บรรลุประสิทธิภาพที่ดีขึ้นในระยะเวลาที่รวดเร็วที่สุด" ด้วยการอ้างอิงถึงฐานข้อมูลการเพิ่มประสิทธิภาพจะเกี่ยวข้องกับการเพิ่มความเร็วและประสิทธิภาพในการดึงข้อมูล

OrientDB รองรับขอบน้ำหนักเบาซึ่งหมายถึงความสัมพันธ์โดยตรงระหว่างเอนทิตีข้อมูล พูดง่ายๆก็คือความสัมพันธ์แบบฟิลด์ต่อฟิลด์ OrientDB มีวิธีต่างๆในการปรับฐานข้อมูลให้เหมาะสม รองรับการแปลงขอบปกติเป็นขอบน้ำหนักเบา

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่งฐานข้อมูล Optimize

OPTMIZE DATABASE [-lwedges] [-noverbose]

ที่ไหน lwedges แปลงขอบปกติให้เป็นขอบน้ำหนักเบาและ noverbose ปิดการใช้งานเอาต์พุต

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างไว้ในบทที่แล้ว คุณสามารถใช้คำสั่งปรับให้เหมาะสมฐานข้อมูลต่อไปนี้

OPTIMIZE DATABASE -lwedges

หากดำเนินการสำเร็จคุณจะได้รับการแจ้งเตือนที่ประสบความสำเร็จพร้อมกับข้อความเสร็จสมบูรณ์

Database Optimization completed in 35ms

เช่นเดียวกับ RDBMS OrientDB มีคุณสมบัติในการวางฐานข้อมูล Drop database หมายถึงการลบฐานข้อมูลทั้งหมด

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง Drop database

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<database-name> - ชื่อฐานข้อมูลที่คุณต้องการวาง

<server-username> - ชื่อผู้ใช้ของฐานข้อมูลที่มีสิทธิ์ทิ้งฐานข้อมูล

<server-user-password> - รหัสผ่านของผู้ใช้โดยเฉพาะ

ตัวอย่าง

มีสองวิธีในการวางฐานข้อมูลวิธีหนึ่งคือการวางฐานข้อมูลที่เปิดอยู่ในปัจจุบันและวิธีที่สองคือการวางฐานข้อมูลโดยระบุชื่อเฉพาะ

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างขึ้นในบทก่อนหน้านี้ คุณสามารถใช้คำสั่งต่อไปนี้เพื่อวางฐานข้อมูล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 สร้างเรกคอร์ดใหม่ในสกีมาฐานข้อมูล เร็กคอร์ดสามารถเป็น schema-less หรือปฏิบัติตามกฎที่ระบุ

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง Insert Record

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 - ตำแหน่งที่คุณต้องการแทรกระเบียนหรือชุดผลลัพธ์

ตัวอย่าง

ให้เราพิจารณาตารางลูกค้าที่มีฟิลด์และประเภทต่อไปนี้

ซีเนียร์ ชื่อฟิลด์ ประเภท
1 Id จำนวนเต็ม
2 ชื่อ สตริง
3 อายุ จำนวนเต็ม

คุณสามารถสร้าง Schema (ตาราง) โดยดำเนินการคำสั่งต่อไปนี้

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

หลังจากดำเนินการคำสั่งทั้งหมดแล้วคุณจะได้รับชื่อตารางลูกค้าที่มี ID ชื่อและฟิลด์อายุ คุณสามารถตรวจสอบตารางได้โดยดำเนินการเลือกคิวรีในตารางลูกค้า

OrientDB มีวิธีต่างๆในการแทรกเรกคอร์ด พิจารณาตารางลูกค้าต่อไปนี้ที่มีระเบียนตัวอย่าง

ซีเนียร์ ชื่อ อายุ
1 Satish 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).

คำสั่งต่อไปนี้คือการแทรกระเบียนที่สองลงในตารางลูกค้า

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

คำสั่งต่อไปนี้คือการแทรกระเบียนที่สามลงในตารางลูกค้า

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

คำสั่งต่อไปนี้คือการแทรกสองระเบียนถัดไปในตารางลูกค้า

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

เช่นเดียวกับ RDBMS OrientDB สนับสนุนการสืบค้น SQL ประเภทต่างๆเพื่อดึงข้อมูลจากฐานข้อมูล ในขณะที่ดึงข้อมูลเรามีรูปแบบหรือตัวเลือกของแบบสอบถามที่แตกต่างกันพร้อมกับคำสั่งเลือก

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง 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- ระบุวัตถุที่ต้องการค้นหา ซึ่งอาจเป็นคลาสคลัสเตอร์ ID เรกคอร์ดเดียวชุดของ ID ระเบียน คุณสามารถระบุวัตถุเหล่านี้ทั้งหมดเป็นเป้าหมาย

WHERE - ระบุเงื่อนไขที่จะกรองชุดผลลัพธ์

LET - ระบุตัวแปรบริบทที่ใช้ในการคาดการณ์เงื่อนไขหรือแบบสอบถามย่อย

GROUP BY - ระบุเขตข้อมูลเพื่อจัดกลุ่มระเบียน

ORDER BY - ระบุการยื่นเพื่อจัดเรียงบันทึกตามลำดับ

UNWIND - กำหนดเขตข้อมูลที่จะคลายการรวบรวมบันทึก

SKIP - กำหนดจำนวนบันทึกที่คุณต้องการข้ามจากจุดเริ่มต้นของชุดผลลัพธ์

LIMIT - ระบุจำนวนบันทึกสูงสุดในชุดผลลัพธ์

FETCHPLAN - ระบุกลยุทธ์ที่กำหนดว่าคุณต้องการดึงผลลัพธ์อย่างไร

TIMEOUT - กำหนดเวลาสูงสุดเป็นมิลลิวินาทีสำหรับแบบสอบถาม

LOCK- กำหนดกลยุทธ์การล็อค DEFAULT และ RECORD เป็นกลยุทธ์การล็อกที่ใช้ได้

PARALLEL - ดำเนินการค้นหากับเธรดพร้อมกัน 'x'

NOCACHE - กำหนดว่าคุณต้องการใช้แคชหรือไม่

ตัวอย่าง

ลองพิจารณาตารางลูกค้าต่อไปนี้ที่สร้างขึ้นในบทก่อนหน้า

ซีเนียร์ ชื่อ อายุ
1 Satish 25
2 กฤษณะ 26
3 Kiran 29
4 Javeed 21
5 ราชา 29

ลองใช้การค้นหาแบบเลือกอื่นเพื่อดึงข้อมูลบันทึกจากตารางลูกค้า

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 - เลือก id บันทึกชื่อจากตารางลูกค้าที่มีชื่อเป็นตัวพิมพ์ใหญ่

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 - เลือกระเบียนทั้งหมดจากตารางลูกค้าที่ฟิลด์ใด ๆ มีคำว่า 'sh'

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

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

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

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ใช้เพื่อโหลดเร็กคอร์ดเฉพาะจากสคีมา Load record จะโหลดบันทึกด้วยความช่วยเหลือของ Record ID มันแสดงด้วย@rid สัญลักษณ์ในชุดผลลัพธ์

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง LOAD Record

LOAD RECORD <record-id>

ที่ไหน <record-id> กำหนดรหัสบันทึกของเรกคอร์ดที่คุณต้องการโหลด

หากคุณไม่ทราบรหัสระเบียนของระเบียนใดระเบียนหนึ่งคุณสามารถดำเนินการสืบค้นใด ๆ กับตารางได้ ในชุดผลลัพธ์คุณจะพบรหัสระเบียน (@rid) ของระเบียนที่เกี่ยวข้อง

ตัวอย่าง

ให้เราพิจารณาตารางลูกค้าเดียวกันกับที่เราใช้ในบทก่อน ๆ

ซีเนียร์ ชื่อ อายุ
1 Satish 25
2 กฤษณะ 26
3 Kiran 29
4 Javeed 21
5 ราชา 29

ลองใช้แบบสอบถามต่อไปนี้เพื่อดึงข้อมูลที่มี Record ID @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 และยังใช้เพื่อโหลดเรกคอร์ดเฉพาะจากสคีมา Load record จะโหลดบันทึกด้วยความช่วยเหลือของ Record ID มันแสดงด้วย@ridสัญลักษณ์ในชุดผลลัพธ์ ข้อแตกต่างที่สำคัญคือการโหลดซ้ำบันทึกจะละเว้นแคชซึ่งมีประโยชน์เมื่อมีการใช้ธุรกรรมพร้อมกันภายนอกเพื่อเปลี่ยนเรกคอร์ด มันจะให้การอัปเดตล่าสุด

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง RELOAD Record

RELOAD RECORD <record-id>

ที่ไหน <record-id> กำหนดรหัสบันทึกของเรกคอร์ดที่คุณต้องการโหลดซ้ำ

หากคุณไม่ทราบรหัสระเบียนของระเบียนใดระเบียนหนึ่งคุณสามารถดำเนินการสืบค้นใด ๆ กับตารางได้ ในชุดผลลัพธ์คุณจะพบรหัสระเบียน (@rid) ของระเบียนที่เกี่ยวข้อง

ตัวอย่าง

ให้เราพิจารณาตารางลูกค้าเดียวกันกับที่เราใช้ในบทที่แล้ว

ซีเนียร์ ชื่อ อายุ
1 Satish 25
2 กฤษณะ 26
3 Kiran 29
4 Javeed 21
5 ราชา 29

ลองใช้แบบสอบถามต่อไปนี้เพื่อดึงข้อมูลที่มี Record ID @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

EXPORT RECORD <format>

ที่ไหน <Format> กำหนดรูปแบบที่คุณต้องการรับบันทึก

Note - คำสั่งส่งออกจะส่งออกบันทึกที่โหลดตามรหัสบันทึก

ตัวอย่าง

ให้เราพิจารณาตารางลูกค้าเดียวกันกับที่เราใช้ในบทที่แล้ว

ซีเนียร์ ชื่อ อายุ
1 Satish 25
2 กฤษณะ 26
3 Kiran 29
4 Javeed 21
5 ราชา 29

ลองใช้แบบสอบถามต่อไปนี้เพื่อดึงข้อมูลที่มี Record ID @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

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 - กำหนดเวลาที่คุณต้องการให้การอัปเดตทำงานก่อนที่จะหมดเวลา

ตัวอย่าง

ให้เราพิจารณาตารางลูกค้าเดียวกันกับที่เราใช้ในบทที่แล้ว

ซีเนียร์ ชื่อ อายุ
1 Satish 25
2 กฤษณะ 26
3 Kiran 29
4 Javeed 21
5 ราชา 29

ลองใช้คำค้นหาต่อไปนี้เพื่ออัปเดตอายุของลูกค้า "ราชา"

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

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

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

ในการตรวจสอบบันทึกของตารางลูกค้าคุณสามารถใช้แบบสอบถามต่อไปนี้

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>* ระบุรหัสระเบียนเพื่อตัดทอน คุณสามารถใช้ Rids หลายรายการโดยคั่นด้วยลูกน้ำเพื่อตัดทอนหลายระเบียน ส่งคืนจำนวนระเบียนที่ถูกตัดทอน

ตัวอย่าง

ให้เราพิจารณาตารางลูกค้าเดียวกันกับที่เราใช้ในบทที่แล้ว

ซีเนียร์ ชื่อ อายุ
1 Satish 25
2 กฤษณะ 26
3 Kiran 29
4 Javeed 21
5 ราชา 28

ลองใช้แบบสอบถามต่อไปนี้เพื่อตัดทอนเร็กคอร์ดที่มี Record ID # 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

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 เพื่อลบจุดยอดหรือขอบเนื่องจากจะส่งผลต่อความสมบูรณ์ของกราฟ

ตัวอย่าง

ให้เราพิจารณาตารางลูกค้า

ซีเนียร์ ชื่อ อายุ
1 Satish 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 ฐานข้อมูลเอกสาร เช่นเดียวกับ RDBMS OrientDB ยังใช้ Record เป็นองค์ประกอบของที่เก็บข้อมูล แต่ใช้ประเภทเอกสาร เอกสารจะถูกจัดเก็บในรูปแบบของคู่คีย์ / ค่า เรากำลังจัดเก็บฟิลด์และคุณสมบัติเป็นคู่คีย์ / ค่าซึ่งเป็นของคลาสแนวคิด

Classเป็นแบบจำลองข้อมูลประเภทหนึ่งและแนวคิดมาจากกระบวนทัศน์การเขียนโปรแกรมเชิงวัตถุ ตามแบบจำลองฐานข้อมูลเอกสารแบบดั้งเดิมข้อมูลจะถูกจัดเก็บในรูปแบบของการรวบรวมในขณะที่ข้อมูลแบบจำลองฐานข้อมูลเชิงสัมพันธ์จะถูกเก็บไว้ในตาราง OrientDB เป็นไปตาม Document API พร้อมกับกระบวนทัศน์ OPPS ตามแนวคิดคลาสใน OrientDB มีความสัมพันธ์ที่ใกล้เคียงที่สุดกับตารางในฐานข้อมูลเชิงสัมพันธ์ แต่คลาส (ไม่เหมือนตาราง) สามารถเป็น schema-less, schema-full หรือ mixed คลาสสามารถสืบทอดจากคลาสอื่น ๆ ได้โดยสร้างต้นไม้ของคลาส แต่ละคลาสมีคลัสเตอร์หรือคลัสเตอร์ของตนเอง (สร้างขึ้นโดยค่าเริ่มต้นหากไม่มีการกำหนด)

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของ Create Class Command

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<class> - กำหนดชื่อชั้นเรียนที่คุณต้องการสร้าง

<super-class> - กำหนดซูเปอร์คลาสที่คุณต้องการขยายด้วยคลาสนี้

<total-cluster-number>- กำหนดจำนวนคลัสเตอร์ทั้งหมดที่ใช้ในคลาสนี้ ค่าเริ่มต้นคือ 1

ABSTARCT- กำหนดคลาสเป็นนามธรรม นี่เป็นทางเลือก

ตัวอย่าง

ตามที่กล่าวไว้ชั้นเรียนเป็นแนวคิดที่เกี่ยวข้องกับตาราง ดังนั้นที่นี่เราจะสร้างบัญชีตาราง อย่างไรก็ตามในขณะที่สร้างคลาสเราไม่สามารถกำหนดฟิลด์เช่นคุณสมบัติตามกระบวนทัศน์ OOPS

คำสั่งต่อไปนี้คือการสร้างคลาสชื่อบัญชี

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 Command

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<class> - กำหนดชื่อคลาส

<attribute-name> - กำหนดแอตทริบิวต์ที่คุณต้องการเปลี่ยนแปลง

<attribute-value> - กำหนดค่าที่คุณต้องการตั้งค่าสำหรับแอตทริบิวต์

ตารางต่อไปนี้กำหนดรายการแอตทริบิวต์ที่สนับสนุนคำสั่ง Alter Class

แอตทริบิวต์ ประเภท คำอธิบาย
ชื่อ สตริง เปลี่ยนชื่อคลาส
ชื่อสั้น สตริง กำหนดชื่อย่อ (นั่นคือนามแฝง) สำหรับคลาส ใช้ NULL เพื่อลบการกำหนดชื่อย่อ
ซุปเปอร์คลาส สตริง กำหนด super-class สำหรับคลาส ในการเพิ่มคลาสใหม่คุณสามารถใช้ไวยากรณ์ + <class> เพื่อลบออกได้โดยใช้ - <class>
OVERSIZE เลขฐานสิบ กำหนดปัจจัยขนาดใหญ่
ADDCLUSTER สตริง เพิ่มคลัสเตอร์ในคลาส หากไม่มีคลัสเตอร์จะสร้างคลัสเตอร์ทางกายภาพ การเพิ่มคลัสเตอร์ในคลาสยังมีประโยชน์ในการจัดเก็บเร็กคอร์ดในเซิร์ฟเวอร์แบบกระจาย
REMOVECLUSTER สตริง ลบคลัสเตอร์ออกจากคลาส ไม่ได้ลบคลัสเตอร์เพียง แต่ลบออกจากคลาส
STRICTMODE - เปิดหรือปิดโหมดเข้มงวด เมื่ออยู่ในโหมดเข้มงวดคุณจะทำงานในโหมดเต็มสคีมาและไม่สามารถเพิ่มคุณสมบัติใหม่ให้กับเรกคอร์ดได้หากคุณสมบัติเหล่านั้นเป็นส่วนหนึ่งของนิยามสคีมาของคลาส
CLUSTERSELECTION - กำหนดกลยุทธ์การเลือกในการเลือกคลัสเตอร์ที่จะใช้สำหรับระเบียนใหม่
กำหนดเอง - กำหนดคุณสมบัติแบบกำหนดเอง ชื่อคุณสมบัติและค่าต้องเป็นไปตามไวยากรณ์ <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 Command

TRUNCATE CLASS <class> [ POLYMORPHIC ] [ UNSAFE ]

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<class> - กำหนดคลาสที่คุณต้องการตัดทอน

POLYMORPHIC - กำหนดว่าคำสั่งจะตัดลำดับชั้นด้วยหรือไม่

UNSAFE - กำหนดคำสั่งบังคับให้ตัดทอนบนจุดยอดหรือระดับขอบ

ตัวอย่าง

แบบสอบถามต่อไปนี้เพื่อตัดทอนคลาส Profile.

orientdb> TRUNCATE CLASS Profile

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Class truncated successfully

Drop Classคำสั่งลบคลาสออกจากสกีมา สิ่งสำคัญคือต้องใส่ใจและรักษาสคีมาที่สม่ำเสมอ ตัวอย่างเช่นหลีกเลี่ยงการลบคลาสที่เป็นซุปเปอร์คลาสของผู้อื่น คลัสเตอร์ที่เกี่ยวข้องจะไม่ถูกลบ

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง Drop Class

DROP CLASS <class>

ดร็อปคลาสด้วยชื่อคลาส

ตัวอย่าง

ลองใช้แบบสอบถามต่อไปนี้เพื่อเลิกจ้างพนักงานในชั้นเรียน

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> กำหนด ID ตัวเลขที่คุณต้องการใช้สำหรับคลัสเตอร์

ตารางต่อไปนี้แสดงรายการกลยุทธ์การเลือกคลัสเตอร์

ซีเนียร์ กลยุทธ์และคำอธิบาย
1

Default

เลือกคลัสเตอร์โดยใช้คุณสมบัติคลาสเริ่มต้น ClusterId

2

Round-robin

เลือกคลัสเตอร์ถัดไปตามลำดับแบบวงกลม กำลังรีสตาร์ทเมื่อเสร็จสมบูรณ์

3

Balanced

เลือกคลัสเตอร์ที่เล็กที่สุด อนุญาตให้คลาสมีคลัสเตอร์พื้นฐานทั้งหมดสมดุลกับขนาด เมื่อเพิ่มคลัสเตอร์ใหม่ในคลาสที่มีอยู่คลัสเตอร์ใหม่ก่อน

ตัวอย่าง

ให้เรานำตัวอย่างเพื่อสร้างคลัสเตอร์ชื่อการขาย

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

ชื่อ ประเภท คำอธิบาย
ชื่อ สตริง เปลี่ยนชื่อคลัสเตอร์
สถานะ สตริง เปลี่ยนสถานะคลัสเตอร์ ค่าที่อนุญาตคือออนไลน์และออฟไลน์ โดยค่าเริ่มต้นคลัสเตอร์จะออนไลน์
การบีบอัด สตริง กำหนดประเภทการบีบอัดที่จะใช้ ค่าที่อนุญาตคือ NOTHING SNAPPY GZIP และประเภทการบีบอัดอื่น ๆ ที่ลงทะเบียนในคลาส OCompressionFactory
USE_WAL บูลีน กำหนดว่าจะใช้ Journal เมื่อ OrientDB ทำงานกับคลัสเตอร์หรือไม่
RECORD_GROW_FACTO R จำนวนเต็ม กำหนดปัจจัยการเติบโตเพื่อประหยัดพื้นที่ในการสร้างเรกคอร์ด คุณอาจพบว่าสิ่งนี้มีประโยชน์เมื่อคุณอัปเดตระเบียนด้วยข้อมูลเพิ่มเติม
RECORD_OVERFLOW_GR OW_FACTOR จำนวนเต็ม กำหนดปัจจัยการเติบโตในการอัปเดต เมื่อถึงขีด จำกัด ขนาดจะใช้การตั้งค่านี้เพื่อเพิ่มพื้นที่ (ตัวประกอบ> 1)
ความขัดแย้ง สตริง กำหนดกลยุทธ์ที่ใช้จัดการความขัดแย้งในกรณีที่ OrientDB MVCC พบการอัปเดตหรือการดำเนินการลบที่ดำเนินการกับเรกคอร์ดเก่า

ตารางต่อไปนี้แสดงรายการกลยุทธ์ความขัดแย้ง

ซีเนียร์ กลยุทธ์และคำอธิบาย
1

Version

แสดงข้อยกเว้นเมื่อเวอร์ชันต่างกัน นี่คือการตั้งค่าเริ่มต้น.

2

Content

ในกรณีที่เวอร์ชันต่างกันระบบจะตรวจสอบการเปลี่ยนแปลงในเนื้อหามิฉะนั้นจะใช้เวอร์ชันสูงสุดเพื่อหลีกเลี่ยงข้อยกเว้น

3

Automerge

ผสานการเปลี่ยนแปลง

ตัวอย่าง

ลองใช้แบบสอบถามตัวอย่างต่อไปนี้เพื่อเรียนรู้คำสั่ง Alter cluster

ดำเนินการคำสั่งต่อไปนี้เพื่อเปลี่ยนชื่อคลัสเตอร์จาก Employee เป็น Employee2

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

หากคำสั่งดังกล่าวดำเนินการสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้

Cluster updated successfully

ดำเนินการคำสั่งต่อไปนี้เพื่อเปลี่ยนชื่อคลัสเตอร์จาก Employee2 เป็น Employee โดยใช้คลัสเตอร์ ID

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 Command

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> กำหนด ID ของคลัสเตอร์ที่คุณต้องการลบ

ตัวอย่าง

ลองใช้คำสั่งต่อไปนี้เพื่อลบคลัสเตอร์การขาย

orientdb> DROP CLUSTER Sales

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Cluster dropped successfully

Propertyใน OrientDB ทำงานเหมือนฟิลด์ของคลาสและคอลัมน์ในตารางฐานข้อมูล Create Property คือคำสั่งที่ใช้ในการสร้างคุณสมบัติสำหรับคลาสเฉพาะ ชื่อคลาสที่คุณใช้ในคำสั่งต้องมีอยู่

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง 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 ทราบชนิดของข้อมูลที่จะจัดเก็บ

บูลีน จำนวนเต็ม สั้น ยาว
ลอย วันที่ STRING ฝัง
ลิงค์ ไบต์ ไบนารี่ สองเท่า

นอกจากนี้ยังมีคุณสมบัติอื่น ๆ อีกหลายประเภทที่ทำงานเป็นคอนเทนเนอร์

EMBEDDEDLIST ฝังตัว EMBEDDEDMAP
LINKLIST LINKSET LINKMAP

ตัวอย่าง

ลองใช้ตัวอย่างต่อไปนี้เพื่อสร้างชื่อคุณสมบัติในคลาส Employee ของประเภท String

orientdb> CREATE PROPERTY Employee.name STRING

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Property created successfully with id = 1

Alter Propertyเป็นคำสั่งที่ใช้ในการแก้ไขหรืออัพเดตคุณสมบัติของคลาสเฉพาะ การเปลี่ยนแปลงคุณสมบัติหมายถึงการแก้ไขฟิลด์ของตาราง ในบทนี้คุณสามารถเรียนรู้วิธีการอัปเดตคุณสมบัติ

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของ Alter Property Command

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<class> - กำหนดคลาสที่เป็นของคุณสมบัติ

<property> - กำหนดคุณสมบัติที่คุณต้องการอัปเดต

<attribute-name> - กำหนดคุณสมบัติของคุณสมบัติที่คุณต้องการอัปเดต

<attribute-value> - กำหนดค่าที่คุณต้องการตั้งค่าในแอตทริบิวต์

ตารางต่อไปนี้กำหนดรายการแอตทริบิวต์เพื่อแก้ไขคุณสมบัติ

แอตทริบิวต์ ประเภท คำอธิบาย
LINKEDCLASS สตริง กำหนดชื่อคลาสที่เชื่อมโยง ใช้ NULL เพื่อลบค่าที่มีอยู่
LINKEDTYPE สตริง กำหนดประเภทลิงก์ ใช้ NULL เพื่อลบค่าที่มีอยู่
นาที จำนวนเต็ม กำหนดค่าต่ำสุดเป็นข้อ จำกัด ใช้ NULL เพื่อลบข้อ จำกัด ที่มีอยู่
การบังคับ บูลีน กำหนดว่าคุณสมบัติต้องการค่าหรือไม่
MAX จำนวนเต็ม กำหนดค่าสูงสุดเป็นข้อ จำกัด ใช้ NULL เพื่อลบข้อ จำกัด ที่มีอยู่
ชื่อ สตริง กำหนดชื่อคุณสมบัติ
ไม่เป็นโมฆะ บูลีน กำหนดว่าคุณสมบัติสามารถมีค่า NULL หรือไม่
REGEX สตริง กำหนดนิพจน์ทั่วไปเป็นข้อ จำกัด ใช้ NULL เพื่อลบข้อ จำกัด ที่มีอยู่
ประเภท สตริง กำหนดประเภทคุณสมบัติ
รวบรวม สตริง ตั้งค่าเรียงตามหนึ่งในกลยุทธ์การเปรียบเทียบที่กำหนดไว้ โดยค่าเริ่มต้นจะตั้งค่าเป็นแบบตรงตามตัวพิมพ์ใหญ่ - เล็ก (cs) คุณยังสามารถตั้งค่าให้ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ (ci)
อ่านเท่านั้น บูลีน กำหนดว่าค่าคุณสมบัติไม่เปลี่ยนรูป นั่นคือถ้าเป็นไปได้ที่จะเปลี่ยนแปลงหลังจากการมอบหมายครั้งแรก ใช้กับ DEFAULT เพื่อให้มีค่าที่ไม่เปลี่ยนรูปในการสร้าง
กำหนดเอง สตริง กำหนดคุณสมบัติแบบกำหนดเอง ไวยากรณ์สำหรับคุณสมบัติแบบกำหนดเองคือ <custom-name> = <custom-value> เช่นไอคอน stereotype =
ค่าเริ่มต้น   กำหนดค่าเริ่มต้นหรือฟังก์ชัน

Note - หากคุณกำลังแก้ไข NAME หรือ TYPE คำสั่งนี้จะใช้เวลาสักครู่ในการอัปเดตขึ้นอยู่กับปริมาณข้อมูล

ตัวอย่าง

ลองใช้คำค้นหาที่ให้ไว้ด้านล่างเพื่อทำความเข้าใจคุณสมบัติของ Alter

ดำเนินการค้นหาต่อไปนี้เพื่อเปลี่ยนชื่อของคุณสมบัติจาก 'อายุ' เป็น 'เกิด' ในคลาสลูกค้า

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

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Property altered successfully

ดำเนินการค้นหาต่อไปนี้เพื่อทำให้ 'name' เป็นคุณสมบัติบังคับของคลาส 'Customer'

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

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Property altered successfully

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 Command

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 กับจุดยอดใดจุดยอดหนึ่งมันจะอัพเดตขอบทั้งหมดที่เชื่อมต่อกับจุดยอดนี้ หากคุณกำลังระบุคลัสเตอร์ที่จะย้ายจุดยอดมันจะย้ายจุดยอดไปยังเจ้าของเซิร์ฟเวอร์ของคลัสเตอร์เป้าหมาย

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง Move Vertex

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<source>- กำหนดจุดยอดที่คุณต้องการย้าย ยอมรับรหัสบันทึกของจุดยอดเฉพาะหรืออาร์เรย์ของรหัสระเบียนสำหรับจุดยอด

<destination>- กำหนดตำแหน่งที่คุณต้องการย้ายจุดยอด รองรับคลาสหรือคลัสเตอร์เป็นปลายทาง

SET - ตั้งค่าเป็นฟิลด์

MERGE - ตั้งค่าเป็นฟิลด์ผ่าน JSON

BATCH - กำหนดขนาดแบทช์

Note- คำสั่งนี้อัปเดตขอบที่เชื่อมต่อทั้งหมด แต่ไม่ใช่ลิงก์ เมื่อใช้ Graph API ขอแนะนำให้ใช้ edge ที่เชื่อมต่อกับจุดยอด

ตัวอย่าง

ลองใช้ตัวอย่างต่อไปนี้เพื่อเรียนรู้วิธีการย้ายจุดยอด

ดำเนินการค้นหาต่อไปนี้เพื่อย้ายจุดยอดเดียวที่มีรหัสเรกคอร์ด # 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 Command

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<vertex> - กำหนดจุดยอดที่คุณต้องการลบโดยใช้ Class, Record ID หรือผ่านแบบสอบถามย่อย

WHERE - กรองเงื่อนไขเพื่อกำหนดว่าบันทึกคำสั่งใดลบออก

LIMIT - กำหนดจำนวนบันทึกสูงสุดที่จะลบออก

BATCH - กำหนดจำนวนบันทึกที่คำสั่งลบในแต่ละครั้งช่วยให้คุณสามารถแบ่งธุรกรรมขนาดใหญ่เป็นบล็อกขนาดเล็กเพื่อประหยัดการใช้หน่วยความจำ

ตัวอย่าง

ลองใช้คำสั่งต่อไปนี้เพื่อเรียนรู้วิธีลบจุดยอดเดียวหรือจุดยอดหลายจุด

ดำเนินการคำสั่งต่อไปนี้เพื่อลบจุดยอด '# 14: 1'

orientdb> DELETE VERTEX #14:1

หากคำสั่งดังกล่าวดำเนินการสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้

Delete record(s) '1' in 0.005000 sec(s)

ดำเนินการคำสั่งต่อไปนี้เพื่อลบจุดยอดทั้งหมดออกจากคลาส 'ลูกค้า' ที่ทำเครื่องหมายด้วยคุณสมบัติ 'isSpam'

orientdb> DELETE VERTEX Customer WHERE isSpam = TRUE

หากคำสั่งดังกล่าวดำเนินการสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้

Delete record(s) '3' in 0.005000 sec(s)

ใน OrientDB แนวคิด Edgeทำงานเหมือนความสัมพันธ์ระหว่างจุดยอดด้วยความช่วยเหลือของคุณสมบัติบางอย่าง ขอบและจุดยอดเป็นองค์ประกอบหลักของฐานข้อมูลกราฟ มันใช้ความหลากหลายบนขอบ คลาสพื้นฐานสำหรับ Edge คือ E ในขณะที่ใช้ขอบหากจุดยอดต้นทางหรือปลายทางหายไปหรือไม่มีอยู่ธุรกรรมจะย้อนกลับ

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของ Create Edge Command

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> - กำหนดชื่อคลาสสำหรับ edge

<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คำสั่งใช้เพื่ออัพเดต edge records ในฐานข้อมูลปัจจุบัน สิ่งนี้เทียบเท่ากับคำสั่งอัพเดตจริงนอกเหนือจากการตรวจสอบและรักษาความสอดคล้องของกราฟกับจุดยอดในกรณีที่คุณอัปเดตไฟล์out และ in คุณสมบัติ.

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของ Update Edge Command

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 - กำหนดจำนวนบันทึกสูงสุด

ตัวอย่าง

ให้เราพิจารณาตัวอย่างของการอัปเดต edge ที่ชื่อ 'address' ในคลาสบุคคลโดยรับข้อมูลจากตารางที่อยู่ซึ่งมีพื้นที่ Id = 001 และชื่อบุคคล = Krishna

orientdb> UPDATE EDGE address SET out = (SELECT FROM Address WHERE areaID = 001) 
WHERE name = 'krishna'

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Updated edge '[address[#10:3][#11:3->#14:2]]' in 0.012000 sec(s)

Delete edgeคำสั่งใช้เพื่อลบฐานข้อมูล คำสั่งนี้เทียบเท่ากับคำสั่งลบด้วยการเพิ่มการตรวจสอบและรักษาความสอดคล้องกับจุดยอดโดยการลบการอ้างอิงไขว้ทั้งหมดไปที่ขอบจากคุณสมบัติจุดยอดทั้ง 'ใน' และ 'ออก'

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง 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) แต่อาจมีความเป็นไปได้ที่อาจมีขอบหนึ่งหรือมากกว่าระหว่างสองจุด เพื่อให้เราใช้คุณสมบัติวันที่เพื่อการทำงานที่เหมาะสม คำค้นหานี้จะลบขอบที่สร้างขึ้นบน '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 ตารางต่อไปนี้กำหนดรายการฟังก์ชันซึ่งแบ่งตามฟังก์ชันการทำงาน

ฟังก์ชันกราฟ

ซีเนียร์ ชื่อฟังก์ชันและคำอธิบาย
1

Out():

รับจุดยอดขาออกที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex

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

2

In():

รับจุดยอดขาเข้าที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex

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

3

Both():

รับจุดยอดขาออกและขาเข้าที่อยู่ติดกันโดยเริ่มจากบันทึกปัจจุบันเป็นจุดยอด

Syntax - ทั้ง ([<label1>] [, <label-n>] *)

4

outE():

รับขอบขาออกที่อยู่ติดกันโดยเริ่มจากบันทึกปัจจุบันเป็น Vertex

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

5

inE():

รับขอบขาเข้าที่อยู่ติดกันโดยเริ่มจากเรกคอร์ดปัจจุบันเป็น Vertex

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

6

bothE():

รับขอบขาออกและขาเข้าที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex

Syntax - ทั้งสอง E ([<label1>] [, <label-n>] *)

7

outV():

รับจุดยอดขาออกโดยเริ่มจากบันทึกปัจจุบันเป็น Edge

Syntax - outV ()

8

inV():

รับจุดยอดที่เข้ามาจากบันทึกปัจจุบันเป็น Edge

Syntax - inV ()

9

traversedElement():

ส่งคืนอิลิเมนต์ traversed ในคำสั่ง Traverse

Syntax - traversedElement (<index> [, <items>])

10

traversedVertex():

ส่งกลับจุดยอดที่ข้ามผ่านในคำสั่ง Traverse

Syntax - traversedVertex (<index> [, <items>])

11

traversedEdge():

ส่งกลับขอบที่ข้ามในคำสั่ง Traverse

Syntax - traversedEdge (<index> [, <items>])

12

shortestPath():

ส่งกลับเส้นทางที่สั้นที่สุดระหว่างจุดยอดสองจุด ทิศทางสามารถเป็น OUT (ค่าเริ่มต้น), IN หรือ BOTH

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

13

dijkstra():

ส่งคืนเส้นทางที่ถูกที่สุดระหว่างจุดยอดสองจุดโดยใช้อัลกอริทึม 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   
 ---+----------+-------+-------

ฟังก์ชันคณิตศาสตร์

ซีเนียร์ ชื่อฟังก์ชันและคำอธิบาย
1

eval():

ประเมินนิพจน์ระหว่างอัญประกาศ (หรือเครื่องหมายคำพูดคู่)

Syntax - eval ('<แสดงออก>')

2

min():

ส่งคืนค่าต่ำสุด หากเรียกใช้ด้วยพารามิเตอร์มากกว่าหนึ่งพารามิเตอร์จะส่งคืนค่าอาร์กิวเมนต์ขั้นต่ำระหว่างอาร์กิวเมนต์ทั้งหมด

Syntax - นาที (<field> [, <field-n>] *)

3

max():

ส่งคืนค่าสูงสุด หากเรียกใช้ด้วยพารามิเตอร์มากกว่าหนึ่งพารามิเตอร์ให้ส่งกลับค่าสูงสุดระหว่างอาร์กิวเมนต์ทั้งหมด

Syntax - สูงสุด (<field> [, <field-n>] *)

4

sum()

ส่งคืนผลรวมของค่าทั้งหมดที่ส่งคืน

Syntax - ผลรวม (<field>)

5

abs():

ส่งคืนค่าสัมบูรณ์ ใช้งานได้กับ Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null

Syntax - หน้าท้อง (<field>)

6

avg():

ส่งกลับค่าเฉลี่ย

Syntax - เฉลี่ย (<field>)

7

count():

นับระเบียนที่ตรงกับเงื่อนไขแบบสอบถาม หากไม่ได้ใช้ * เป็นฟิลด์บันทึกจะถูกนับก็ต่อเมื่อเนื้อหาไม่เป็นโมฆะ

Syntax - นับ (<field>)

8

mode():

ส่งคืนค่าที่เกิดขึ้นพร้อมกับความถี่ที่มากที่สุด Nulls จะถูกละเว้นในการคำนวณ

Syntax - โหมด (<field>)

9

median():

ส่งคืนค่ากลางหรือค่า interpolated ที่แสดงถึงค่ากลางหลังจากจัดเรียงค่าแล้ว Nulls จะถูกละเว้นในการคำนวณ

Syntax - ค่ามัธยฐาน (<field>)

10

percentile():

ส่งคืนเปอร์เซ็นไทล์ที่ n Null จะถูกละเว้นในการคำนวณ

Syntax - เปอร์เซ็นไทล์ (<field> [, <quantile-n>] *)

11

variance()

ส่งกลับค่าความแปรปรวนกลาง: ค่าเฉลี่ยของผลต่างกำลังสองจากค่าเฉลี่ย

Syntax - ความแปรปรวน (<field>)

12

stddev()

ส่งกลับค่าเบี่ยงเบนมาตรฐาน: การวัดว่าค่ากระจายออกเป็นอย่างไร Nulls จะถูกละเว้นในการคำนวณ

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

ฟังก์ชันคอลเลกชัน

ซีเนียร์ ชื่อฟังก์ชันและคำอธิบาย
1

set():

เพิ่มค่าให้กับชุด ถ้าค่าเป็นคอลเล็กชันจะรวมเข้ากับชุดนั้นมิฉะนั้นจะเพิ่ม <value>

Syntax - ตั้งค่า (<ฟิลด์>)

2

map():

เพิ่มมูลค่าให้กับแผนที่ในครั้งแรกที่สร้างแผนที่ ถ้า <value> เป็นแผนที่ระบบจะรวมเข้ากับแผนที่มิฉะนั้นคู่ <key> และ <value> จะถูกเพิ่มลงในแผนที่เป็นรายการใหม่

Syntax - แผนที่ (<key>, <value>)

3

ist():

เพิ่มค่าลงในรายการในครั้งแรกที่สร้างรายการ หาก <value> เป็นคอลเล็กชันจะรวมเข้ากับรายการมิฉะนั้นจะเพิ่ม <value> ลงในรายการ

Syntax - รายการ (<field>)

4

difference():

ทำงานเป็นแบบรวมหรือแบบอินไลน์ หากมีการส่งผ่านเพียงอาร์กิวเมนต์เดียวจากนั้นจะรวมมิฉะนั้นจะดำเนินการและส่งกลับค่าความแตกต่างระหว่างคอลเล็กชันที่ได้รับเป็นพารามิเตอร์

Syntax - ความแตกต่าง (<field> [, <field-n>] *)

5

first():

ดึงเฉพาะรายการแรกของเขตข้อมูลหลายค่า (อาร์เรย์คอลเลกชันและแผนที่) สำหรับชนิดที่ไม่ใช่หลายค่าให้ส่งคืนค่า

Syntax - แรก (<field>)

6

intersect():

ทำงานเป็นแบบรวมหรือแบบอินไลน์ หากมีการส่งผ่านเพียงอาร์กิวเมนต์เดียวจากนั้นจะรวมหรือดำเนินการและส่งกลับค่า INTERACTION ของคอลเล็กชันที่ได้รับเป็นพารามิเตอร์

Syntax - ตัดกัน (<field> [, <field-n>] *)

7

distinct():

ดึงเฉพาะรายการข้อมูลที่ไม่ซ้ำกันขึ้นอยู่กับฟิลด์ที่คุณระบุเป็นอาร์กิวเมนต์ ความแตกต่างหลักเมื่อเทียบกับ SQL DISTINCT มาตรฐานคือด้วย OrientDB ฟังก์ชันที่มีวงเล็บและสามารถระบุได้เพียงช่องเดียว

Syntax - แตกต่าง (<field>)

8

expand():

ฟังก์ชันนี้มีสองความหมาย

  • เมื่อใช้ในฟิลด์คอลเลกชันจะคลายคอลเลกชันในฟิลด์และใช้เป็นผลลัพธ์

  • เมื่อใช้กับฟิลด์ลิงก์ (RID) จะขยายเอกสารที่ลิงก์นั้นชี้

Syntax - ขยาย (<field>)

9

unionall():

ทำงานเป็นแบบรวมหรือแบบอินไลน์ หากมีการส่งผ่านอาร์กิวเมนต์เดียวเท่านั้นจากนั้นจะรวมมิฉะนั้นจะดำเนินการและส่งคืน UNION ของคอลเล็กชันทั้งหมดที่ได้รับเป็นพารามิเตอร์ ยังทำงานโดยไม่มีค่าคอลเลกชัน

Syntax - ยูเนี่ยนอล (<field> [, <field-n>] *)

10

flatten():

แยกคอลเล็กชันในฟิลด์และใช้เป็นผลลัพธ์ เลิกใช้แล้วให้ใช้ expand () แทน

Syntax - แบน (<field>)

11

last():

ดึงเฉพาะรายการสุดท้ายของเขตข้อมูลหลายค่า (อาร์เรย์คอลเลกชันและแผนที่) สำหรับชนิดที่ไม่ใช่หลายค่าให้ส่งคืนค่า

Syntax - สุดท้าย (<field>)

12

symmetricDifference():

ทำงานเป็นแบบรวมหรือแบบอินไลน์ หากมีการส่งผ่านเพียงอาร์กิวเมนต์เดียวจากนั้นจะรวมมิฉะนั้นจะดำเนินการและส่งกลับค่า SYMMETRIC DIFFERENCE ระหว่างคอลเล็กชันที่ได้รับเป็นพารามิเตอร์

Syntax - สมมาตร (<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 
---+----------+-------+---------------------------

ฟังก์ชันอื่น ๆ

ซีเนียร์ ชื่อฟังก์ชันและคำอธิบาย
1

date():

ส่งคืนวันที่ที่จัดรูปแบบสตริง <date-as-string> คือวันที่ในรูปแบบสตริงและ <format> คือรูปแบบวันที่ตามกฎเหล่านี้

Syntax - วันที่ (<date-as-string> [<format>] [, <timezone>])

2

sysdate():

ส่งคืนวันที่และเวลาปัจจุบัน

Syntax - sysdate ([<format>] [, <timezone>])

3

format():

จัดรูปแบบค่าโดยใช้หลักการ String.format ()

Syntax - รูปแบบ (<format> [, <arg1>] (, <arg-n>] *. md)

4

distance():

ส่งกลับระยะห่างระหว่างจุดสองจุดในโลกโดยใช้อัลกอริทึม Haversine พิกัดต้องเป็นองศา

Syntax - ระยะทาง (<x-field>, <y-field>, <x-value>, <y-value>)

5

ifnull():

ส่งคืนฟิลด์ / ค่าที่ส่งผ่าน (หรือพารามิเตอร์ทางเลือก return_value_if_not_null) หากฟิลด์ / ค่าไม่เป็นโมฆะจะส่งคืน return_value_if_null

Syntax - ifnull (<ฟิลด์ | ค่า>, <return_value_if_null> [, <return_value_if_not_null>] (, <ฟิลด์ & .md # 124; ค่า>] *)

6

coalesce():

ส่งคืนฟิลด์ / ค่าแรกไม่ใช่พารามิเตอร์ null ถ้าไม่มีฟิลด์ / ค่าไม่ใช่ null ให้ส่งคืนค่า null

Syntax - รวมกัน (<field | value> [, <field-n | value-n>] *)

7

uuid():

สร้าง UUID เป็นค่า 128 บิตโดยใช้ตัวแปร Leach-Salz

Syntax - uuid ()

8

if():

ประเมินเงื่อนไข (พารามิเตอร์แรก) และส่งกลับพารามิเตอร์ที่สองหากเงื่อนไขเป็นจริงหรือเงื่อนไขที่สาม

Syntax - ถ้า (<expression>, <result-if-true>, <result-if-false>)

ลองใช้ฟังก์ชันอื่น ๆ โดยใช้คำค้นหาต่อไปนี้

ดำเนินการสอบถามต่อไปนี้เพื่อเรียนรู้วิธีดำเนินการนิพจน์ if

orientdb {db = demo}> SELECT if(eval("name = 'satish'"), "My name is satish", 
"My name is not satish") FROM Employee

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

----+--------+----------------------- 
#   |@CLASS  | IF 
----+--------+----------------------- 
0   |null    |My name is satish  
1   |null    |My name is not satish 
2   |null    |My name is not satish  
3   |null    |My name is not satish  
4   |null    |My name is not satish  
----+--------+------------------------

ดำเนินการค้นหาต่อไปนี้เพื่อรับวันที่ของระบบ

orientdb {db = demo}> SELECT SYSDATE() FROM Employee

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

----+--------+----------------------- 
#   |@CLASS  | SYSDATE 
----+--------+----------------------- 
0   |null    |2016-02-10 12:05:06 
1   |null    |2016-02-10 12:05:06 
2   |null    |2016-02-10 12:05:06 
3   |null    |2016-02-10 12:05:06 
4   |null    |2016-02-10 12:05:06 
----+--------+------------------------

เมื่อใช้ฟังก์ชันนี้อย่างละเอียดคุณสามารถจัดการข้อมูล OrientDB ได้อย่างง่ายดาย

Sequencesเป็นแนวคิดที่ใช้ในกลไกการเพิ่มอัตโนมัติและถูกนำมาใช้ใน OrientDB v2.2 ในคำศัพท์ฐานข้อมูลลำดับคือโครงสร้างที่จัดการฟิลด์ตัวนับ พูดง่ายๆว่าลำดับส่วนใหญ่จะใช้เมื่อคุณต้องการตัวเลขที่เพิ่มขึ้นเสมอ รองรับสองประเภท

ORDERED - ทุกครั้งที่ตัวชี้เรียกเมธอด. next ที่ส่งคืนค่าใหม่

CACHED- ลำดับจะแคชรายการ 'N' ในแต่ละโหนด เพื่อเรียกไอเทมแต่ละชิ้นที่เราใช้.next()ซึ่งเป็นที่ต้องการเมื่อแคชมีมากกว่าหนึ่งรายการ

สร้างลำดับ

โดยปกติลำดับจะใช้เพื่อเพิ่มค่า id ของบุคคลโดยอัตโนมัติ เช่นเดียวกับแนวคิด SQL อื่น ๆ ของ OrientDB มันยัง preforms การดำเนินการที่คล้ายกันเป็นลำดับใน RDBMS

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานในการสร้างลำดับ

CREATE SEQUENCE <sequence> TYPE <CACHED|ORDERED> [START <start>]  
[INCREMENT <increment>] [CACHE <cache>]

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<Sequence> - ชื่อท้องถิ่นสำหรับลำดับ

TYPE - กำหนดประเภทลำดับ ORDERED หรือ CACHED

START - กำหนดค่าเริ่มต้น

INCREMENT - กำหนดส่วนเพิ่มสำหรับการเรียกวิธี. next แต่ละครั้ง

CACHE - กำหนดจำนวนค่าที่จะแคชล่วงหน้าในกรณีที่คุณใช้ประเภทลำดับแคช

ให้เราสร้างลำดับชื่อ 'seqid' ซึ่งเริ่มต้นด้วยหมายเลข 1201 ลองใช้คำค้นหาต่อไปนี้เพื่อใช้ตัวอย่างนี้กับลำดับ

CREATE SEQUENCE seqid START 1201

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Sequence created successfully

ลองใช้แบบสอบถามต่อไปนี้เพื่อใช้ลำดับ 'seqid' เพื่อแทรกค่า id ของตารางบัญชี

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 เป็นคำสั่งที่ใช้ในการวางลำดับ

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานสำหรับวางลำดับ

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 Spatial Index

มีดัชนีเชิงพื้นที่ที่ดี แต่ไม่สามารถใช้เพื่อจัดทำดัชนีประเภทอื่นได้ มีความทนทานทำธุรกรรมและรองรับการสืบค้นช่วง

การสร้างดัชนี

สร้างดัชนีคือคำสั่งในการสร้างดัชนีบนสคีมาเฉพาะ

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานในการสร้างดัชนี

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

เช่นเดียวกับ RDBMS OrientDB รองรับคุณสมบัติกรดธุรกรรม กtransactionประกอบด้วยหน่วยงานที่ดำเนินการภายในระบบจัดการฐานข้อมูล มีสองเหตุผลหลักในการรักษาธุรกรรมในสภาพแวดล้อมฐานข้อมูล

  • เพื่อให้สามารถกู้คืนพร้อมกันจากความล้มเหลวและรักษาฐานข้อมูลให้สอดคล้องกันแม้ในกรณีที่ระบบล้มเหลว

  • เพื่อแยกระหว่างโปรแกรมที่เข้าถึงฐานข้อมูลพร้อมกัน

โดยค่าเริ่มต้นธุรกรรมฐานข้อมูลจะต้องเป็นไปตามคุณสมบัติของกรดเช่นคุณสมบัติของอะตอมสอดคล้องแยกและทนทาน แต่ OrientDB เป็นฐานข้อมูลที่สอดคล้องกับ ACID ซึ่งหมายความว่าไม่ขัดแย้งหรือลบล้างแนวคิด ACID แต่จะเปลี่ยนการรับรู้ขณะจัดการฐานข้อมูล NoSQL ดูว่าคุณสมบัติ ACID ทำงานร่วมกับฐานข้อมูล NoSQL อย่างไร

Atomic - เมื่อคุณทำอะไรบางอย่างเพื่อเปลี่ยนแปลงฐานข้อมูลการเปลี่ยนแปลงควรใช้งานได้หรือล้มเหลวโดยรวม

Consistent - ฐานข้อมูลควรมีความสม่ำเสมอ

Isolated - หากมีการดำเนินการธุรกรรมอื่น ๆ ในเวลาเดียวกันผู้ใช้จะไม่สามารถเห็นบันทึกในการดำเนินการพร้อมกันได้

Durable - หากระบบขัดข้อง (ฮาร์ดแวร์หรือซอฟต์แวร์) ฐานข้อมูลเองควรจะสำรองข้อมูลได้

ธุรกรรมฐานข้อมูลสามารถทำได้โดยใช้คำสั่ง Commit และ Rollback

กระทำ

Commit หมายถึงการปิดธุรกรรมโดยบันทึกการเปลี่ยนแปลงทั้งหมดลงในฐานข้อมูล การย้อนกลับหมายถึงการกู้คืนสถานะฐานข้อมูลไปยังจุดที่คุณเปิดธุรกรรม

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่งฐานข้อมูล COMMIT

COMMIT

Note - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะและหลังจากเริ่มต้นธุรกรรม

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างในบทก่อนหน้าของบทช่วยสอนนี้ เราจะเห็นการดำเนินการของการทำธุรกรรมและจัดเก็บบันทึกโดยใช้ธุรกรรม

ก่อนอื่นคุณต้องเริ่มต้นธุรกรรมโดยใช้คำสั่ง 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 - คุณสามารถใช้คำสั่งนี้ได้หลังจากเชื่อมต่อกับฐานข้อมูลเฉพาะและหลังจากเริ่มต้นธุรกรรม

ตัวอย่าง

ในตัวอย่างนี้เราจะใช้ฐานข้อมูลเดียวกันชื่อ 'สาธิต' ที่เราสร้างในบทก่อนหน้าของบทช่วยสอน เราจะเห็นการทำงานของธุรกรรมย้อนกลับและจัดเก็บบันทึกโดยใช้ธุรกรรม

ก่อนอื่นคุณต้องเริ่มต้นธุรกรรมโดยใช้คำสั่ง 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

ตรวจสอบคิวรีแบบเลือกอีกครั้งเพื่อดึงเรกคอร์ดเดียวกันจากตารางพนักงาน

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

หากดำเนินการย้อนกลับสำเร็จคุณจะได้รับ 0 รายการที่พบในผลลัพธ์

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

OrientDB Hooksไม่มีอะไรนอกจากทริกเกอร์ในคำศัพท์ของฐานข้อมูลที่เปิดใช้งานเหตุการณ์ภายในก่อนและหลังการดำเนินการ CRUD แต่ละครั้งในแอปพลิเคชันผู้ใช้ คุณสามารถใช้ hooks เพื่อเขียนกฎการตรวจสอบความถูกต้องที่กำหนดเองเพื่อบังคับใช้การรักษาความปลอดภัยหรือเพื่อจัดเรียงเหตุการณ์ภายนอกเช่นการจำลองแบบเทียบกับ DBMS เชิงสัมพันธ์

OrientDB รองรับตะขอสองแบบ -

Dynamic Hook - ทริกเกอร์ซึ่งสามารถสร้างได้ในระดับชั้นเรียนและ / หรือระดับเอกสาร

Java (Native) Hook - ทริกเกอร์ซึ่งสามารถสร้างได้โดยใช้คลาส Java

ตะขอแบบไดนามิก

Dynamic hooks มีความยืดหยุ่นมากกว่า Java hooks เนื่องจากสามารถเปลี่ยนได้ที่รันไทม์และรันต่อเอกสารได้หากต้องการ แต่ช้ากว่า Java hooks

ในการเรียกใช้ hooks กับเอกสารของคุณก่อนอื่นให้อนุญาตให้ชั้นเรียนของคุณขยาย OTriggeredชั้นฐาน ต่อมากำหนดคุณสมบัติที่กำหนดเองสำหรับเหตุการณ์ที่สนใจ ต่อไปนี้เป็นเหตุการณ์ที่มีอยู่

  • onBeforeCreate - โทร before สร้างเอกสารใหม่

  • onAfterCreate - โทร after สร้างเอกสารใหม่

  • onBeforeRead - โทร before อ่านเอกสาร

  • onAfterRead - โทร after อ่านเอกสาร

  • onBeforeUpdate - โทร before การอัปเดตเอกสาร

  • onAfterUpdate - โทร after การอัปเดตเอกสาร

  • onBeforeDelete - โทร before การลบเอกสาร

  • onAfterDelete - โทร after การลบเอกสาร

Dynamic Hooks สามารถโทร -

  • ฟังก์ชั่นเขียนด้วย SQL, Javascript หรือภาษาใด ๆ ที่รองรับโดย OrientDB และ JVM

  • วิธีการคงที่ของ Java

ตะขอระดับชั้น

ตะขอระดับคลาสถูกกำหนดไว้สำหรับเอกสารทั้งหมดที่เกี่ยวข้องกับคลาส ต่อไปนี้เป็นตัวอย่างในการตั้งค่า hook ที่ทำหน้าที่ในระดับคลาสเทียบกับเอกสารใบแจ้งหนี้

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 ที่มีอยู่สำหรับเอกสารทั้งหมดที่มีบัญชีคุณสมบัติ = '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

จากนั้นทดสอบเบ็ดโดยพยายามลบบัญชี 'Premium'

DELETE FROM #12:1 
java.lang.RuntimeException: Cannot delete Premium profile
profile#12:1{onBeforeDelete:preventDeletion,account:Premium,name:Jill} v-1 
(<Unknown source>#2) in <Unknown source> at line number 2

ตะขอ JAVA

กรณีการใช้งานทั่วไปอย่างหนึ่งสำหรับ OrientDB Hooks (ทริกเกอร์) คือการจัดการวันที่สร้างและอัพเดตสำหรับคลาสใด ๆ หรือทั้งหมด ตัวอย่างเช่นคุณสามารถตั้งค่าไฟล์CreatedDate เมื่อใดก็ตามที่สร้างเรกคอร์ดและตั้งค่าไฟล์ UpdatedDate เมื่อใดก็ตามที่ระเบียนได้รับการอัปเดตและทำในลักษณะที่คุณใช้ตรรกะครั้งเดียวที่ชั้นฐานข้อมูลและไม่ต้องกังวลอีกต่อไปที่ชั้นแอปพลิเคชัน

ก่อนสร้างคุณจะต้องดาวน์โหลด orientdb-core.jarไฟล์ด้วยการเยี่ยมชมลิงค์ต่อไปนี้ดาวน์โหลด OrientDB หลัก จากนั้นคัดลอกไฟล์ jar นั้นไปยังโฟลเดอร์ที่คุณต้องการจัดเก็บซอร์สไฟล์ Java

สร้างไฟล์ Hook

สร้างไฟล์ 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 Hooks

คอมไพล์โค้ด Java โดยใช้คำสั่งต่อไปนี้ Note: เก็บไฟล์ jar ที่ดาวน์โหลดและไฟล์ Java เหล่านี้ไว้ในโฟลเดอร์เดียวกัน

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

ย้ายรหัสที่คอมไพล์ไปยังตำแหน่งที่เซิร์ฟเวอร์ OrientDB สามารถค้นหาได้

คุณต้องคัดลอกไฟล์. jar ที่เสร็จแล้วไปยังไดเร็กทอรีที่เซิร์ฟเวอร์ OrientDB ของคุณจะค้นหา ซึ่งหมายความว่า./lib'ภายใต้ไดเรกทอรีรากของ OrientDB Server จะมีลักษณะดังนี้ -

$ 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 Server เบ็ดที่คุณกำหนดไว้ 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 และ UpdatedDateOrientDB ได้ตั้งค่าฟิลด์เหล่านี้ให้คุณโดยอัตโนมัติ

ถัดไปคุณต้องอัปเดตบันทึกโดยใช้คำสั่งต่อไปนี้ -

UPDATE tTest SET ID = 2 WHERE ID = 1; 
SELECT FROM tTest;

หากคำสั่งนี้ดำเนินการสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้

----+-----+------+----+-----------+----------- 
#   |@RID |@CLASS|ID  |CreatedDate|UpdatedDate 
----+-----+------+----+-----------+----------- 
0   |#19:0|tTest |2   |1427597275 |1427597306 
----+-----+------+----+-----------+-----------

คุณจะเห็นได้ว่า OrientDB ได้เปลี่ยนไฟล์ UpdatedDate แต่ได้ปล่อยให้ CreatedDate ยังคงไม่เปลี่ยนแปลง

OrientDB Java Hooks เป็นเครื่องมือที่มีค่าอย่างยิ่งในการช่วยทำงานอัตโนมัติที่คุณต้องทำในแอปพลิเคชันโค้ด เนื่องจาก DBA จำนวนมากไม่ได้เป็นผู้เชี่ยวชาญด้าน Java เสมอไปหวังว่าข้อมูลที่มีอยู่ในบทช่วยสอนนี้จะช่วยให้คุณเริ่มต้นได้อย่างรวดเร็วและทำให้คุณรู้สึกสบายใจกับเทคโนโลยีนี้ซึ่งจะช่วยให้คุณสร้างฐานข้อมูลทริกเกอร์ได้สำเร็จเมื่อจำเป็น

Cachingเป็นแนวคิดที่จะสร้างสำเนาของโครงสร้างตารางฐานข้อมูลที่ให้สภาพแวดล้อมที่สะดวกสบายสำหรับแอปพลิเคชันของผู้ใช้ OrientDB มีกลไกการแคชหลายระดับในระดับต่างๆ

ภาพประกอบต่อไปนี้ให้แนวคิดเกี่ยวกับการแคชคืออะไร

ในภาพประกอบด้านบน DB1, DB2, DB3 เป็นอินสแตนซ์ฐานข้อมูลสามแบบที่ใช้ในแอปพลิเคชัน

Level-1 แคชคือ Local cacheซึ่งจัดเก็บเอนทิตีทั้งหมดที่เซสชันหนึ่งรู้จัก หากคุณมีธุรกรรมสามรายการในเซสชันนี้จะถือเอนทิตีทั้งหมดที่ใช้โดยธุรกรรมทั้งสามรายการ แคชนี้จะถูกล้างเมื่อคุณปิดเซสชันหรือเมื่อคุณใช้วิธี "ล้าง" ช่วยลดภาระของการดำเนินการ I / O ระหว่างแอปพลิเคชันและฐานข้อมูลและเพิ่มประสิทธิภาพการทำงาน

Level-2 แคชคือ Real cacheที่ทำงานโดยใช้ผู้ให้บริการบุคคลที่สาม คุณสามารถควบคุมเนื้อหาของแคชได้อย่างเต็มที่กล่าวคือคุณจะสามารถระบุได้ว่ารายการใดที่ควรลบรายการใดควรเก็บไว้นานขึ้นเรื่อย ๆ เป็นแคชที่ใช้ร่วมกันแบบเต็มในหลายเธรด

Storage model ไม่มีอะไรนอกจากอุปกรณ์จัดเก็บข้อมูลที่เป็นดิสก์หน่วยความจำหรือเซิร์ฟเวอร์ระยะไกล

แคชทำงานอย่างไรใน OrientDB

การแคช OrientDB ให้วิธีการที่แตกต่างกันในสภาพแวดล้อมที่แตกต่างกัน การแคชส่วนใหญ่จะใช้สำหรับการทำธุรกรรมฐานข้อมูลที่เร็วขึ้นลดเวลาในการประมวลผลของธุรกรรมและเพิ่มประสิทธิภาพ โฟลว์ไดอะแกรมต่อไปนี้แสดงวิธีการแคชทำงานในโหมดโลคัลและโหมดไคลเอนต์เซิร์ฟเวอร์

โหมดภายในเครื่อง (ฐานข้อมูลแบบฝัง)

โฟลว์ไดอะแกรมต่อไปนี้จะบอกคุณว่าเร็กคอร์ดอยู่ระหว่างที่เก็บข้อมูลและแอพพลิเคชั่นที่ใช้ในโหมดโลคัลอย่างไรเมื่อเซิร์ฟเวอร์ฐานข้อมูลของคุณอยู่ในโลคัลโฮสต์ของคุณ

เมื่อแอปพลิเคชันไคลเอนต์ขอระเบียน OrientDB ตรวจสอบสิ่งต่อไปนี้ -

  • หากธุรกรรมได้เริ่มขึ้นระบบจะค้นหาบันทึกที่เปลี่ยนแปลงภายในธุรกรรมและส่งคืนหากพบ

  • หากเปิดใช้งานแคชภายในเครื่องและมีระเบียนที่ร้องขอให้ส่งกลับ

  • หาก ณ จุดนี้บันทึกไม่อยู่ในแคชให้ขอไปที่ Storage (ดิสก์หน่วยความจำ)

โหมดไคลเอนต์เซิร์ฟเวอร์ (ฐานข้อมูลระยะไกล)

โฟลว์ไดอะแกรมต่อไปนี้จะบอกคุณว่าเร็กคอร์ดอยู่ระหว่างหน่วยเก็บข้อมูลและแอ็พพลิเคชันที่ใช้ในโหมดไคลเอนต์เซิร์ฟเวอร์กล่าวคือเมื่อเซิร์ฟเวอร์ฐานข้อมูลของคุณอยู่ในตำแหน่งระยะไกล

เมื่อแอปพลิเคชันไคลเอนต์ขอบันทึก OrientDB จะตรวจสอบสิ่งต่อไปนี้ -

  • หากธุรกรรมได้เริ่มขึ้นระบบจะค้นหาบันทึกที่เปลี่ยนแปลงภายในธุรกรรมและส่งคืนหากพบ

  • หากเปิดใช้งานแคชภายในเครื่องและมีระเบียนที่ร้องขอให้ส่งกลับ

  • ณ จุดนี้หากบันทึกไม่อยู่ในแคชให้ขอข้อมูลไปยังเซิร์ฟเวอร์ผ่านการโทร TCP / IP

  • ในเซิร์ฟเวอร์หากเปิดใช้งานแคชภายในเครื่องและมีระเบียนที่ร้องขอให้ส่งคืน

  • ณ จุดนี้บันทึกยังไม่ถูกแคชในเซิร์ฟเวอร์จากนั้นขอไปที่ Storage (ดิสก์หน่วยความจำ)

OrientDB ใช้ Java Logging framework ที่มาพร้อมกับ Java Virtual Machine รูปแบบบันทึกเริ่มต้นของ OrientDB ถูกจัดการโดยOLogFormatter ชั้นเรียน.

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่งการบันทึก

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

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<date> - เป็นวันที่บันทึกในรูปแบบต่อไปนี้: yyyy-MM-dd HH: mm: ss: SSS

<level> - เป็นระดับการบันทึกเป็นเอาต์พุต 5 ตัวอักษร

<message> - เป็นข้อความบันทึกสามารถมีขนาดใดก็ได้

[<class>] - เป็นคลาส Java ที่ล็อกไว้ (ทางเลือก)

ระดับที่รองรับคือระดับที่มีอยู่ในคลาส JRE java.util.logging.Level พวกเขาคือ -

  • SEVERE (ค่าสูงสุด)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST (ค่าต่ำสุด)

โดยค่าเริ่มต้นจะมีการติดตั้งคนตัดไม้สองตัว -

  • Consoleเป็นเอาต์พุตของเชลล์ / พร้อมต์คำสั่งที่สตาร์ทแอ็พพลิเคชัน / เซิร์ฟเวอร์ สามารถเปลี่ยนแปลงได้โดยตั้งค่าตัวแปร 'log.console.level'

  • Fileเป็นผลลัพธ์ไปยังล็อกไฟล์ สามารถเปลี่ยนแปลงได้โดยตั้งค่า 'log.file.level'

กำหนดค่าการบันทึก

กลยุทธ์และนโยบายการบันทึกสามารถกำหนดค่าได้โดยใช้ไฟล์ต่อจาก Java

syntax - การกำหนดค่า Java Logging

ตัวอย่าง

คัดลอกเนื้อหาต่อไปนี้จาก 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 Code

ตัวแปรระบบสามารถตั้งค่าได้เมื่อเริ่มต้นโดยใช้ System.setProperty () API ข้อมูลโค้ดต่อไปนี้เป็นไวยากรณ์สำหรับตั้งค่าระดับการบันทึกโดยใช้โค้ด Java

public void main(String[] args){ 
   System.setProperty("log.console.level", "FINE"); 
   ... 
}

บนเซิร์ฟเวอร์ระยะไกล

ดำเนินการ HTTP POST กับ URL: /server/log.<type>/ <level> โดยที่ -

  • <type> สามารถเป็น "console" หรือ "file"
  • <level> เป็นหนึ่งในระดับที่รองรับ

ตัวอย่าง

ตัวอย่างต่อไปนี้ใช้ cURLเพื่อรันคำสั่ง HTTP POST กับ OrientDB Server มีการใช้ผู้ใช้และรหัสผ่าน "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 ในโหมดฝังตัวโดยใช้โดยตรง plocal.

สิ่งที่สำคัญที่สุดในการปรับแต่งคือการตรวจสอบว่าการตั้งค่าหน่วยความจำถูกต้อง สิ่งที่สามารถสร้างความแตกต่างได้อย่างแท้จริงคือการปรับสมดุลระหว่างฮีปและหน่วยความจำเสมือนที่ใช้โดย Memory Mapping โดยเฉพาะอย่างยิ่งในชุดข้อมูลขนาดใหญ่ (GBs, TBs และอื่น ๆ ) ซึ่งโครงสร้างแคชในหน่วยความจำนับน้อยกว่า IO ดิบ

ตัวอย่างเช่นหากคุณสามารถกำหนด 8GB สูงสุดให้กับกระบวนการ Java ได้โดยปกติแล้วการกำหนดฮีปขนาดเล็กและดิสก์แคชบัฟเฟอร์ขนาดใหญ่ (หน่วยความจำนอกฮีป) จะดีกว่า

ลองใช้คำสั่งต่อไปนี้เพื่อเพิ่มหน่วยความจำฮีป

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

storage.diskCache.bufferSize การตั้งค่า (ด้วยพื้นที่เก็บข้อมูล "ในเครื่อง" แบบเก่า file.mmap.maxMemory) เป็น MB และบอกจำนวนหน่วยความจำที่จะใช้สำหรับคอมโพเนนต์ Disk Cache โดยค่าเริ่มต้นคือ 4GB

NOTE - หากผลรวมของฮีปสูงสุดและบัฟเฟอร์แคชดิสก์สูงเกินไปอาจทำให้ระบบปฏิบัติการสลับกับการชะลอตัวครั้งใหญ่

การตั้งค่า JVM

การตั้งค่า JVM ถูกเข้ารหัสในไฟล์แบตช์ server.sh (และ server.bat) คุณสามารถเปลี่ยนเพื่อปรับแต่ง JVM ตามการใช้งานและการตั้งค่า hw / sw ของคุณ เพิ่มบรรทัดต่อไปนี้ในไฟล์ server.bat

-server -XX:+PerfDisableSharedMem

การตั้งค่านี้จะปิดใช้งานการเขียนข้อมูลการดีบักเกี่ยวกับ JVM ในกรณีที่คุณต้องการกำหนดโปรไฟล์ JVM เพียงแค่ลบการตั้งค่านี้

การเชื่อมต่อระยะไกล

มีหลายวิธีในการปรับปรุงประสิทธิภาพเมื่อคุณเข้าถึงฐานข้อมูลโดยใช้การเชื่อมต่อระยะไกล

กำลังดึงกลยุทธ์

เมื่อคุณทำงานกับฐานข้อมูลระยะไกลคุณต้องใส่ใจกับกลยุทธ์การดึงข้อมูลที่ใช้ ตามค่าเริ่มต้นไคลเอนต์ OrientDB จะโหลดเฉพาะเรกคอร์ดที่มีอยู่ในชุดผลลัพธ์ ตัวอย่างเช่นหากแบบสอบถามส่งคืนองค์ประกอบ 100 รายการ แต่ถ้าคุณข้ามองค์ประกอบเหล่านี้จากไคลเอนต์ไคลเอนต์ OrientDB จะโหลดองค์ประกอบด้วยการเรียกเครือข่ายอีกครั้งหนึ่งไปยังเซิร์ฟเวอร์สำหรับแต่ละระเบียนที่ไม่ได้รับ

พูลการเชื่อมต่อเครือข่าย

โดยค่าเริ่มต้นไคลเอ็นต์แต่ละตัวจะใช้การเชื่อมต่อเครือข่ายเพียงครั้งเดียวเพื่อพูดคุยกับเซิร์ฟเวอร์ เธรดหลายเธรดบนไคลเอ็นต์เดียวกันแชร์พูลการเชื่อมต่อเครือข่ายเดียวกัน

เมื่อคุณมีเธรดหลายเธรดอาจมีปัญหาคอขวดเนื่องจากต้องใช้เวลาส่วนใหญ่ในการรอการเชื่อมต่อเครือข่ายฟรี นี่คือเหตุผลว่าทำไมการกำหนดค่าพูลการเชื่อมต่อเครือข่ายจึงมีความสำคัญ

การกำหนดค่านั้นง่ายมากเพียงแค่ 2 พารามิเตอร์ -

  • minPool- เป็นขนาดเริ่มต้นของพูลการเชื่อมต่อ ค่าดีฟอลต์ถูกกำหนดค่าเป็นพารามิเตอร์ส่วนกลาง "client.channel.minPool"

  • maxPool- เป็นขนาดสูงสุดที่พูลการเชื่อมต่อสามารถเข้าถึงได้ ค่าดีฟอลต์ถูกกำหนดค่าเป็นพารามิเตอร์ส่วนกลาง "client.channel.maxPool"

หากการเชื่อมต่อพูลทั้งหมดไม่ว่างเธรดไคลเอ็นต์จะรอการเชื่อมต่อฟรีครั้งแรก

ตัวอย่างคำสั่งของการกำหนดค่าโดยใช้คุณสมบัติฐานข้อมูล

database = new ODatabaseDocumentTx("remote:localhost/demo"); 
database.setProperty("minPool", 2); 
database.setProperty("maxPool", 5);  

database.open("admin", "admin");

การปรับแต่งการกำหนดค่าแบบกระจาย

มีหลายวิธีในการปรับปรุงประสิทธิภาพของการกำหนดค่าแบบกระจาย

ใช้ธุรกรรม

แม้ว่าคุณจะอัปเดตกราฟคุณก็ควรทำธุรกรรมอยู่เสมอ OrientDB ช่วยให้คุณสามารถทำงานนอกสถานที่ได้ กรณีทั่วไปคือแบบสอบถามแบบอ่านอย่างเดียวหรือสามารถเรียกคืนการดำเนินการขนาดใหญ่และไม่เป็นปัจจุบันได้ในกรณีที่เกิดความล้มเหลว เมื่อคุณเรียกใช้การกำหนดค่าแบบกระจายการใช้ธุรกรรมจะช่วยลดเวลาในการตอบสนอง เนื่องจากการดำเนินการแบบกระจายจะเกิดขึ้นในเวลาคอมมิตเท่านั้น การกระจายการดำเนินการขนาดใหญ่หนึ่งครั้งมีประสิทธิภาพมากกว่าการถ่ายโอนการดำเนินการหลายรายการขนาดเล็กเนื่องจากเวลาแฝง

การจำลองแบบเทียบกับ Sharding

การกำหนดค่าแบบกระจาย 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 Records จะถูกเก็บไว้ในไฟล์คลัสเตอร์ในขณะที่ LOCAL ถูกแบ่งระหว่างคลัสเตอร์และส่วนข้อมูล

  • PLOCAL มีความทนทานมากกว่า LOCAL เนื่องจากมีโหมดผนวกเมื่อเขียน

  • PLOCAL มีการล็อกการโต้แย้งเล็กน้อยเกี่ยวกับการเขียนซึ่งหมายถึงการทำงานพร้อมกันมากขึ้น

  • PLOCAL ไม่ใช้เทคนิค Memory Mapping (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:"

ย้ายข้อมูลกราฟไปที่ RidBag

ในขณะที่ OrientDB 1.7 RidBag เป็นคอลเล็กชันเริ่มต้นที่จัดการความสัมพันธ์ระหว่างความสัมพันธ์ในกราฟ แม้ว่าฐานข้อมูลเก่าที่จัดการโดย MVRB-Tree จะเข้ากันได้อย่างสมบูรณ์ แต่คุณสามารถอัปเดตฐานข้อมูลของคุณเป็นรูปแบบล่าสุดได้

คุณสามารถอัปเกรดกราฟของคุณผ่านคอนโซลหรือใช้ไฟล์ ORidBagMigration ชั้นเรียน.

  • เชื่อมต่อกับฐานข้อมูล CONNECT plocal:databases/<graphdb-name>

  • เรียกใช้คำสั่งอัพเกรดกราฟ

เช่นเดียวกับ RDBMS 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 เพื่อเปลี่ยนสถานะจาก ACTIVE เป็น SUSPENDED ตัวอย่างเช่นหากคุณต้องการปิดการใช้งานผู้ใช้ทั้งหมดยกเว้นผู้ดูแลระบบให้ใช้คำสั่งต่อไปนี้ -

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 มีเว็บ UI เพื่อดำเนินการฐานข้อมูลผ่าน GUI บทนี้จะอธิบายถึงตัวเลือกต่างๆที่มีใน OrientDB

หน้าแรกของ Studio

Studio เป็นเว็บอินเตอร์เฟสสำหรับการดูแลระบบ OrientDB ที่มาพร้อมกับการแจกจ่าย OrientDB

ขั้นแรกคุณต้องเริ่มเซิร์ฟเวอร์ OrientDB โดยใช้คำสั่งต่อไปนี้

$ server.sh

หากคุณเรียกใช้ OrientDB ในเครื่องของคุณคุณสามารถเข้าถึงเว็บอินเตอร์เฟสผ่าน URL -

http://localhost:2480

หากคำสั่งดำเนินการสำเร็จผลลัพธ์ต่อไปนี้จะเป็นผลลัพธ์บนหน้าจอ

เชื่อมต่อกับฐานข้อมูลที่มีอยู่

ในการเข้าสู่ระบบให้เลือกฐานข้อมูลจากรายการฐานข้อมูลและใช้ผู้ใช้ฐานข้อมูลใด ๆ ตามค่าเริ่มต้น (ชื่อผู้ใช้ / รหัสผ่าน)reader/reader สามารถอ่านบันทึกจากฐานข้อมูล writer/writer สามารถอ่านสร้างอัปเดตและลบบันทึกในขณะที่ admin/admin มีสิทธิ์ทั้งหมด

วางฐานข้อมูลที่มีอยู่

เลือกฐานข้อมูลจากรายการฐานข้อมูลและคลิกไอคอนถังขยะ Studio จะเปิดป๊อปอัปการยืนยันซึ่งคุณต้องใส่ Server User และ Server Password

จากนั้นคลิกปุ่ม "วางฐานข้อมูล" คุณสามารถค้นหาข้อมูลรับรองเซิร์ฟเวอร์ได้ในไฟล์$ORIENTDB_HOME/config/orientdb-server-config.xml ไฟล์.

<users> 
   <user name = "root" password = "pwd" resources = "*" /> 
</users>

สร้างฐานข้อมูลใหม่

ในการสร้างฐานข้อมูลใหม่ให้คลิกปุ่ม "ฐานข้อมูลใหม่" จากหน้าแรก

จำเป็นต้องใช้ข้อมูลต่อไปนี้เพื่อสร้างฐานข้อมูลใหม่ -

  • ชื่อฐานข้อมูล
  • ประเภทฐานข้อมูล (เอกสาร / กราฟ)
  • ประเภทการจัดเก็บ (plocal / หน่วยความจำ)
  • ผู้ใช้เซิร์ฟเวอร์
  • รหัสผ่านเซิร์ฟเวอร์

คุณสามารถค้นหาข้อมูลรับรองเซิร์ฟเวอร์ได้ในไฟล์ $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 บันทึกการสืบค้นที่ดำเนินการไว้ใน Local Storage ของเบราว์เซอร์ ในการตั้งค่าการสืบค้นคุณสามารถกำหนดจำนวนคิวรีสตูดิโอที่จะเก็บไว้ในประวัติได้ คุณยังสามารถค้นหาคำค้นหาที่เรียกใช้ก่อนหน้านี้ลบการสืบค้นทั้งหมดจากประวัติหรือลบการสืบค้นเดียว

แก้ไข Vertex

หากต้องการแก้ไขจุดยอดของกราฟไปที่ส่วนกราฟ จากนั้นเรียกใช้แบบสอบถามต่อไปนี้

Select From Customer

เมื่อเรียกใช้แบบสอบถามสำเร็จต่อไปนี้เป็นภาพหน้าจอผลลัพธ์ เลือกจุดยอดเฉพาะในพื้นที่กราฟเพื่อแก้ไข

เลือกสัญลักษณ์แก้ไขบนจุดยอดเฉพาะ คุณจะได้รับหน้าจอต่อไปนี้ซึ่งมีตัวเลือกในการแก้ไขจุดยอด

Schema Manager

OrientDB สามารถทำงานในโหมดไม่ใช้สคีมาโหมดสคีมาหรือทั้งสองอย่างผสมกัน ที่นี่เราจะพูดถึงโหมดสคีมา คลิกที่ส่วน Schema ที่ด้านบนของ UI ของเว็บ คุณจะได้รับภาพหน้าจอต่อไปนี้

สร้างคลาสใหม่

หากต้องการสร้างคลาสใหม่เพียงคลิกที่ไฟล์ New Classปุ่ม. ภาพหน้าจอต่อไปนี้จะปรากฏขึ้น คุณจะต้องให้ข้อมูลต่อไปนี้ตามที่แสดงในภาพหน้าจอเพื่อสร้างคลาสใหม่

ดูดัชนีทั้งหมด

เมื่อคุณต้องการดูภาพรวมของดัชนีทั้งหมดที่สร้างขึ้นในฐานข้อมูลของคุณเพียงแค่คลิกปุ่ม he all indexes ใน Schema UI สิ่งนี้จะช่วยให้สามารถเข้าถึงข้อมูลบางอย่างเกี่ยวกับดัชนี (ชื่อประเภทคุณสมบัติ ฯลฯ ) ได้อย่างรวดเร็วและคุณสามารถวางหรือสร้างใหม่ได้จากที่นี่

แก้ไขคลาส

คลิกที่ชั้นเรียนใดก็ได้ในส่วนสคีมาคุณจะได้ภาพหน้าจอต่อไปนี้

ขณะแก้ไขคลาสคุณสามารถเพิ่มคุณสมบัติหรือเพิ่มดัชนีใหม่ได้

เพิ่มคุณสมบัติ

คลิกปุ่มคุณสมบัติใหม่เพื่อเพิ่มคุณสมบัติ คุณจะได้รับภาพหน้าจอต่อไปนี้

คุณต้องให้รายละเอียดดังต่อไปนี้ตามที่แสดงในภาพหน้าจอเพื่อเพิ่มคุณสมบัติ

เพิ่มดัชนี

คลิกปุ่มดัชนีใหม่ คุณจะได้รับภาพหน้าจอต่อไปนี้ คุณต้องระบุรายละเอียดต่อไปนี้ตามที่แสดงในภาพหน้าจอเพื่อเพิ่มดัชนี

ตัวแก้ไขกราฟ

คลิกส่วนกราฟ ไม่เพียง แต่คุณสามารถแสดงภาพข้อมูลของคุณในรูปแบบกราฟเท่านั้น แต่คุณยังสามารถโต้ตอบกับกราฟและแก้ไขได้อีกด้วย

ในการเติมข้อมูลในพื้นที่กราฟให้พิมพ์แบบสอบถามในตัวแก้ไขคิวรีหรือใช้ฟังก์ชัน Send To Graph จาก Browse UI

เพิ่มจุดยอด

ในการเพิ่ม Vertex ใหม่ในฐานข้อมูลกราฟของคุณและในพื้นที่ Graph Canvas คุณต้องกดปุ่ม Add Vertex. การดำเนินการนี้จะทำในสองขั้นตอน

ในขั้นแรกคุณต้องเลือกคลาสสำหรับ Vertex ใหม่จากนั้นคลิกถัดไป

ในขั้นตอนที่สองคุณต้องแทรกค่าฟิลด์ของจุดยอดใหม่ คุณยังสามารถเพิ่มฟิลด์ที่กำหนดเองได้เนื่องจาก OrientDB รองรับโหมดที่ไม่ใช้สคีมา ในการทำให้จุดยอดใหม่คงอยู่ให้คลิก 'บันทึกการเปลี่ยนแปลง' จากนั้นจุดยอดจะถูกบันทึกลงในฐานข้อมูลและเพิ่มลงในพื้นที่ผ้าใบ

ลบจุดยอด

เปิดเมนูวงกลมโดยคลิกที่จุดยอดที่คุณต้องการลบ เปิดเมนูย่อยโดยเลื่อนเมาส์ไปที่รายการเมนูเพิ่มเติม (... ) แล้วคลิกไอคอนถังขยะ

ลบจุดยอดออกจาก Canvas

เปิดเมนูวงกลมเปิดเมนูย่อยโดยเลื่อนเมาส์ไปที่รายการเมนูเพิ่มเติม (... ) แล้วคลิกไอคอนยางลบ

ตรวจสอบจุดยอด

หากคุณต้องการดูคุณสมบัติ Vertex อย่างรวดเร็วให้คลิกที่ไอคอนรูปตา

ความปลอดภัย

Studio 2.0 มีการจัดการความปลอดภัยใหม่ที่คุณสามารถจัดการผู้ใช้และบทบาทในรูปแบบกราฟิก

ผู้ใช้

คุณสามารถดำเนินการต่อไปนี้เพื่อจัดการผู้ใช้ฐานข้อมูล -

  • ค้นหาผู้ใช้
  • เพิ่มผู้ใช้
  • ลบผู้ใช้
  • แก้ไขผู้ใช้: สามารถแก้ไขบทบาทได้ในบรรทัดสำหรับชื่อสถานะและรหัสผ่านคลิกที่ไฟล์ Edit ปุ่ม

เพิ่มผู้ใช้

ในการเพิ่มผู้ใช้ใหม่ให้คลิกที่ Add User กรอกข้อมูลสำหรับผู้ใช้ใหม่ (ชื่อรหัสผ่านสถานะบทบาท) จากนั้นบันทึกเพื่อเพิ่มผู้ใช้ใหม่ในฐานข้อมูล

บทบาท

คุณสามารถดำเนินการต่อไปนี้เพื่อจัดการบทบาทฐานข้อมูล -

  • บทบาทการค้นหา
  • เพิ่มบทบาท
  • ลบบทบาท
  • แก้ไขบทบาท

เพิ่มบทบาท

ในการเพิ่มผู้ใช้ใหม่ให้คลิกที่ Add Role กรอกข้อมูลสำหรับบทบาทใหม่ (ชื่อบทบาทพาเรนต์โหมด) จากนั้นบันทึกเพื่อเพิ่มบทบาทใหม่ในฐานข้อมูล

เพิ่มกฎให้กับบทบาท

หากต้องการเพิ่มกฎความปลอดภัยใหม่สำหรับบทบาทที่เลือกให้คลิกปุ่ม Add Ruleปุ่ม. สิ่งนี้จะถามคุณถึงสตริงของทรัพยากรที่คุณต้องการรักษาความปลอดภัย จากนั้นคุณสามารถกำหนดค่าสิทธิ์ CRUD บนทรัพยากรที่สร้างขึ้นใหม่

เช่นเดียวกับ RDBMS OrientDB รองรับ JDBC สำหรับสิ่งนี้อันดับแรกเราต้องกำหนดค่าสภาพแวดล้อมสำหรับการเขียนโปรแกรม JDBC ต่อไปนี้เป็นขั้นตอนในการสร้างการเชื่อมต่อระหว่างแอปพลิเคชันและฐานข้อมูลของคุณ

ขั้นแรกเราต้องดาวน์โหลด JDBC Driver ไปที่ลิงค์ต่อไปนี้https://code.google.com/archive/p/orient/downloads เพื่อดาวน์โหลด OrientDB-JDBC

ต่อไปนี้เป็นห้าขั้นตอนพื้นฐานเพื่อให้บรรลุการเชื่อมต่อ OrientDB-jdbc

  • โหลดไดรเวอร์ JDBC
  • สร้างการเชื่อมต่อ
  • สร้างคำสั่ง
  • ดำเนินการคำสั่ง
  • ปิดการเชื่อมต่อ

ตัวอย่าง

ลองใช้ตัวอย่างต่อไปนี้เพื่อทำความเข้าใจการเชื่อมต่อ OrientDB-JDBC ให้เราพิจารณาว่าเรามีตารางพนักงานซึ่งมีฟิลด์และประเภทต่อไปนี้

ซีเนียร์ ชื่อฟิลด์ ประเภท
1 Id จำนวนเต็ม
2 ชื่อ สตริง
3 เงินเดือน จำนวนเต็ม
4 วันที่เข้าร่วม วันที่

คุณสามารถสร้าง Schema (ตาราง) โดยดำเนินการคำสั่งต่อไปนี้

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 hub ซึ่งช่วยในการเชื่อมต่อ OrientDB กับ Python ใช้งานได้กับ OrientDB เวอร์ชัน 1.7 และใหม่กว่า

คำสั่งต่อไปนี้ใช้เพื่อติดตั้ง PyOrient

pip install pyorient

คุณสามารถใช้ไฟล์สคริปต์ชื่อ demo.py เพื่อทำงานต่อไปนี้ -

  • สร้างอินสแตนซ์ไคลเอนต์หมายถึงสร้างการเชื่อมต่อ

  • สร้าง DB ชื่อ DB_Demo.

  • เปิด DB ชื่อ 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