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(): ฟังก์ชันนี้มีสองความหมาย
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