OrientDB - Panduan Cepat
OrientDB adalah Sistem Manajemen Database NoSQL Open Source. NoSQL Databasemenyediakan mekanisme untuk menyimpan dan mengambil data NO-relation atau NON-relational yang mengacu pada data selain data tabular seperti data dokumen atau data grafik. Basis data NoSQL semakin banyak digunakan dalam Big Data dan aplikasi web waktu nyata. Sistem NoSQL juga terkadang disebut "Bukan Hanya SQL" untuk menekankan bahwa mereka dapat mendukung bahasa kueri seperti SQL.
OrientDB juga termasuk dalam keluarga NoSQL. OrientDB adalah Database Grafik Terdistribusi generasi kedua dengan fleksibilitas Dokumen dalam satu produk dengan lisensi sumber terbuka Apache 2. Ada beberapa database NoSQL di pasaran sebelum OrientDB, salah satunya adalah MongoDB.
MongoDB vs OrientDB
MongoDB dan OrientDB berisi banyak fitur umum tetapi mesinnya berbeda secara fundamental. MongoDB adalah database Dokumen murni dan OrientDB adalah Dokumen hybrid dengan mesin grafik.
fitur | MongoDB | OrientDB |
---|---|---|
Relationships | Menggunakan RDBMS JOINS untuk membuat hubungan antar entitas. Ini memiliki biaya runtime yang tinggi dan tidak berskala ketika skala database meningkat. | Menyematkan dan menghubungkan dokumen seperti database relasional. Ini menggunakan tautan langsung dan super cepat yang diambil dari dunia basis data grafik. |
Fetch Plan | Operasi BERGABUNG yang mahal. | Mudah mengembalikan grafik lengkap dengan dokumen yang saling berhubungan. |
Transactions | Tidak mendukung transaksi ACID, tetapi mendukung operasi atom. | Mendukung transaksi ACID serta operasi atom. |
Query language | Memiliki bahasanya sendiri berdasarkan JSON. | Bahasa kueri dibangun di atas SQL. |
Indexes | Menggunakan algoritma B-Tree untuk semua indeks. | Mendukung tiga algoritme pengindeksan berbeda sehingga pengguna dapat mencapai kinerja terbaik. |
Storage engine | Menggunakan teknik pemetaan memori. | Menggunakan nama mesin penyimpanan LOCAL dan PLOCAL. |
OrientDB adalah DBMS NoSQL open source Multi-Model pertama yang menyatukan kekuatan grafik dan fleksibilitas dokumen ke dalam database operasional berkinerja tinggi yang dapat diskalakan.
File instalasi OrientDB tersedia dalam dua edisi -
Community Edition - Edisi komunitas OrientDB dirilis oleh Apache di bawah lisensi 0.2 sebagai open source
Enterprise Edition- Edisi perusahaan OrientDB dirilis sebagai perangkat lunak berpemilik, yang dibangun di atas edisi komunitas. Ini berfungsi sebagai perpanjangan dari edisi komunitas.
Bab ini menjelaskan prosedur penginstalan edisi komunitas OrientDB karena ini open source.
Prasyarat
Edisi komunitas dan Enterprise dapat berjalan di sistem Operasi apa pun yang mengimplementasikan Java Virtual Machine (JVM). OrientDB membutuhkan Java dengan versi 1.7 atau yang lebih baru.
Gunakan langkah-langkah berikut untuk mengunduh dan menginstal OrientDB ke sistem Anda.
Langkah 1 - Unduh File Pengaturan Biner OrientDB
OrientDB dilengkapi dengan file setup built-in untuk menginstal database di sistem Anda. Ini menyediakan paket biner pra-kompilasi yang berbeda (paket bertar atau zip) untuk sistem operasi yang berbeda. Anda dapat mengunduh file OrientDB dari tautan Unduh OrientDB .
Tangkapan layar berikut menunjukkan halaman unduhan OrientDB. Anda dapat mengunduh file zip atau tarred dengan mengklik ikon sistem operasi yang sesuai.
Saat mengunduh, Anda akan mendapatkan paket biner di file Downloads map.
Langkah 2 - Ekstrak dan Instal OrientDB
Berikut adalah prosedur untuk mengekstrak dan menginstal OrientDB untuk sistem operasi yang berbeda.
Di Linux
Setelah mengunduh Anda akan mendapatkan orientdb-community-2.1.9.tar.gz file di Downloadsmap. Anda dapat menggunakan perintah berikut untuk mengekstrak file tarred.
$ tar –zxvf orientdb-community-2.1.9.tar.gz
Anda dapat menggunakan perintah berikut untuk memindahkan semua file pustaka OrientDB orientdbcommunity-2.1.9 to /opt/orientdb/direktori. Di sini kami menggunakan perintah super user (sudo) oleh karena itu Anda harus memberikan kata sandi pengguna super untuk menjalankan perintah berikut.
$ sudo mv orientdb-community-2.1.9 /opt/orientdb
Anda dapat menggunakan perintah berikut untuk mendaftarkan file orientdb perintah dan server Orient.
$ export ORIENTDB_HoME = /opt/orientdb $ export PATH = $PATH:$ORIENTDB_HOME/bin
Di Windows
Setelah mengunduh Anda akan mendapatkan orientdb-community-2.1.9.zip file di Downloadsmap. Ekstrak file zip menggunakan ekstraktor zip.
Pindahkan folder yang telah diekstrak ke dalam C:\ direktori.
Buat dua variabel lingkungan ORIENTDB_HOME dan variabel PATH dengan nilai yang diberikan berikut ini.
ORIENT_HOME = C:\orientdb-community-2.1.9
PATH = C:\orientdb-community-2.1.9\bin
Langkah 3 - Konfigurasi Server OrientDB sebagai Layanan
Dengan mengikuti langkah-langkah di atas, Anda dapat menggunakan OrientDB versi Desktop. Anda dapat memulai server database OrientDB sebagai layanan dengan menggunakan langkah-langkah berikut. Prosedurnya berbeda, bergantung pada sistem operasi Anda.
Di Linux
OrientDB menyediakan file skrip bernama orientdb.shuntuk menjalankan database sebagai daemon. Anda dapat menemukannya di direktori bin / direktori instalasi OrientDB Anda yaitu $ ORIENTDB_HOME / bin / orientdb.sh.
Sebelum menjalankan file script, Anda harus mengedit orientdb.shfile untuk mendefinisikan dua variabel. Satu adalahORIENTDB_DIR yang mendefinisikan jalur ke direktori instalasi (/opt/orientdb) dan yang kedua adalah ORIENTDB_USER yang mendefinisikan nama pengguna yang Anda inginkan untuk menjalankan OrientDB sebagai berikut.
ORIENTDB_DIR = "/opt/orientdb"
ORIENTDB_USER = "<username you want to run OrientDB>"
Gunakan perintah berikut untuk menyalin orientdb.sh mengajukan ke /etc/init.d/direktori untuk menginisialisasi dan menjalankan skrip. Di sini kami menggunakan perintah super user (sudo) oleh karena itu Anda harus memberikan kata sandi pengguna super untuk menjalankan perintah berikut.
$ sudo cp $ORIENTDB_HOME/bin/orientdb.sh /etc/init.d/orientdb
Gunakan perintah berikut untuk menyalin file console.sh dari direktori penginstalan OrientDB $ORIENTDB_HOME/bin ke direktori sistem bin /usr/bin untuk mengakses konsol Orient DB.
$ sudo cp $ ORIENTDB_HOME/bin/console.sh /usr/bin/orientdb
Gunakan perintah berikut untuk memulai server database ORIENTDB sebagai layanan. Di sini Anda harus memberikan kata sandi pengguna masing-masing yang Anda sebutkan di file orientdb.sh untuk memulai server.
$ service orientdb start
Gunakan perintah berikut untuk mengetahui di PID mana daemon server OrientDB sedang berjalan.
$ service orientdb status
Gunakan perintah berikut untuk menghentikan daemon server OrientDB. Di sini Anda harus memberikan kata sandi pengguna masing-masing, yang Anda sebutkan di file orientdb.sh untuk menghentikan server.
$ service orientdb stop
Di Windows
OrientDB adalah aplikasi server oleh karena itu ia harus melakukan beberapa tugas sebelum mulai mematikan proses mesin virtual Java. Jika Anda ingin mematikan server OrientDB secara manual maka Anda harus menjalankannyashutdown.batmengajukan. Tetapi contoh server tidak berhenti dengan benar, ketika sistem mati tiba-tiba tanpa menjalankan skrip di atas. Program yang dikendalikan oleh sistem operasi dengan sekumpulan sinyal tertentu dipanggilservices di Windows.
Kami harus menggunakan Apache Common Daemonyang memungkinkan pengguna Windows menggabungkan aplikasi Java sebagai layanan Windows. Berikut adalah prosedur untuk mengunduh dan mendaftarkan daemon umum Apache.
Klik tautan berikut untuk Apache Common Daemons untuk windows .
Klik common-daemon-1.0.15-bin-windows untuk mengunduh.
Buka zip common-daemon-1.0.15-bin-windowsdirektori. Setelah mengekstraksi Anda akan menemukanprunsrv.exe dan prunmgr.exefile di dalam direktori. Dalam itu -
prunsrv.exe file adalah aplikasi layanan untuk menjalankan aplikasi sebagai layanan.
prunmgr.exe file adalah aplikasi yang digunakan untuk memantau dan mengkonfigurasi layanan windows.
Buka folder instalasi OrientDB → buat direktori baru dan beri nama service.
Salin prunsrv.exe dan prunmgr .exe tempel ke direktori layanan.
Untuk mengkonfigurasi OrientDB sebagai layanan Windows, Anda harus menjalankan skrip pendek yang menggunakan prusrv.exe sebagai layanan Windows.
Sebelum menentukan Layanan Windows, Anda harus mengganti nama prunsrv dan prunmgr sesuai dengan nama layanan. Misalnya, OrientDBGraph dan OrientDBGraphw. Di sini OrientDBGraph adalah nama layanan.
Salin skrip berikut ke dalam file bernama installService.bat dan menempatkannya di %ORIENTDB_HOME%\service\ direktori.
:: 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
Skrip membutuhkan dua parameter -
Lokasi jvm.dll, misalnya C: \ ProgramFiles \ java \ jdk1.8.0_66 \ jre \ bin \ server \ jvm.dll
Lokasi instalasi OrientDB misalnya C: \ orientdb-community-2.1.9
Layanan ini diinstal ketika Anda menjalankan file OrientDBGraph.exe (Original prunsrv) dan mengklik dua kali di atasnya.
Gunakan perintah berikut untuk menginstal layanan ke 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
Buka layanan Task Manager, Anda akan menemukan screenshot berikut dengan nama layanan terdaftar di dalamnya.
Langkah 4 - Memverifikasi Instalasi OrientDB
Langkah ini memverifikasi penginstalan server database OrientDB menggunakan langkah-langkah berikut.
- Jalankan server.
- Jalankan konsol.
- Jalankan studio.
Ini unik menurut sistem operasi.
Di Linux
Ikuti prosedur yang diberikan untuk memverifikasi instalasi OrientDB di Linux.
Running the server - Anda dapat menggunakan perintah berikut untuk memulai server.
$ cd $ORIENTDB_HOME/bin $ ./server.sh
Atau Anda dapat menggunakan perintah berikut untuk memulai server OrientDB sebagai daemon UNIX.
$ service orientdb start
Jika berhasil diinstal, Anda akan menerima output berikut.
.
.` `
, `:.
`,` ,:`
.,. :,,
.,, ,,,
. .,.::::: ```` ::::::::: :::::::::
,` .::,,,,::.,,,,,,`;; .: :::::::::: ::: :::
`,. ::,,,,,,,:.,,.` ` .: ::: ::: ::: :::
,,:,:,,,,,,,,::. ` ` `` .: ::: ::: ::: :::
,,:.,,,,,,,,,: `::, ,, ::,::` : :,::` :::: ::: ::: ::: :::
,:,,,,,,,,,,::,: ,, :. : :: : .: ::: ::: :::::::
:,,,,,,,,,,:,:: ,, : : : : .: ::: ::: :::::::::
` :,,,,,,,,,,:,::, ,, .:::::::: : : .: ::: ::: ::: :::
`,...,,:,,,,,,,,,: .:,. ,, ,, : : .: ::: ::: ::: :::
.,,,,::,,,,,,,: `: , ,, : ` : : .: ::: ::: ::: :::
...,::,,,,::.. `: .,, :, : : : .: ::::::::::: ::: :::
,::::,,,. `: ,, ::::: : : .: ::::::::: ::::::::::
,,:` `,,.
,,, .,`
,,. `, 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 - Anda dapat menggunakan perintah berikut untuk menjalankan OrientDB di bawah konsol.
$ orientdb
Jika berhasil diinstal, Anda akan menerima output berikut.
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 - Setelah memulai server Anda dapat menggunakan URL berikut (http://localhost:2480/) di browser Anda. Anda akan mendapatkan tangkapan layar berikut.
Di Windows
Ikuti prosedur yang diberikan untuk memverifikasi instalasi OrientDB di Windows.
Running the server - Anda dapat menggunakan perintah berikut untuk memulai server.
> cd %ORIENTDB_HOME%\bin
> ./server.bat
Jika berhasil diinstal, Anda akan menerima output berikut.
.
.` `
, `:.
`,` ,:`
.,. :,,
.,, ,,,
. .,.::::: ```` ::::::::: :::::::::
,` .::,,,,::.,,,,,,`;; .: :::::::::: ::: :::
`,. ::,,,,,,,:.,,.` ` .: ::: ::: ::: :::
,,:,:,,,,,,,,::. ` ` `` .: ::: ::: ::: :::
,,:.,,,,,,,,,: `::, ,, ::,::` : :,::` :::: ::: ::: ::: :::
,:,,,,,,,,,,::,: ,, :. : :: : .: ::: ::: :::::::
:,,,,,,,,,,:,:: ,, : : : : .: ::: ::: :::::::::
` :,,,,,,,,,,:,::, ,, .:::::::: : : .: ::: ::: ::: :::
`,...,,:,,,,,,,,,: .:,. ,, ,, : : .: ::: ::: ::: :::
.,,,,::,,,,,,,: `: , ,, : ` : : .: ::: ::: ::: :::
...,::,,,,::.. `: .,, :, : : : .: ::::::::::: ::: :::
,::::,,,. `: ,, ::::: : : .: ::::::::: ::::::::::
,,:` `,,.
,,, .,`
,,. `, 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 - Anda dapat menggunakan perintah berikut untuk menjalankan OrientDB di bawah konsol.
> %ORIENTDB_HOME%\bin\console.bat
Jika berhasil diinstal, Anda akan menerima output berikut.
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 - Setelah memulai server Anda dapat menggunakan URL berikut (http://localhost:2480/) di browser Anda. Anda akan mendapatkan tangkapan layar berikut.
Fitur utama dari OrientDB adalah untuk mendukung objek multi-model, yaitu mendukung model yang berbeda seperti Dokumen, Grafik, Kunci / Nilai dan Objek Nyata. Ini berisi API terpisah untuk mendukung keempat model ini.
Model Dokumen
Model Dokumen terminologi milik database NoSQL. Artinya data disimpan dalam Dokumen dan kelompok Dokumen disebut sebagaiCollection. Secara teknis, dokumen berarti sekumpulan pasangan kunci / nilai atau disebut juga field atau properti.
OrientDB menggunakan konsep seperti kelas, cluster, dan link untuk menyimpan, mengelompokkan, dan menganalisis dokumen.
Tabel berikut menggambarkan perbandingan antara model relasional, model dokumen, dan model dokumen OrientDB -
Model Relasional | Model Dokumen | Model Dokumen OrientDB |
---|---|---|
Meja | Koleksi | Kelas atau Cluster |
Baris | Dokumen | Dokumen |
Kolom | Pasangan kunci / nilai | Bidang dokumen |
Hubungan | Tidak tersedia | Tautan |
Model Grafik
Struktur data grafik merupakan model data yang dapat menyimpan data dalam bentuk Vertices (Nodes) yang saling berhubungan dengan Edges (Arcs). Ide database grafik OrientDB berasal dari grafik properti. Titik dan tepi adalah artefak utama dari model Grafik. Mereka berisi properti, yang dapat membuatnya tampak mirip dengan dokumen.
Tabel berikut menunjukkan perbandingan antara model grafik, model data relasional, dan model grafik OrientDB.
Model Relasional | Model Grafik | Model Grafik OrientDB |
---|---|---|
Meja | Vertex dan Edge Class | Kelas yang memanjang "V" (untuk Vertex) dan "E" (untuk Tepi) |
Baris | Puncak | Puncak |
Kolom | Vertex dan Edge properti | Vertex dan Edge properti |
Hubungan | Tepi | Tepi |
Model Kunci / Nilai
Model Key / Value berarti bahwa data dapat disimpan dalam bentuk key / value pair dimana nilainya dapat berupa tipe sederhana dan kompleks. Ini dapat mendukung dokumen dan elemen grafik sebagai nilai.
Tabel berikut menggambarkan perbandingan antara model relasional, model kunci / nilai, dan model kunci / nilai OrientDB.
Model Relasional | Model Kunci / Nilai | Model Nilai / Kunci OrientDB |
---|---|---|
Meja | Ember | Kelas atau Cluster |
Baris | Pasangan Kunci / Nilai | Dokumen |
Kolom | Tidak tersedia | Bidang dokumen atau properti Vertex / Edge |
Hubungan | Tidak tersedia | Tautan |
Model Objek
Model ini telah diwarisi oleh pemrograman dan dukungan Berorientasi Objek Inheritance antar tipe (sub-tipe memperluas tipe-super), Polymorphism ketika Anda merujuk ke kelas dasar dan Direct binding dari / ke Objek yang digunakan dalam bahasa pemrograman.
Tabel berikut menggambarkan perbandingan antara model relasional, model Objek, dan model Objek OrientDB.
Model Relasional | Model Objek | Model Objek OrientDB |
---|---|---|
Meja | Kelas | Kelas atau Cluster |
Baris | Obyek | Dokumen atau Vertex |
Kolom | Properti objek | Bidang dokumen atau properti Vertex / Edge |
Hubungan | Pointer | Tautan |
Sebelum melanjutkan secara detail, ada baiknya mengetahui terminologi dasar yang terkait dengan OrientDB. Berikut adalah beberapa terminologi penting.
Merekam
Unit terkecil yang dapat Anda muat dan simpan dalam database. Rekaman dapat disimpan dalam empat jenis.
- Document
- Rekam Bytes
- Vertex
- Edge
Rekam ID
Ketika OrientDB menghasilkan record, server database secara otomatis menetapkan pengenal unit ke record, yang disebut RecordID (RID). RID terlihat seperti # <cluster>: <position>. <cluster> berarti nomor identifikasi cluster dan <position> berarti posisi absolut dari record di cluster.
Dokumen
Dokumen adalah jenis rekaman paling fleksibel yang tersedia di OrientDB. Dokumen diketik dengan lembut dan ditentukan oleh kelas skema dengan batasan yang ditentukan, tetapi Anda juga dapat memasukkan dokumen tanpa skema apa pun, misalnya, dokumen tersebut mendukung mode tanpa skema juga.
Dokumen dapat dengan mudah ditangani dengan ekspor dan impor dalam format JSON. Misalnya, lihat dokumen contoh JSON berikut. Ini mendefinisikan detail dokumen.
{
"id" : "1201",
"name" : "Jay",
"job" : "Developer",
"creations" : [
{
"name" : "Amiga",
"company" : "Commodore Inc."
},
{
"name" : "Amiga 500",
"company" : "Commodore Inc."
}
]
}
RecordBytes
Jenis Rekaman sama dengan jenis BLOB di RDBMS. OrientDB dapat memuat dan menyimpan tipe Record dokumen bersama dengan data biner.
Puncak
Database OrientDB tidak hanya database Dokumen tetapi juga database Grafik. Konsep baru seperti Vertex dan Edge digunakan untuk menyimpan data dalam bentuk grafik. Dalam database grafik, unit data yang paling dasar adalah node, yang dalam OrientDB disebut vertex. Vertex menyimpan informasi untuk database.
Tepi
Ada tipe record terpisah yang disebut Edge yang menghubungkan satu simpul ke simpul lainnya. Tepi bersifat dua arah dan hanya dapat menghubungkan dua simpul. Ada dua jenis tepi di OrientDB, satu biasa dan satu lagi ringan.
Kelas
Kelas adalah jenis model data dan konsep yang diambil dari paradigma pemrograman berorientasi objek. Berdasarkan model database dokumen tradisional, data disimpan dalam bentuk kumpulan, sedangkan pada model database relasional data disimpan dalam tabel. OrientDB mengikuti API Dokumen bersama dengan paradigma OPPS. Sebagai sebuah konsep, kelas di OrientDB memiliki hubungan terdekat dengan tabel dalam database relasional, tetapi (tidak seperti tabel) kelas dapat berupa tanpa skema, penuh skema, atau campuran. Kelas dapat mewarisi dari kelas lain, membuat pohon kelas. Setiap kelas memiliki cluster atau clusternya sendiri, (dibuat secara default, jika tidak ada yang ditentukan).
Gugus
Cluster merupakan konsep penting yang digunakan untuk menyimpan record, dokumen, atau simpul. Dengan kata sederhana, Cluster adalah tempat di mana sekelompok record disimpan. Secara default, OrientDB akan membuat satu cluster per kelas. Semua catatan kelas disimpan di cluster yang sama yang memiliki nama yang sama dengan kelas tersebut. Anda dapat membuat hingga 32.767 (2 ^ 15-1) kluster dalam database.
Kelas CREATE adalah perintah yang digunakan untuk membuat cluster dengan nama tertentu. Setelah cluster dibuat, Anda dapat menggunakan cluster untuk menyimpan record dengan menentukan nama selama pembuatan model data apa pun.
Hubungan
OrientDB mendukung dua jenis hubungan: direferensikan dan disematkan. Referenced relationships artinya ia menyimpan tautan langsung ke objek target hubungan. Embedded relationshipsartinya itu menyimpan hubungan dalam rekaman yang menyematkannya. Hubungan ini lebih kuat dari hubungan referensi.
Database
Basis data adalah antarmuka untuk mengakses penyimpanan sebenarnya. TI memahami konsep tingkat tinggi seperti kueri, skema, metadata, indeks, dan sebagainya. OrientDB juga menyediakan beberapa tipe database. Untuk informasi selengkapnya tentang tipe ini, lihat tipe database.
OrientDB mendukung beberapa tipe data secara native. Berikut tabel lengkapnya.
No Sr | Tipe | Deskripsi |
---|---|---|
1 | Boolean | Menangani hanya nilai True atau False. Java types: java.lang.Boolean Min: 0 Max: 1 |
2 | Bilangan bulat | Bilangan bulat bertanda tangan 32-bit. Java types: java.lang.Interger Min: -2.147.483.648 Max: +2.147.483.647 |
3 | Pendek | Bilangan bulat kecil bertanda tangan 16-bit. Java types: java.lang.short Min: -32.768 Max: 32.767 |
4 | Panjang | Bilangan bulat besar bertanda tangan 64-bit. Java types: java.lang.Long Min: -2 63 Max: +2 63 -1 |
5 | Mengapung | Angka desimal. Java types: java.lang.Float : 2 -149 Max: (2-2 -23 ) * 2, 127 |
6 | Dua kali lipat | Angka desimal dengan presisi tinggi. Java types: Java.lang.Double. Min: 2 -1074 Max: (2-2 -52 ) * 2 1023 |
7 | Tanggal Waktu | Tanggal berapa pun dengan presisi hingga milidetik. Java types: java.util.Date |
8 | Tali | String apa pun sebagai urutan alfanumerik karakter. Java types: java.lang.String |
9 | Biner | Dapat berisi nilai apa pun sebagai array byte. Java types: byte [] Min: 0 Max: 2.147.483.647 |
10 | Tersemat | Catatan itu ada di dalam pemilik. Catatan yang ada tidak memiliki RecordId. Java types: ORecord |
11 | Daftar tersemat | Catatan tersebut ada di dalam pemilik. Record yang ada tidak memiliki RecordIds dan hanya bisa dijangkau dengan menavigasi record pemilik. Java types: Daftar <objects> Min: 0 Max: 41.000.000 item |
12 | Set tersemat | Catatan tersebut ada di dalam pemilik. Record yang ada tidak memiliki RecordId dan hanya bisa dijangkau dengan menavigasi record pemilik. Java types: setel <objects> Min: 0 Max: 41.000.000 item |
13 | Peta tersemat | Record berada di dalam pemilik sebagai nilai dari entri, sedangkan kuncinya hanya bisa berupa string. Record yang ada tidak memiliki RecordId dan hanya bisa dijangkau dengan menavigasi Record pemilik. Java types: Peta <String, ORecord> Min: 0 Max: 41.000.000 item |
14 | Tautan | Tautkan ke Record lain. Itu adalah hubungan satu-ke-satu yang umum Java Types: ORID, <? meluas ORecord> Min: 1 Max: 32767: 2 ^ 63-1 |
15 | Daftar tautan | Tautan ke Rekaman lain. Ini adalah hubungan satu ke banyak yang umum di mana hanya RecordIds yang disimpan. Java types: Daftar <? Memperluas ORecord> Min: 0 Max: 41.000.000 item |
16 | Kumpulan tautan | Tautan ke rekaman lain. Ini adalah hubungan satu-ke-banyak yang umum. Java types: Setel <? meluas ORecord> Min: 0 Max: 41.000.000 item |
17 | Tautkan peta | Tautan ke rekaman lain sebagai nilai entri, sedangkan kunci hanya dapat berupa string. Ini adalah hubungan satu-ke-banyak yang umum. Hanya RecordIds yang disimpan. Java types: Peta <String,? extends Record> Min: 0 Max: 41.000.000 item |
18 | Byte | Bita tunggal. Berguna untuk menyimpan bilangan bulat kecil bertanda tangan 8-bit. Java types: java.lang.Byte Min: -128 Max: +127 |
19 | Sementara | Nilai apapun tidak disimpan di database. |
20 | Tanggal | Tanggal apapun seperti tahun, bulan dan hari. Java Types: java.util.Date |
21 | Adat | Digunakan untuk menyimpan tipe kustom yang menyediakan metode Marshall dan Unmarshall. Java types: OSerializableStream Min: 0 Max: x |
22 | Desimal | Angka desimal tanpa pembulatan. Java types: java.math.BigDecimal |
23 | LinkBag | Daftar RecordIds sebagai RidBag spesifik. Java types: ORidBag |
24 | Apa saja | Tidak menentukan tipe, digunakan untuk menentukan koleksi tipe campuran, dan null. |
Di bab-bab berikut, cara menggunakan tipe data ini di OrientDB dibahas.
Konsol OrientDB adalah Aplikasi Java yang dibuat untuk bekerja terhadap database OrientDB dan instance Server. Ada beberapa mode konsol yang didukung OrientDB.
Mode Interaktif
Ini adalah mode default. Luncurkan saja konsol dengan menjalankan skrip berikutbin/console.sh (atau bin/console.batdalam sistem MS Windows). Pastikan Anda memiliki izin eksekusi di atasnya.
OrientDB console v.1.6.6 www.orientechnologies.com
Type 'help' to display all the commands supported.
orientdb>
Setelah selesai, konsol siap menerima perintah.
Mode Batch
Untuk menjalankan perintah dalam mode batch, jalankan perintah berikut bin/console.sh (atau bin/console.bat dalam sistem MS Windows) skrip yang meneruskan semua perintah yang dipisahkan dengan titik koma ";".
orientdb> console.bat "connect remote:localhost/demo;select * from profile"
Atau panggil skrip konsol yang meneruskan nama file dalam format teks yang berisi daftar perintah yang akan dijalankan. Perintah harus dipisahkan dengan titik koma ";".
Contoh
Command.txt berisi daftar perintah yang ingin Anda jalankan melalui konsol OrientDB. Perintah berikut menerima kumpulan perintah dari file command.txt.
orientdb> console.bat commands.txt
Dalam mode batch, Anda dapat mengabaikan error agar skrip melanjutkan eksekusi dengan menyetel variabel "ignoreErrors" ke true.
orientdb> set ignoreErrors true
Aktifkan Echo
Saat Anda menjalankan perintah konsol di pipeline, Anda perlu menampilkannya. Aktifkan "echo" perintah dengan menyetelnya sebagai properti di awal. Berikut ini adalah sintaks untuk mengaktifkan properti gema di konsol OrientDB.
orientdb> set echo true
Referensi SQL dari database OrientDB menyediakan beberapa perintah untuk membuat, mengubah, dan menghapus database.
Pernyataan berikut adalah sintaks dasar dari perintah Buat Database.
CREATE DATABASE <database-url> [<user> <password> <storage-type> [<db-type>]]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<database-url>- Mendefinisikan URL dari database. URL berisi dua bagian, satu adalah <mode> dan yang kedua adalah <path>.
<mode> - Mendefinisikan mode, yaitu mode lokal atau mode jarak jauh.
<path> - Mendefinisikan jalur ke database.
<user> - Mendefinisikan pengguna yang ingin Anda hubungkan ke database.
<password> - Mendefinisikan kata sandi untuk menghubungkan ke database.
<storage-type>- Mendefinisikan jenis penyimpanan. Anda dapat memilih antara PLOCAL dan MEMORY.
Contoh
Anda dapat menggunakan perintah berikut untuk membuat database lokal bernama demo.
Orientdb> CREATE DATABASE PLOCAL:/opt/orientdb/databses/demo
Jika database berhasil dibuat, Anda akan mendapatkan output sebagai berikut.
Database created successfully.
Current database is: plocal: /opt/orientdb/databases/demo
orientdb {db = demo}>
Database adalah salah satu model data penting dengan atribut berbeda yang dapat Anda modifikasi sesuai kebutuhan Anda.
Pernyataan berikut adalah sintaks dasar dari perintah Alter Database.
ALTER DATABASE <attribute-name> <attribute-value>
Dimana <attribute-name> mendefinisikan atribut yang ingin Anda ubah dan <attributevalue> mendefinisikan nilai yang ingin Anda setel untuk atribut itu.
Tabel berikut menjelaskan daftar atribut yang didukung untuk mengubah database.
Sr.No. | Nama Atribut | Deskripsi |
---|---|---|
1 | STATUS | Mendefinisikan status database antara atribut yang berbeda. |
2 | PENGIMPORAN | Mengatur status pengimporan. |
3 | DEFAULTCLUSTERID | Setel cluster default menggunakan ID. Secara default adalah 2. |
4 | FORMAT TANGGAL | Menetapkan format tanggal tertentu sebagai default. Secara default adalah "yyyy-MM-dd". |
5 | DATETIMEFORMAT | Menetapkan format waktu tanggal tertentu sebagai default. Secara default adalah "tttt-BB-hh JJ: mm: dd". |
6 | ZONA WAKTU | Menetapkan zona waktu tertentu. Secara default itu adalah zona waktu default Java Virtual Machine (JVM). |
7 | LOCALECOUNTRY | Setel negara lokal default. Secara default, ini adalah negara lokal default JVM. Misalnya: "GB". |
8 | LOCALELANGUAGE | Setel bahasa lokal default. Secara default ini adalah bahasa lokal default JVM. Misalnya: "en". |
9 | CHARSET | Menetapkan jenis himpunan karakter. Secara default itu adalah charset default JVM. Misalnya: "utf8". |
10 | PILIHAN KLUSTER | Menetapkan strategi default yang digunakan untuk memilih cluster. Strategi ini dibuat bersama dengan pembuatan kelas. Strategi yang didukung adalah default, roundrobin, dan balanced. |
11 | MINIMUMCLUSTER | Menyetel jumlah minimum cluster untuk dibuat secara otomatis saat kelas baru dibuat. Secara default adalah 1. |
12 | ADAT | Setel properti khusus. |
13 | VALIDASI | Menonaktifkan atau mengaktifkan validasi untuk seluruh database. |
Contoh
Dari versi OrientDB-2.2, pengurai SQL baru ditambahkan yang tidak memungkinkan sintaks reguler dalam beberapa kasus. Oleh karena itu, kami harus menonaktifkan parser SQL baru (StrictSQL) dalam beberapa kasus. Anda dapat menggunakan perintah Alter database berikut untuk menonaktifkan parser StrictSQL.
orientdb> ALTER DATABASE custom strictSQL = false
Jika perintah berhasil dijalankan, Anda akan mendapatkan output berikut.
Database updated successfully
Seperti RDBMS, OrientDB juga mendukung operasi pencadangan dan pemulihan. Saat menjalankan operasi pencadangan, ini akan mengambil semua file dari database saat ini ke dalam format zip terkompresi menggunakan algoritma ZIP. Fitur ini (Cadangan) dapat tersedia secara otomatis dengan mengaktifkan plugin server Cadangan Otomatis.
Mengambil backup database atau mengekspor database adalah sama, namun berdasarkan prosedur kita harus tahu kapan harus menggunakan backup dan kapan harus menggunakan ekspor.
Saat mengambil cadangan, itu akan membuat salinan database yang konsisten, semua operasi tulis lebih lanjut dikunci dan menunggu untuk menyelesaikan proses pencadangan. Dalam operasi ini, ini akan membuat file cadangan hanya-baca.
Jika Anda memerlukan operasi baca dan tulis secara bersamaan saat mengambil cadangan, Anda harus memilih mengekspor database daripada membuat cadangan database. Ekspor tidak mengunci database dan memungkinkan penulisan bersamaan selama proses ekspor.
Pernyataan berikut adalah sintaks dasar dari backup database.
./backup.sh <dburl> <user> <password> <destination> [<type>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<dburl> - URL database di mana database berada baik di lokal atau di lokasi terpencil.
<user> - Menentukan nama pengguna untuk menjalankan backup.
<password> - Memberikan kata sandi untuk pengguna tertentu.
<destination> - Lokasi file tujuan yang menyatakan tempat menyimpan file zip cadangan.
<type>- Jenis cadangan opsional. Ini memiliki salah satu dari dua opsi.
Default - mengunci database selama pencadangan.
LVM - menggunakan snapshot copy-on-write LVM di latar belakang.
Contoh
Buat cadangan dari demo database yang terletak di sistem file lokal / opt / orientdb / databases / demo ke dalam file bernama sample-demo.zip dan terletak di direktori saat ini.
Anda dapat menggunakan perintah berikut untuk membuat cadangan dari demo database.
$ backup.sh plocal: opt/orientdb/database/demo admin admin ./backup-demo.zip
Menggunakan Konsol
Hal yang sama dapat Anda lakukan dengan menggunakan konsol OrientDB. Sebelum membuat cadangan database tertentu, Anda harus terlebih dahulu menyambungkan ke database. Anda dapat menggunakan perintah berikut untuk menyambungkan ke database bernama demo.
orientdb> CONNECT PLOCAL:/opt/orientdb/databases/demo admin admin
Setelah terhubung, Anda dapat menggunakan perintah berikut untuk membuat cadangan database ke dalam file bernama 'backup-demo.zip' di direktori saat ini.
orientdb {db=demo}> BACKUP DATABASE ./backup-demo.zip
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan beberapa notifikasi sukses bersama dengan pesan berikut.
Backup executed in 0.30 seconds
Seperti RDBMS, OrientDB juga mendukung operasi pemulihan. Hanya dari mode konsol, Anda dapat menjalankan operasi ini dengan sukses.
Pernyataan berikut adalah sintaks dasar untuk memulihkan operasi.
orientdb> RESTORE DATABSE <url of the backup zip file>
Contoh
Anda harus melakukan operasi ini hanya dari mode konsol. Oleh karena itu, pertama-tama Anda harus memulai konsol OrientDB menggunakan perintah OrientDB berikut.
$ orientdb
Kemudian, sambungkan ke database masing-masing untuk memulihkan cadangan. Anda dapat menggunakan perintah berikut untuk menyambungkan ke database bernama demo.
orientdb> CONNECT PLOCAL:/opt/orientdb/databases/demo admin admin
Setelah koneksi berhasil, Anda dapat menggunakan perintah berikut untuk memulihkan cadangan dari file 'backup-demo.zip'. Sebelum menjalankan, pastikan file backup-demo.zip ditempatkan di direktori saat ini.
Orientdb {db = demo}> RESTORE DATABASE backup-demo.zip
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan beberapa notifikasi sukses bersama dengan pesan berikut.
Database restored in 0.26 seconds
Bab ini menjelaskan cara menyambungkan ke database tertentu dari baris perintah OrientDB. Ini membuka database.
Pernyataan berikut adalah sintaks dasar dari perintah Connect.
CONNECT <database-url> <user> <password>
Berikut adalah detail tentang opsi dalam sintaks di atas.
<database-url>- Mendefinisikan URL dari database. URL berisi dua bagian, satu <mode> dan yang kedua adalah <path>.
<mode> - Mendefinisikan mode, yaitu mode lokal atau mode jarak jauh.
<path> - Mendefinisikan jalur ke database.
<user> - Mendefinisikan pengguna yang ingin Anda hubungkan ke database.
<password> - Mendefinisikan kata sandi untuk menghubungkan ke database.
Contoh
Kami telah membuat database bernama 'demo' di bab sebelumnya. Dalam contoh ini, kita akan menghubungkannya menggunakan admin pengguna.
Anda dapat menggunakan perintah berikut untuk menyambungkan ke database demo.
orientdb> CONNECT PLOCAL:/opt/orientdb/databases/demo admin admin
Jika berhasil terhubung, Anda akan mendapatkan output berikut -
Connecting to database [plocal:/opt/orientdb/databases/demo] with user 'admin'…OK
Orientdb {db = demo}>
Bab ini menjelaskan cara memutuskan koneksi ke database tertentu dari baris perintah OrientDB. Ini menutup database yang saat ini terbuka.
Pernyataan berikut adalah sintaks dasar dari perintah Disconnect.
DISCONNECT
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu dan hanya akan menutup database yang sedang berjalan.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Kami akan memutuskan koneksi dari database demo.
Anda dapat menggunakan perintah berikut untuk memutuskan database.
orientdb {db = demo}> DISCONNECT
Jika berhasil terputus, Anda akan mendapatkan output berikut -
Disconnecting to database [plocal:/opt/orientdb/databases/demo] with user 'admin'…OK
orientdb>
Bab ini menjelaskan cara mendapatkan informasi dari database tertentu dari baris perintah OrientDB.
Pernyataan berikut adalah sintaks dasar dari perintah Info.
info
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu dan ini akan mengambil informasi dari database yang sedang berjalan.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Kami akan mengambil informasi dasar dari database demo.
Anda dapat menggunakan perintah berikut untuk memutuskan database.
orientdb {db = demo}> info
Jika berhasil diputus, Anda akan mendapatkan output berikut.
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 |
---------------------------------+-------+-------------------+----------------+
Bab ini menjelaskan cara mendapatkan daftar semua database dalam sebuah instance dari baris perintah OrientDB.
Pernyataan berikut adalah sintaks dasar dari perintah info.
LIST DATABASES
Note - Anda dapat menggunakan perintah ini hanya setelah terhubung ke server lokal atau jarak jauh.
Contoh
Sebelum mengambil daftar database, kita harus terhubung ke server localhost melalui server jarak jauh. Perlu diingat bahwa nama pengguna dan kata sandi untuk menghubungkan ke instance localhost adalah tamu dan tamu, yang dikonfigurasi diorintdb/config/orientdb-server-config.xml mengajukan.
Anda dapat menggunakan perintah berikut untuk terhubung ke instance server database localhost.
orientdb> connect remote:localhost guest
Ini akan menanyakan kata sandi. Sesuai kata sandi file konfigurasi untuk tamu juga tamu. Jika berhasil terhubung, Anda akan mendapatkan output berikut.
Connecting to remote Server instance [remote:localhost] with user 'guest'...OK
orientdb {server = remote:localhost/}>
Setelah tersambung ke server database localhost Anda dapat menggunakan perintah berikut untuk membuat daftar database.
orientdb {server = remote:localhost/}> list databases
Jika berhasil dijalankan, Anda akan mendapatkan output berikut -
Found 6 databases:
* demo (plocal)
* s2 (plocal)
* s1 (plocal)
* GratefulDeadConcerts (plocal)
* s3 (plocal)
* sample (plocal)
orientdb {server = remote:localhost/}>
Kapan pun Anda ingin menjadikan status database sebagai statis, itu berarti keadaan di mana database tidak merespons operasi baca dan tulis apa pun. Sederhananya, database dalam keadaan beku.
Dalam bab ini, Anda dapat mempelajari cara membekukan database dari baris perintah OrientDB.
Pernyataan berikut adalah sintaks dasar dari perintah database beku.
FREEZE DATABASE
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu baik di database jarak jauh atau lokal.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Kami akan membekukan database ini dari CLI.
Anda dapat menggunakan perintah berikut untuk membekukan database.
Orientdb {db = demo}> FREEZE DATABASE
Jika berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
Database 'demo' was frozen successfully
Di bab ini, Anda dapat mempelajari cara merilis database dari status freeze melalui baris perintah OrientDB.
Pernyataan berikut adalah sintaks dasar dari perintah database Rilis.
RELEASE DATABASE
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu, yang dalam keadaan beku.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Kami akan merilis database yang dibekukan di bab sebelumnya.
Anda dapat menggunakan perintah berikut untuk merilis database.
Orientdb {db = demo}> RELEASE DATABASE
Jika berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
Database 'demo' was release successfully
Dalam bab ini, Anda dapat mempelajari cara menampilkan konfigurasi database tertentu melalui baris perintah OrientDB. Perintah ini berlaku untuk database lokal dan jarak jauh.
Informasi konfigurasi berisi cache default baik diaktifkan atau tidak, ukuran cache itu, nilai faktor beban, memori maksimal untuk peta, ukuran halaman node, ukuran kolam minimum dan maksimum, dll.
Pernyataan berikut adalah sintaks dasar dari perintah database config.
CONFIG
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya.
Anda dapat menggunakan perintah berikut untuk menampilkan konfigurasi database demo.
Orientdb {db = demo}> CONFIG
Jika berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
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}>
Dalam daftar parameter konfigurasi di atas, jika Anda ingin mengubah salah satu nilai parameter, Anda dapat melakukannya dari baris perintah dengan mudah menggunakan set konfigurasi dan perintah get.
Set Konfigurasi
Anda dapat memperbarui nilai variabel konfigurasi dengan menggunakan CONFIG SET perintah.
Pernyataan berikut adalah sintaks dasar dari perintah set konfigurasi.
CONFIG SET <config-variable> <config-value>
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Kami akan mengubah nilai variabel 'tx.autoRetry' menjadi 5.
Anda dapat menggunakan perintah berikut untuk mengatur konfigurasi database demo.
orientdb {db = demo}> CONFIG SET tx.autoRetry 5
Jika berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
Local configuration value changed correctly
Konfigurasi Dapatkan
Anda dapat menampilkan nilai variabel konfigurasi dengan menggunakan CONFIG GET perintah.
Pernyataan berikut adalah sintaks dasar dari perintah config get.
CONFIG GET <config-variable>
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Kami akan mencoba mengambil nilai variabel 'tx.autoRetry'.
Anda dapat menggunakan perintah berikut untuk menampilkan konfigurasi database demo.
orientdb {db = demo}> CONFIG GET tx.autoRetry
Jika berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
Local configuration: tx.autoRetry = 5
Seperti RDBMS, OrientDB juga menyediakan fitur seperti Ekspor dan Impor database. OrientDB menggunakan format JSON untuk mengekspor data. Secara default perintah ekspor menggunakan algoritma GZIP untuk mengompres file.
Saat mengekspor database, itu tidak mengunci database, yang berarti Anda dapat melakukan operasi baca dan tulis secara bersamaan. Ini juga berarti bahwa Anda dapat membuat salinan persis dari data tersebut karena operasi baca dan tulis yang dilakukan secara bersamaan.
Dalam bab ini, Anda dapat mempelajari cara mengekspor database dari baris perintah OrientDB.
Pernyataan berikut adalah sintaks dasar dari perintah database Ekspor.
EXPORT DATABASE <output file>
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Anda dapat menggunakan perintah berikut untuk mengekspor database ke file bernama 'export-demo'.
orientdb {db = demo}> EXPORT DATABASE ./export-demo.export
Jika berhasil dijalankan, maka akan dibuat file bernama 'export-demo.zip' atau 'exportdemo.gz' berdasarkan sistem operasi dan Anda akan mendapatkan output berikut.
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
Kapan pun Anda ingin mengimpor database, Anda harus menggunakan file yang diekspor dengan format JSON, yang dihasilkan oleh perintah ekspor.
Dalam bab ini Anda dapat mempelajari cara mengimpor database dari baris perintah OrientDB.
Pernyataan berikut adalah sintaks dasar dari perintah database Impor.
IMPORT DATABASE <input file>
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Anda dapat menggunakan perintah berikut untuk mengimpor database ke file bernama 'export-demo.gz'.
orientdb {db = demo}> IMPORT DATABASE ./export-demo.export.gz
Jika berhasil dijalankan, Anda akan mendapatkan output berikut bersama dengan notifikasi yang berhasil.
Database import completed in 11612ms
Mirip dengan RDBMS, OrientDB juga menyediakan konsep transaksi seperti Commit dan Rollback. Commit mengacu pada penutupan transaksi dengan menyimpan semua perubahan ke database. Rollback mengacu pada pemulihan status database ke titik di mana Anda membuka transaksi.
Pernyataan berikut adalah sintaks dasar dari perintah database Commit.
COMMIT
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu dan setelah memulai transaksi.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Kita akan melihat pengoperasian transaksi komit dan menyimpan catatan menggunakan transaksi.
Pertama, mulailah transaksi menggunakan yang berikut ini BEGIN perintah.
orientdb {db = demo}> BEGIN
Kemudian, masukkan record ke dalam tabel karyawan dengan nilai id = 12 dan name = satish.P menggunakan perintah berikut.
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
Anda dapat menggunakan perintah berikut untuk melakukan transaksi.
orientdb> commit
Jika transaksi ini berhasil dilakukan, Anda akan mendapatkan output berikut.
Transaction 2 has been committed in 4ms
Dalam bab ini, Anda akan mempelajari cara mengembalikan transaksi yang tidak terikat melalui antarmuka baris perintah OrientDB.
Pernyataan berikut adalah sintaks dasar dari perintah database Rollback.
ROLLBACK
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu dan setelah memulai transaksi.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Kita akan melihat pengoperasian transaksi rollback dan menyimpan catatan menggunakan transaksi.
Pertama, mulailah transaksi menggunakan yang berikut ini BEGIN perintah.
orientdb {db = demo}> BEGIN
Kemudian, masukkan record ke dalam tabel karyawan dengan nilai id = 12 dan name = satish.P menggunakan perintah berikut.
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
Anda dapat menggunakan perintah berikut untuk mengambil rekaman dari tabel Karyawan.
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
---+-------+--------------------
# | ID | name
---+-------+--------------------
0 | 12 | satish.P
---+-------+--------------------
1 item(s) found. Query executed in 0.076 sec(s).
Anda sekarang dapat menggunakan perintah berikut untuk Rollback transaksi ini.
orientdb> ROLLBACK
Periksa kembali kueri pemilihan untuk mengambil rekaman yang sama dari tabel karyawan.
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
Jika rollback berhasil dijalankan, Anda akan mendapatkan 0 record yang ditemukan di output.
0 item(s) found. Query executed in 0.037 sec(s).
Sesuai terminologi teknis Optimizationberarti "Raih kinerja yang lebih baik dalam waktu tercepat." Dengan mengacu pada database, pengoptimalan melibatkan pemaksimalan kecepatan dan efisiensi pengambilan data.
OrientDB mendukung tepi yang ringan, yang berarti hubungan langsung antara entitas data. Secara sederhana, ini adalah hubungan bidang-ke-bidang. OrientDB menyediakan berbagai cara untuk mengoptimalkan database. Ini mendukung konversi tepi biasa menjadi tepi yang ringan.
Pernyataan berikut adalah sintaks dasar dari perintah database Optimize.
OPTMIZE DATABASE [-lwedges] [-noverbose]
Dimana lwedges mengubah tepi biasa menjadi tepi yang ringan dan noverbose menonaktifkan output.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Anda dapat menggunakan perintah optimalkan database berikut.
OPTIMIZE DATABASE -lwedges
Jika berhasil dijalankan, Anda akan mendapatkan beberapa notifikasi yang berhasil beserta pesan penyelesaiannya.
Database Optimization completed in 35ms
Mirip dengan RDBMS, OrientDB menyediakan fitur untuk menjatuhkan database. Drop database mengacu pada penghapusan database sepenuhnya.
Pernyataan berikut adalah sintaks dasar dari perintah database Drop.
DROP DATABASE [<database-name> <server-username> <server-user-password>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<database-name> - Nama database yang ingin Anda hapus.
<server-username> - Nama pengguna database yang memiliki hak istimewa untuk menghapus database.
<server-user-password> - Kata sandi pengguna tertentu.
Contoh
Ada dua cara untuk menghapus database, yang pertama adalah drop database yang sedang terbuka dan yang kedua adalah drop database tertentu dengan memberikan nama tertentu.
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya. Anda dapat menggunakan perintah berikut untuk menjatuhkan databasedemo.
orientdb {db = demo}> DROP DATABASE
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
Database 'demo' deleted successfully
OR
Anda dapat menggunakan perintah lain untuk menjatuhkan database sebagai berikut.
orientdb> DROP DATABASE PLOCAL:/opt/orientdb/databases/demo admin admin
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
Database 'demo' deleted successfully
OrientDB adalah database NoSQL yang dapat menyimpan dokumen dan data berorientasi grafik. Basis data NoSQL tidak berisi tabel apa pun, jadi bagaimana Anda bisa memasukkan data sebagai catatan. Di sini Anda dapat melihat data tabel berupa class, property, vertex, dan edge yang berarti class seperti tabel, dan property seperti file pada tabel.
Kita dapat mendefinisikan semua entitas ini menggunakan schemadi OrientDB. Data properti dapat dimasukkan ke dalam kelas. Perintah sisipkan membuat catatan baru dalam skema database. Rekaman bisa tanpa skema atau mengikuti beberapa aturan yang ditentukan.
Pernyataan berikut adalah sintaks dasar dari perintah Sisipkan Rekaman.
INSERT INTO [class:]<class>|cluster:<cluster>|index:<index>
[(<field>[,]*) VALUES (<expression>[,]*)[,]*]|
[SET <field> = <expression>|<sub-command>[,]*]|
[CONTENT {<JSON>}]
[RETURN <expression>]
[FROM <query>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
SET - Mendefinisikan setiap bidang beserta nilainya.
CONTENT- Mendefinisikan data JSON untuk mengatur nilai bidang. Ini opsional.
RETURN- Mendefinisikan ekspresi yang dikembalikan, bukan jumlah record yang dimasukkan. Kasus penggunaan yang paling umum adalah -
@rid - Mengembalikan Record ID dari record baru.
@this - Mengembalikan seluruh rekor baru.
FROM - Di mana Anda ingin memasukkan catatan atau kumpulan hasil.
Contoh
Mari kita pertimbangkan tabel Pelanggan dengan bidang dan tipe berikut.
Sr.No. | Nama Bidang | Tipe |
---|---|---|
1 | Indo | Bilangan bulat |
2 | Nama | Tali |
3 | Usia | Bilangan bulat |
Anda dapat membuat Skema (tabel) dengan menjalankan perintah berikut.
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
Setelah menjalankan semua perintah, Anda akan mendapatkan nama tabel Pelanggan dengan bidang id, nama, dan usia. Anda dapat memeriksa tabel dengan menjalankan kueri pemilihan ke dalam tabel Pelanggan.
OrientDB menyediakan berbagai cara untuk menyisipkan catatan. Pertimbangkan tabel Pelanggan berikut yang berisi catatan sampel.
Sr.No. | Nama | Usia |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
Perintah berikut adalah memasukkan record pertama ke dalam tabel Customer.
INSERT INTO Customer (id, name, age) VALUES (01,'satish', 25)
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
Inserted record 'Customer#11:0{id:1,name:satish,age:25} v1' in 0.069000 sec(s).
Perintah berikut adalah memasukkan catatan kedua ke dalam tabel Pelanggan.
INSERT INTO Customer SET id = 02, name = 'krishna', age = 26
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
Inserted record 'Customer#11:1{id:2,age:26,name:krishna} v1' in 0.005000 sec(s).
Perintah berikut adalah memasukkan catatan ketiga ke dalam tabel Pelanggan.
INSERT INTO Customer CONTENT {"id": "03", "name": "kiran", "age": "29"}
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
Inserted record 'Customer#11:2{id:3,name:kiran,age:29} v1' in 0.004000 sec(s).
Perintah berikut adalah memasukkan dua record berikutnya ke dalam tabel Customer.
INSERT INTO Customer (id, name, age) VALUES (04,'javeed', 21), (05,'raja', 29)
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
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).
Anda dapat memeriksa apakah semua catatan ini dimasukkan atau tidak dengan menjalankan perintah berikut.
SELECT FROM Customer
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output sebagai berikut.
----+-----+--------+----+-------+----
# |@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
----+-----+--------+----+-------+----
Mirip dengan RDBMS, OrientDB mendukung berbagai jenis kueri SQL untuk mengambil rekaman dari database. Saat mengambil rekaman, kami memiliki variasi atau opsi kueri yang berbeda bersama dengan pernyataan pilih.
Pernyataan berikut adalah sintaks dasar dari perintah 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 ]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<Projections> - Menunjukkan data yang ingin Anda ekstrak dari kueri sebagai kumpulan rekaman hasil.
FROM- Menunjukkan objek yang akan ditanyakan. Ini bisa berupa kelas, cluster, ID Rekaman tunggal, kumpulan ID Rekaman. Anda dapat menentukan semua objek ini sebagai target.
WHERE - Menentukan kondisi untuk memfilter kumpulan hasil.
LET - Menunjukkan variabel konteks yang digunakan dalam proyeksi, kondisi atau sub pertanyaan.
GROUP BY - Menunjukkan bidang untuk mengelompokkan catatan.
ORDER BY - Menunjukkan mengajukan untuk mengatur catatan secara berurutan.
UNWIND - Menunjuk bidang tempat melepas koleksi rekaman.
SKIP - Mendefinisikan jumlah record yang ingin Anda lewati dari awal set hasil.
LIMIT - Menunjukkan jumlah maksimum catatan dalam set hasil.
FETCHPLAN - Menentukan strategi yang menentukan bagaimana Anda ingin mengambil hasil.
TIMEOUT - Menentukan waktu maksimum dalam milidetik untuk kueri.
LOCK- Mendefinisikan strategi penguncian. DEFAULT dan RECORD adalah strategi kunci yang tersedia.
PARALLEL - Jalankan query terhadap thread bersamaan 'x'.
NOCACHE - Mendefinisikan apakah Anda ingin menggunakan cache atau tidak.
Contoh
Mari kita pertimbangkan tabel Pelanggan berikut yang dibuat di bab sebelumnya.
Sr.No. | Nama | Usia |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
Coba kueri pemilihan berbeda untuk mengambil rekaman data dari tabel Pelanggan.
Method 1 - Anda dapat menggunakan kueri berikut untuk memilih semua rekaman dari tabel Pelanggan.
orientdb {db = demo}> SELECT FROM Customer
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+--------+----+-------+----
# |@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 - Pilih semua catatan yang namanya dimulai dengan huruf 'k'.
orientdb {db = demo}> SELECT FROM Customer WHERE name LIKE 'k%'
ATAU Anda dapat menggunakan kueri berikut untuk contoh di atas.
orientdb {db = demo}> SELECT FROM Customer WHERE name.left(1) = 'k'
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+--------+----+-------+----
# |@RID |@CLASS |id |name |age
----+-----+--------+----+-------+----
0 |#11:1|Customer|2 |krishna|26
1 |#11:2|Customer|3 |kiran |29
----+-----+--------+----+-------+----
Method 3 - Pilih id, catatan nama dari tabel Pelanggan dengan nama dalam huruf besar.
orientdb {db = demo}> SELECT id, name.toUpperCase() FROM Customer
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+--------+----+-------
# |@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 - Pilih semua catatan dari tabel Pelanggan di mana usia dalam kisaran 25 hingga 29.
orientdb {db = demo}> SELECT FROM Customer WHERE age in [25,29]
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+--------+----+-------+----
# |@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 - Pilih semua catatan dari tabel Pelanggan di mana setiap bidang berisi kata 'sh'.
orientdb {db = demo}> SELECT FROM Customer WHERE ANY() LIKE '%sh%'
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+--------+----+-------+----
# |@RID |@CLASS |id |name |age
----+-----+--------+----+-------+----
0 |#11:0|Customer|1 |satish |25
1 |#11:1|Customer|2 |krishna|26
----+-----+--------+----+-------+----
Method 6 - Pilih semua catatan dari tabel Pelanggan, diurutkan berdasarkan usia dalam urutan menurun.
orientdb {db = demo}> SELECT FROM Customer ORDER BY age DESC
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+--------+----+-------+----
# |@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 Recorddigunakan untuk memuat record tertentu dari skema. Catatan beban akan memuat catatan dengan bantuan Record ID. Itu diwakili dengan@rid simbol di set hasil.
Pernyataan berikut adalah sintaks dasar dari perintah LOAD Record.
LOAD RECORD <record-id>
Dimana <record-id> mendefinisikan id record dari record yang ingin Anda muat.
Jika Anda tidak mengetahui ID Rekaman dari rekaman tertentu, maka Anda dapat menjalankan kueri apa pun pada tabel. Di set hasil, Anda akan menemukan ID Rekaman (@rid) dari rekaman terkait.
Contoh
Mari kita pertimbangkan tabel Pelanggan yang sama yang telah kita gunakan di bab-bab sebelumnya.
Sr.No. | Nama | Usia |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
Coba kueri berikut untuk mengambil record yang memiliki Record ID @rid: #11:0.
orientdb {db = demo}> LOAD RECORD #11:0
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
+---------------------------------------------------------------------------+
| Document - @class: Customer @rid: #11:0 @version: 1 |
+---------------------------------------------------------------------------+
| Name | Value |
+---------------------------------------------------------------------------+
| id | 1 |
| name | satish |
| age | 25 |
+---------------------------------------------------------------------------+
Reload Recordjuga berfungsi mirip dengan perintah Load Record dan juga digunakan untuk memuat record tertentu dari skema. Catatan beban akan memuat catatan dengan bantuan Record ID. Itu diwakili dengan@ridsimbol di set hasil. Perbedaan utamanya adalah Reload record mengabaikan cache yang berguna ketika transaksi bersamaan eksternal diterapkan untuk mengubah record. Ini akan memberikan pembaruan terbaru.
Pernyataan berikut adalah sintaks dasar dari perintah RELOAD Record.
RELOAD RECORD <record-id>
Dimana <record-id> mendefinisikan id record dari record yang ingin Anda muat ulang.
Jika Anda tidak mengetahui ID Rekaman dari rekaman tertentu, maka Anda dapat menjalankan kueri apa pun pada tabel. Di set hasil, Anda akan menemukan ID Rekaman (@rid) dari rekaman terkait.
Contoh
Mari kita pertimbangkan tabel Pelanggan yang sama yang telah kita gunakan di bab sebelumnya.
Sr.No. | Nama | Usia |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
Coba kueri berikut untuk mengambil record yang memiliki Record ID @rid: #11:0.
orientdb {db = demo}> LOAD RECORD #11:0
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
+---------------------------------------------------------------------------+
| Document - @class: Customer @rid: #11:0 @version: 1 |
+---------------------------------------------------------------------------+
| Name | Value |
+---------------------------------------------------------------------------+
| id | 1 |
| name | satish |
| age | 25 |
+---------------------------------------------------------------------------+
Export Recordadalah perintah yang digunakan untuk mengekspor rekaman yang dimuat ke dalam format yang diminta dan didukung. Jika Anda menjalankan sintaks yang salah, itu akan memberikan daftar format yang didukung. OrientDB adalah keluarga database Dokumen, oleh karena itu JSON adalah format yang didukung default.
Pernyataan berikut adalah sintaks dasar dari perintah Export Record.
EXPORT RECORD <format>
Dimana <Format> menentukan format yang Anda inginkan untuk mendapatkan record.
Note - Perintah Ekspor akan mengekspor rekaman yang dimuat berdasarkan ID Rekam.
Contoh
Mari kita pertimbangkan tabel Pelanggan yang sama yang telah kita gunakan di bab sebelumnya.
Sr.No. | Nama | Usia |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
Coba kueri berikut untuk mengambil record yang memiliki Record ID @rid: #11:0.
orientdb {db = demo}> LOAD RECORD #11:0
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
+---------------------------------------------------------------------------+
| Document - @class: Customer @rid: #11:0 @version: 1 |
+---------------------------------------------------------------------------+
| Name | Value |
+---------------------------------------------------------------------------+
| id | 1 |
| name | satish |
| age | 25 |
+---------------------------------------------------------------------------+
Gunakan query berikut untuk mengekspor record yang dia muat (# 11: 0) ke dalam format JSON.
orientdb {db = demo}> EXPORT RECORD json
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
{
"@type": "d",
"@rid": "#11:0",
"@version": 1,
"@class": "Customer",
"id": 1,
"name": "satish",
"age": 25
}
Update Recordperintah digunakan untuk mengubah nilai record tertentu. SET adalah perintah dasar untuk memperbarui nilai bidang tertentu.
Pernyataan berikut adalah sintaks dasar dari perintah 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>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
SET - Mendefinisikan bidang yang akan diperbarui.
INCREMENT - Menambahkan nilai bidang yang ditentukan dengan nilai yang diberikan.
ADD - Menambahkan item baru di bidang koleksi.
REMOVE - Menghapus item dari bidang koleksi.
PUT - Menempatkan entri ke bidang peta.
CONTENT - Mengganti konten rekaman dengan konten dokumen JSON.
MERGE - Menggabungkan konten rekaman dengan dokumen JSON.
LOCK- Menentukan cara mengunci catatan antara memuat dan memperbarui. Kami memiliki dua opsi untuk ditentukanDefault dan Record.
UPSERT- Memperbarui catatan jika ada atau menyisipkan catatan baru jika tidak ada. Ini membantu dalam mengeksekusi satu kueri sebagai pengganti mengeksekusi dua kueri.
RETURN - Menentukan ekspresi yang akan dikembalikan, bukan jumlah rekaman.
LIMIT - Menentukan jumlah maksimum record untuk diperbarui.
TIMEOUT - Menentukan waktu yang Anda inginkan untuk mengizinkan pembaruan berjalan sebelum waktu habis.
Contoh
Mari kita pertimbangkan tabel Pelanggan yang sama yang telah kita gunakan di bab sebelumnya.
Sr.No. | Nama | Usia |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
Coba kueri berikut untuk memperbarui usia 'Raja' pelanggan.
Orientdb {db = demo}> UPDATE Customer SET age = 28 WHERE name = 'Raja'
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Updated 1 record(s) in 0.008000 sec(s).
Untuk memeriksa catatan tabel pelanggan Anda bisa menggunakan kueri berikut ini.
orientdb {db = demo}> SELECT FROM Customer
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+--------+----+-------+----
# |@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 perintah digunakan untuk menghapus nilai dari record tertentu.
Pernyataan berikut adalah sintaks dasar dari perintah Truncate.
TRUNCATE RECORD <rid>*
Dimana <rid>* menunjukkan ID Rekaman yang akan dipotong. Anda dapat menggunakan beberapa Rids yang dipisahkan dengan koma untuk memotong beberapa record. Ini mengembalikan jumlah rekaman yang terpotong.
Contoh
Mari kita pertimbangkan tabel Pelanggan yang sama yang telah kita gunakan di bab sebelumnya.
Sr.No. | Nama | Usia |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 28 |
Coba kueri berikut untuk memotong rekaman yang memiliki ID Rekaman # 11: 4.
Orientdb {db = demo}> TRUNCATE RECORD #11:4
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Truncated 1 record(s) in 0.008000 sec(s).
Untuk memeriksa catatan tabel pelanggan Anda bisa menggunakan kueri berikut ini.
Orientdb {db = demo}> SELECT FROM Customer
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+--------+----+-------+----
# |@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 perintah digunakan untuk menghapus satu atau lebih record secara lengkap dari database.
Pernyataan berikut adalah sintaks dasar dari perintah Hapus.
DELETE FROM <Class>|cluster:<cluster>|index:<index>
[LOCK <default|record>]
[RETURN <returning>]
[WHERE <Condition>*]
[LIMIT <MaxRecords>]
[TIMEOUT <timeout>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
LOCK- Menentukan cara mengunci catatan antara memuat dan memperbarui. Kami memiliki dua opsi untuk ditentukanDefault dan Record.
RETURN - Menentukan ekspresi yang akan dikembalikan, bukan jumlah rekaman.
LIMIT - Menentukan jumlah maksimum record untuk diperbarui.
TIMEOUT - Menentukan waktu yang Anda inginkan untuk mengizinkan pembaruan berjalan sebelum waktu habis.
Note - Jangan gunakan DELETE untuk menghapus Simpul atau Tepi karena ini mempengaruhi integritas grafik.
Contoh
Mari kita pertimbangkan tabel Pelanggan.
Sr.No. | Nama | Usia |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
Coba query berikut untuk menghapus record yang memiliki id = 4.
orientdb {db = demo}> DELETE FROM Customer WHERE id = 4
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Delete 1 record(s) in 0.008000 sec(s).
Untuk memeriksa catatan tabel pelanggan Anda bisa menggunakan kueri berikut ini.
Orientdb {db = demo}> SELECT FROM Customer
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+--------+----+-------+----
# |@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 mendukung fitur multi-model dan menyediakan berbagai cara untuk mendekati dan memahami konsep dasar database. Namun, kami dapat dengan mudah mengakses model ini dari perspektif API basis data Dokumen. Seperti RDBMS, OrientDB juga menggunakan Record sebagai elemen penyimpanan tetapi menggunakan tipe Dokumen. Dokumen disimpan dalam bentuk pasangan Kunci / Nilai. Kami menyimpan bidang dan properti sebagai pasangan kunci / nilai yang termasuk dalam kelas konsep.
Classadalah jenis model data dan konsepnya diambil dari paradigma pemrograman berorientasi objek. Berdasarkan model database dokumen tradisional, data disimpan dalam bentuk kumpulan, sedangkan pada model database relasional data disimpan dalam tabel. OrientDB mengikuti API Dokumen bersama dengan paradigma OPPS. Sebagai sebuah konsep, kelas di OrientDB memiliki hubungan terdekat dengan tabel dalam database relasional, tetapi (tidak seperti tabel) kelas dapat berupa tanpa skema, penuh skema, atau campuran. Kelas dapat mewarisi dari kelas lain, membuat pohon kelas. Setiap kelas memiliki cluster atau clusternya sendiri, (dibuat secara default, jika tidak ada yang ditentukan).
Pernyataan berikut adalah sintaks dasar dari Buat Perintah Kelas.
CREATE CLASS <class>
[EXTENDS <super-class>]
[CLUSTER <cluster-id>*]
[CLUSTERS <total-cluster-number>]
[ABSTRACT]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<class> - Mendefinisikan nama kelas yang ingin Anda buat.
<super-class> - Mendefinisikan kelas super yang ingin Anda kembangkan dengan kelas ini.
<total-cluster-number>- Mendefinisikan jumlah cluster yang digunakan di kelas ini. Default-nya adalah 1.
ABSTARCT- Mendefinisikan kelas secara abstrak. Ini opsional.
Contoh
Seperti yang telah dibahas, kelas adalah konsep yang berhubungan dengan tabel. Oleh karena itu disini kita akan membuat tabel Akun. Namun, saat membuat kelas kita tidak dapat mendefinisikan field yaitu, properti berdasarkan paradigma OOPS.
Perintah berikut ini untuk membuat kelas bernama Akun.
orientdb> CREATE CLASS Account
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Class created successfully
Anda dapat menggunakan perintah berikut untuk membuat kelas Car yang meluas ke kelas Vehicle.
orientdb> CREATE CLASS Car EXTENDS Vehicle
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Class created successfully
Anda dapat menggunakan perintah berikut untuk membuat Person kelas sebagai abstrak.
orientdb> CREATE CLASS Person ABSTRACT
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Class created successfully
Note- Tanpa memiliki properti, kelas tersebut tidak berguna dan tidak dapat membangun objek nyata. Di bab selanjutnya, Anda dapat mempelajari cara membuat properti untuk kelas tertentu.
Kelas dan Properti di OrientDB digunakan untuk membangun skema dengan atribut masing-masing seperti nama kelas, kelas super, cluster, jumlah cluster, Abstrak, dll. Jika Anda ingin mengubah atau memperbarui atribut kelas yang ada dalam skema maka Anda harus menggunakan Alter Class perintah.
Pernyataan berikut adalah sintaks dasar dari Alter Class Command.
ALTER CLASS <class> <attribute-name> <attribute-value>
Berikut adalah detail tentang opsi dalam sintaks di atas.
<class> - Mendefinisikan nama kelas.
<attribute-name> - Mendefinisikan atribut yang ingin Anda ubah.
<attribute-value> - Mendefinisikan nilai yang ingin Anda tetapkan untuk atribut.
Tabel berikut menjelaskan daftar atribut yang mendukung perintah Alter Class.
Atribut | Tipe | Deskripsi |
---|---|---|
NAMA | Tali | Mengubah nama kelas. |
NAMA PENDEK | Tali | Mendefinisikan nama pendek, (yaitu, alias), untuk kelas. Gunakan NULL untuk menghapus penetapan nama pendek. |
SUPERCLASS | Tali | Mendefinisikan kelas super untuk kelas tersebut. Untuk menambahkan kelas baru, Anda dapat menggunakan sintaks + <class>, untuk menghapusnya gunakan - <class>. |
KELEBIHAN | Angka desimal | Mendefinisikan faktor kebesaran. |
ADDCLUSTER | Tali | Menambahkan cluster ke kelas. Jika cluster tidak ada, cluster fisik akan dibuat. Menambahkan cluster ke kelas juga berguna dalam menyimpan catatan di server terdistribusi. |
REMOVECLUSTER | Tali | Menghapus cluster dari kelas. Itu tidak menghapus cluster, hanya menghapusnya dari kelas. |
STRICTMODE | - | Mengaktifkan atau menonaktifkan mode ketat. Saat dalam mode ketat, Anda bekerja dalam mode skema penuh dan tidak dapat menambahkan properti baru ke data jika mereka adalah bagian dari definisi skema kelas. |
PILIHAN KLUSTER | - | Mendefinisikan strategi pemilihan dalam memilih cluster mana yang digunakan untuk record baru. |
ADAT | - | Mendefinisikan properti kustom. Nama dan nilai properti harus mengikuti sintaks <propertyname> = <value> tanpa spasi antara nama dan nilai. |
ABSTRAK | Boolean | Mengonversi kelas menjadi kelas abstrak atau sebaliknya. |
Contoh
Mari kita coba beberapa contoh yang akan memperbarui atau memodifikasi atribut kelas yang ada.
Kueri berikut digunakan untuk mendefinisikan kelas super 'Orang' untuk kelas 'Karyawan' yang ada.
orientdb> ALTER CLASS Employee SUPERCLASS Person
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Class altered successfully
Kueri berikut digunakan untuk menambahkan kelas super 'Orang' untuk kelas 'Karyawan' yang sudah ada.
orientdb> ALTER CLASS Employee SUPERCLASS +Person
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Class altered successfully
Truncate classakan menghapus semua catatan cluster yang didefinisikan sebagai bagian dari kelas. Di OrientDB, setiap kelas memiliki cluster terkait dengan nama yang sama. Jika Anda juga ingin menghapus semua record dari hierarki kelas, Anda perlu menggunakan kata kunci POLYMORPHIC.
Pernyataan berikut adalah sintaks dasar dari Perintah Kelas Truncate.
TRUNCATE CLASS <class> [ POLYMORPHIC ] [ UNSAFE ]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<class> - Mendefinisikan kelas yang ingin Anda potong.
POLYMORPHIC - Mendefinisikan apakah perintah juga memotong hierarki.
UNSAFE - Mendefinisikan pemotongan pasukan perintah pada simpul atau kelas tepi.
Contoh
Kueri berikut untuk memotong kelas Profile.
orientdb> TRUNCATE CLASS Profile
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Class truncated successfully
Itu Drop Classperintah menghapus kelas dari skema. Penting untuk memperhatikan dan mempertahankan skema yang konsisten. Misalnya, hindari untuk menghapus kelas yang merupakan kelas super milik orang lain. Cluster terkait tidak akan dihapus.
Pernyataan berikut adalah sintaks dasar dari perintah Drop Class.
DROP CLASS <class>
Keluarkan kelas dengan nama kelas.
Contoh
Coba kueri berikut untuk Meninggalkan kelas Karyawan.
Orientdb> DROP CLASS Employee
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Class dropped successfully
Clusteradalah konsep penting dalam OrientDB yang digunakan untuk menyimpan catatan, dokumen, atau simpul. Dengan kata sederhana, cluster adalah tempat di mana sekelompok record disimpan. Secara default, OrientDB akan membuat satu cluster per kelas. Semua catatan kelas disimpan dalam cluster yang sama, yang memiliki nama yang sama dengan kelas tersebut. Anda dapat membuat hingga 32.767 (2 ^ 15-1) kluster dalam database.
Kelas CREATE adalah perintah yang digunakan untuk membuat cluster dengan nama tertentu. Setelah cluster dibuat, Anda dapat menggunakan cluster untuk menyimpan record dengan menentukan nama selama pembuatan model data apa pun. Jika Anda ingin menambahkan cluster baru ke kelas, gunakan perintah Alter Class dan perintah ADDCLUSTER.
Pernyataan berikut adalah sintaks dasar dari perintah Buat Cluster.
CREATE CLUSTER <cluster> [ID <cluster-id>]
Dimana <cluster> menentukan nama cluster yang ingin Anda buat dan <cluster-id> menentukan ID numerik yang ingin Anda gunakan untuk cluster.
Tabel berikut menyediakan daftar strategi pemilihan Cluster.
Sr.No. | Strategi & Deskripsi |
---|---|
1 | Default Memilih cluster menggunakan properti kelas default ClusterId. |
2 | Round-robin Memilih cluster berikutnya dalam urutan melingkar. Ini dimulai ulang setelah selesai. |
3 | Balanced Memilih cluster terkecil. Memungkinkan kelas memiliki semua cluster yang mendasari seimbang pada ukuran. Saat menambahkan cluster baru ke kelas yang sudah ada, cluster baru akan diisi terlebih dahulu. |
Contoh
Mari kita ambil contoh untuk membuat cluster bernama penjualan.
orientdb> CREATE CLUSTER sales
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Cluster created correctly with id #12
Alter Clusterperintah untuk memperbarui atribut pada cluster yang ada. Dalam bab ini Anda dapat mempelajari cara menambah atau mengubah atribut cluster.
Pernyataan berikut adalah sintaks dasar dari perintah Alter Cluster.
ALTER CLUSTER <cluster> <attribute-name> <attribute-value>
Berikut adalah detail tentang opsi dalam sintaks di atas.
<cluster> - Mendefinisikan nama cluster.
<attribute-name> - Mendefinisikan atribut yang ingin Anda ubah.
<attribute-value> - Mendefinisikan nilai yang ingin Anda setel untuk atribut ini.
Format tabel berikut menyediakan daftar atribut yang didukung yang dapat Anda gunakan bersama dengan perintah Alter cluster.
Nama | Tipe | Deskripsi |
---|---|---|
NAMA | Tali | Mengubah nama cluster. |
STATUS | Tali | Mengubah status cluster. Nilai yang diizinkan adalah ONLINE dan OFFLINE. Secara default, cluster sedang online. |
KOMPRESI | Tali | Mendefinisikan jenis kompresi yang akan digunakan. Nilai yang diizinkan adalah NOTHING, SNAPPY, GZIP, dan jenis kompresi lainnya yang terdaftar di kelas OCompressionFactory. |
USE_WAL | Boolean | Menentukan apakah ia menggunakan Jurnal saat OrientDB beroperasi pada kluster |
RECORD_GROW_FACTO R | Bilangan bulat | Mendefinisikan faktor pertumbuhan untuk menghemat lebih banyak ruang pada pembuatan rekaman. Anda mungkin menemukan ini berguna ketika Anda memperbarui catatan dengan informasi tambahan. |
RECORD_OVERFLOW_GR OW_FACTOR | Bilangan bulat | Mendefinisikan faktor tumbuh pada pembaruan. Saat mencapai batas ukuran, gunakan pengaturan ini untuk mendapatkan lebih banyak ruang, (faktor> 1). |
CONFLICTSTRATEGY | Tali | Menentukan strategi yang digunakannya untuk menangani konflik jika OrientDB MVCC menemukan pembaruan atau operasi penghapusan yang dijalankannya terhadap catatan lama. |
Tabel berikut memberikan daftar strategi Konflik.
Sr.No. | Strategi & Deskripsi |
---|---|
1 | Version Melempar pengecualian jika versinya berbeda. Ini adalah pengaturan default. |
2 | Content Jika versinya berbeda, ia memeriksa perubahan dalam konten, jika tidak, ia menggunakan versi tertinggi untuk menghindari munculnya pengecualian. |
3 | Automerge Gabungkan perubahan. |
Contoh
Coba contoh query berikut untuk mempelajari perintah cluster Alter.
Jalankan perintah berikut untuk mengubah nama cluster dari Karyawan menjadi Karyawan2.
orientdb {db = demo}> ALTER CLUSTER Employee NAME Employee2
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Cluster updated successfully
Jalankan perintah berikut untuk mengubah nama cluster dari Karyawan2 menjadi Karyawan menggunakan ID cluster.
orientdb {db = demo}> ALTER CLUSTER 12 NAME Employee
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Cluster updated successfully
Jalankan perintah berikut untuk mengubah strategi konflik cluster menjadi automerge.
orientdb {db = demo}> ALTER CLUSTER V CONFICTSTRATEGY automerge
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Cluster updated successfully
Itu Truncate Cluster Perintah menghapus semua catatan cluster.
Pernyataan berikut adalah sintaks dasar dari Perintah Cluster Truncate.
TRUNCATE CLUSTER <cluster-name>
Dimana <cluster-name> adalah nama cluster.
Contoh
Coba kueri berikut ini untuk memotong cluster bernama penjualan.
Orientdb {db = demo}> TRUNCATE CLUSTER Profile
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Cluster truncated successfully.
Itu Drop Clusterperintah menghapus cluster dan semua konten terkait. Operasi ini permanen dan rollback.
Pernyataan berikut adalah sintaks dasar dari perintah Drop Cluster.
DROP CLUSTER <cluster-name>|<cluster-id>
Dimana <cluster-name> menentukan nama cluster yang ingin Anda hapus dan <cluster-id> mendefinisikan ID cluster yang ingin Anda hapus.
Contoh
Coba perintah berikut ini untuk menghapus cluster Penjualan.
orientdb> DROP CLUSTER Sales
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Cluster dropped successfully
Propertydi OrientDB berfungsi seperti bidang kelas dan kolom di tabel database. Buat Properti adalah perintah yang digunakan untuk membuat properti untuk kelas tertentu. Nama kelas yang Anda gunakan di perintah harus ada.
Pernyataan berikut adalah sintaks dasar dari perintah Buat Properti.
CREATE PROPERTY <class-name>.<property-name> <property-type> [<linked-type>][ <linked-class>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<class-name> - Menentukan kelas tempat Anda ingin membuat properti.
<property-name> - Mendefinisikan nama logis dari properti.
<property-type> - Mendefinisikan jenis properti yang ingin Anda buat.
<linked-type> - Mendefinisikan tipe kontainer, yang digunakan dalam tipe properti kontainer.
<linked-class> - Mendefinisikan kelas kontainer, yang digunakan dalam tipe properti kontainer.
Tabel berikut menyediakan tipe data untuk properti sehingga OrientDB mengetahui tipe data yang akan disimpan.
BOOLEAN | BILANGAN BULAT | PENDEK | PANJANG |
MENGAPUNG | TANGGAL | TALI | DITAMBAHKAN |
TAUTAN | BYTE | BINER | DUA KALI LIPAT |
Selain ini, ada beberapa jenis properti lain yang berfungsi sebagai penampung.
EMBEDDEDLIST | EMBEDDEDSET | EMBEDDEDMAP |
LINKLIST | LINKSET | LINKMAP |
Contoh
Coba contoh berikut untuk membuat nama properti pada kelas Karyawan, dari tipe String.
orientdb> CREATE PROPERTY Employee.name STRING
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Property created successfully with id = 1
Alter Propertyadalah perintah yang digunakan untuk mengubah atau memperbarui Properti dari kelas tertentu. Mengubah properti berarti mengubah bidang tabel. Di bab ini, Anda dapat mempelajari cara memperbarui properti.
Pernyataan berikut adalah sintaks dasar dari Alter Property Command.
ALTER PROPERTY <class>.<property> <attribute-name> <attribute-value>
Berikut adalah detail tentang opsi dalam sintaks di atas.
<class> - Mendefinisikan kelas dimana properti itu berada.
<property> - Mendefinisikan properti yang ingin Anda perbarui.
<attribute-name> - Mendefinisikan atribut properti yang ingin Anda perbarui.
<attribute-value> - Mendefinisikan nilai yang ingin Anda tetapkan pada atribut.
Tabel berikut menjelaskan daftar atribut untuk mengubah properti.
Atribut | Tipe | Deskripsi |
---|---|---|
LINKEDCLASS | Tali | Mendefinisikan nama kelas terkait. Gunakan NULL untuk menghapus nilai yang ada. |
LINKEDTYPE | Tali | Mendefinisikan jenis link. Gunakan NULL untuk menghapus nilai yang ada. |
MIN | Bilangan bulat | Mendefinisikan nilai minimum sebagai batasan. Gunakan NULL untuk menghapus batasan yang ada. |
WAJIB | Boolean | Mendefinisikan apakah properti membutuhkan nilai. |
MAKS | Bilangan bulat | Mendefinisikan nilai maksimum sebagai batasan. Gunakan NULL untuk menghapus batasan yang ada. |
NAMA | Tali | Mendefinisikan nama properti. |
NOTNULL | Boolean | Mendefinisikan apakah properti dapat memiliki nilai NULL. |
REGEX | Tali | Mendefinisikan Ekspresi Reguler sebagai batasan. Gunakan NULL untuk menghapus batasan yang ada. |
TIPE | Tali | Mendefinisikan tipe properti. |
MENYUSUN | Tali | Set menyusun ke salah satu strategi perbandingan yang ditentukan. Secara default, ini diatur ke case-sensitive (cs). Anda juga dapat menyetelnya ke case-insensitive (ci). |
READONLY | Boolean | Mendefinisikan apakah nilai properti tidak dapat diubah. Artinya, jika memungkinkan untuk mengubahnya setelah penugasan pertama. Gunakan dengan DEFAULT untuk memiliki nilai yang tidak dapat diubah saat pembuatan. |
ADAT | Tali | Mendefinisikan properti kustom. Sintaks untuk properti khusus adalah <custom-name> = <custom-value>, seperti stereotype = icon. |
DEFAULT | Mendefinisikan nilai atau fungsi default. |
Note - jika Anda mengubah NAMA atau JENIS, perintah ini akan membutuhkan waktu untuk diperbarui tergantung pada jumlah data.
Contoh
Cobalah beberapa pertanyaan yang diberikan di bawah ini untuk memahami properti Alter.
Jalankan kueri berikut untuk mengubah nama properti dari 'usia' menjadi 'lahir' di kelas Pelanggan.
orinetdb {db = demo}> ALTER PROPERTY Customer.age NAME born
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Property altered successfully
Jalankan query berikut untuk membuat 'name' sebagai properti wajib dari kelas 'Pelanggan'.
orientdb {db = demo}> ALTER PROPERTY Customer.name MANDATORY TRUE
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Property altered successfully
Itu Drop propertyperintah menghapus properti dari skema. Itu tidak menghapus nilai properti dari record, itu hanya mengubah skema.
Pernyataan berikut adalah sintaks dasar dari Drop Property Command.
DROP PROPERTY <class>.<property> [FORCE]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<class> - Mendefinisikan kelas tempat properti itu berada.
<property> - Mendefinisikan properti yang ingin Anda hapus.
[Force] - Jika satu atau lebih indeks ditentukan di properti.
Contoh
Coba perintah berikut untuk menghapus properti 'usia' dari kelas 'Pelanggan'.
orientdb> DROP PROPERTY Customer.age
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Property dropped successfully
Database OrientDB tidak hanya database Dokumen tetapi juga database Grafik. Konsep baru seperti Vertex dan Edge digunakan untuk menyimpan data dalam bentuk grafik. Ini menerapkan polimorfisme pada simpul. Kelas dasar untuk Vertex adalah V.
Pada bab ini Anda dapat mempelajari cara membuat simpul untuk menyimpan data grafik.
Pernyataan berikut adalah sintaks dasar dari Buat Perintah Vertex.
CREATE VERTEX [<class>] [CLUSTER <cluster>] [SET <field> = <expression>[,]*]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<class> - Mendefinisikan kelas dimana vertex berada.
<cluster> - Mendefinisikan cluster di mana ia menyimpan vertex.
<field> - Mendefinisikan bidang yang ingin Anda atur.
<expression> - Mendefinisikan ekspres untuk diatur untuk lapangan.
Contoh
Coba contoh berikut untuk memahami cara membuat simpul.
Jalankan query berikut untuk membuat simpul tanpa 'nama' dan pada kelas dasar V.
orientdb> CREATE VERTEX
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Created vertex 'V#9:0 v1' in 0.118000 sec(s)
Jalankan query berikut untuk membuat kelas vertex baru bernama v1, kemudian buat vertex di kelas tersebut.
orientdb> CREATE CLASS V1 EXTENDS V
orientdb> CREATE VERTEX V1
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Created vertex 'V1#14:0 v1' in 0.004000 sec(s)
Jalankan kueri berikut untuk membuat simpul baru dari kelas bernama v1, dengan mendefinisikan propertinya seperti brand = 'Maruti' dan name = 'Swift'.
orientdb> CREATE VERTEX V1 SET brand = 'maruti', name = 'swift'
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Created vertex 'V1#14:1{brand:maruti,name:swift} v1' in 0.004000 sec(s)
Pindahkan perintah Vertex di OrientDB adalah untuk memindahkan satu atau lebih simpul dari lokasi saat ini ke kelas atau cluster yang berbeda. Jika Anda menerapkan perintah pindah pada simpul tertentu, maka itu akan memperbarui semua tepi yang terhubung ke simpul ini. Jika Anda menentukan sebuah cluster untuk memindahkan simpul, maka itu memindahkan simpul ke pemilik server dari cluster target.
Pernyataan berikut adalah sintaks dasar dari Move Vertex Command.
MOVE VERTEX <source> TO <destination>
[SET [<field>=<value>]* [,]]
[MERGE <JSON>]
[BATCH <batch-size>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<source>- Mendefinisikan puncak yang ingin Anda pindahkan. Ini menerima ID Rekaman dari simpul atau larik tertentu dari ID Rekaman untuk simpul.
<destination>- Mendefinisikan di mana Anda ingin memindahkan puncak. Ini mendukung kelas atau cluster sebagai tujuan.
SET - Mengatur nilai ke bidang.
MERGE - Menetapkan nilai ke bidang melalui JSON.
BATCH - Mendefinisikan ukuran batch.
Note- Perintah ini memperbarui semua tepi yang terhubung, tetapi tidak untuk tautan. Saat menggunakan Graph API, disarankan untuk menggunakan edge yang terhubung ke simpul.
Contoh
Coba contoh berikut untuk mempelajari cara memindahkan simpul.
Jalankan query berikut untuk memindahkan satu simpul yang memiliki Record ID # 11: 2 dari posisinya saat ini ke Class Employee.
orientdb> MOVE VERTEX #11:2 TO CLASS:Employee
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut -
Move vertex command executed with result '[{old:#11:2, new:#13:0}]' in 0.022000 sec(s)
Jalankan query berikut untuk memindahkan kumpulan simpul dari kelas 'Pelanggan' ke kelas 'Karyawan'.
orientdb> MOVE VERTEX (SELECT FROM Customer) TO CLASS:Employee
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
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 Vertexperintah digunakan untuk menghapus simpul dari database. Saat menghapus, ia memeriksa dan memelihara konsistensi dengan tepi dan menghapus semua referensi silang (dengan tepi) ke simpul yang dihapus.
Pernyataan berikut adalah sintaks dasar dari Hapus Perintah Vertex.
DELETE VERTEX <vertex> [WHERE <conditions>]
[LIMIT <MaxRecords>>] [BATCH <batch-size>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<vertex> - Mendefinisikan puncak yang ingin Anda hapus, menggunakan Kelasnya, ID Rekaman, atau melalui sub-kueri.
WHERE - Menyaring kondisi untuk menentukan rekaman mana yang dihapus perintah.
LIMIT - Mendefinisikan jumlah maksimum record yang akan dihapus.
BATCH - Mendefinisikan berapa banyak record yang dihapus perintah dalam satu waktu, memungkinkan Anda memecah transaksi besar menjadi blok yang lebih kecil untuk menghemat penggunaan memori.
Contoh
Coba perintah berikut untuk mempelajari cara menghapus satu simpul atau beberapa simpul.
Jalankan perintah berikut untuk menghapus simpul '# 14: 1'.
orientdb> DELETE VERTEX #14:1
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Delete record(s) '1' in 0.005000 sec(s)
Jalankan perintah berikut untuk menghapus semua simpul dari kelas 'Pelanggan' yang ditandai dengan properti 'isSpam'.
orientdb> DELETE VERTEX Customer WHERE isSpam = TRUE
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Delete record(s) '3' in 0.005000 sec(s)
Di OrientDB, konsepnya Edgebekerja seperti hubungan antara simpul dengan bantuan beberapa properti. Tepi dan simpul adalah komponen utama dari database grafik. Ini menerapkan polimorfisme di Tepi. Kelas dasar untuk Edge adalah E. Saat mengimplementasikan edge, jika simpul sumber atau tujuan hilang atau tidak ada, maka transaksi akan dibatalkan.
Pernyataan berikut adalah sintaks dasar dari 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>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<class> - Mendefinisikan nama kelas untuk edge.
<cluster> - Mendefinisikan cluster di mana Anda ingin menyimpan edge.
JSON - Menyediakan konten JSON untuk disetel sebagai catatan.
RETRY - Menentukan jumlah percobaan ulang untuk dicoba jika terjadi konflik.
WAIT - Menentukan waktu untuk menunda antara percobaan ulang dalam milidetik.
BATCH - Mendefinisikan apakah itu memecah perintah menjadi blok-blok yang lebih kecil dan ukuran batch.
Contoh
Jalankan kueri berikut untuk membuat tepi E antara dua simpul # 9: 0 dan # 14: 0.
orientdb> CREATE EDGE FROM #11:4 TO #13:2
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Created edge '[e[#10:0][#9:0->#14:0]]' in 0.012000 sec(s)
Jalankan kueri berikut untuk membuat tipe edge baru dan edge tipe baru.
orientdb> CREATE CLASS E1 EXTENDS E
orientdb> CREATE EDGE E1 FROM #10:3 TO #11:4
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Created edge '[e[#10:1][#10:3->#11:4]]' in 0.011000 sec(s)
Update edgeperintah digunakan untuk memperbarui catatan tepi dalam database saat ini. Ini sama dengan perintah pembaruan aktual selain memeriksa dan menjaga konsistensi grafik dengan simpul, jika Anda memperbaruiout dan in properti.
Pernyataan berikut adalah sintaks dasar dari 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>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<edge>- Mendefinisikan edge yang ingin Anda perbarui. Anda dapat memilih di antaraClass yang memperbarui tepi berdasarkan kelas, Cluster yang memperbarui tepi menurut cluster, menggunakan prefiks CLUSTER, atau Record ID yang memperbarui tepi dengan ID catatan.
SET - Memperbarui bidang ke nilai yang diberikan.
INCREMENT - Menambahkan bidang yang diberikan dengan nilai.
ADD - Mendefinisikan item untuk ditambahkan ke koleksi bidang.
REMOVE - Mendefinisikan item untuk dihapus dari kumpulan bidang.
PUT - Mendefinisikan entri untuk dimasukkan ke bidang peta.
RETURN - Mendefinisikan ekspresi yang ingin Anda kembalikan setelah menjalankan pembaruan.
WHERE - Mendefinisikan kondisi filter.
LOCK - Mendefinisikan bagaimana record mengunci antara load dan update.
LIMIT - Mendefinisikan jumlah maksimum record.
Contoh
Mari kita pertimbangkan contoh memperbarui edge bernama 'address' di kelas person dengan mengambil data dari tabel alamat yang memiliki area Id = 001, dan person name = Krishna.
orientdb> UPDATE EDGE address SET out = (SELECT FROM Address WHERE areaID = 001)
WHERE name = 'krishna'
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Updated edge '[address[#10:3][#11:3->#14:2]]' in 0.012000 sec(s)
Delete edgeperintah digunakan untuk menghapus database. Ini sama dengan perintah hapus, dengan tambahan pemeriksaan dan pemeliharaan konsistensi dengan simpul dengan menghapus semua referensi silang ke tepi dari properti simpul 'masuk' dan 'keluar'.
Pernyataan berikut adalah sintaks dasar dari perintah Delete Edge.
DELETE EDGE
( <rid>
|
[<rid> (, <rid>)*]
|
( [ FROM (<rid> | <select_statement> ) ] [ TO ( <rid> | <select_statement> ) ] )
|
[<class>]
(
[WHERE <conditions>]
[LIMIT <MaxRecords>]
[BATCH <batch-size>]
))
Berikut adalah detail tentang opsi dalam sintaks di atas.
FROM - Mendefinisikan titik titik awal dari tepi yang akan dihapus.
To - Mendefinisikan titik akhir dari tepi yang akan dihapus.
WHERE - Mendefinisikan kondisi penyaringan.
LIMIT - Menentukan jumlah maksimum tepi yang akan dihapus.
BATCH - Menentukan ukuran blok untuk operasi tersebut.
Contoh
Coba contoh berikut untuk mempelajari cara menghapus tepi.
Jalankan kueri berikut untuk menghapus tepi antara dua simpul (# 11: 2, # 11: 10). Tapi mungkin ada kemungkinan ada satu atau lebih tepi di antara dua simpul. Sehingga kami menggunakan properti tanggal untuk fungsionalitas yang tepat. Kueri ini akan menghapus tepi yang dibuat pada '2015-01-15'dan nanti.
orientdb {db = demo}> DELETE EDGE FROM #11:2 TO #11:10 WHERE date >= "2012-01-15"
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Delete record(s) '2' in 0.00200 sec(s)
Jalankan query berikut untuk menghapus tepi mulai dari simpul '# 11: 5' ke simpul '# 11: 10' dan yang terkait dengan 'class = Customer'.
orientdb {db = demo}> DELETE EDGE FROM #11:5 TO #11:10 WHERE @class = 'Customer'
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Delete record(s) '2' in 0.00200 sec(s)
Bab ini menjelaskan referensi lengkap dari berbagai jenis fungsi di OrientDB. Tabel berikut menjelaskan daftar fungsi, yang dikategorikan menurut fungsinya.
Fungsi Grafik
Sr.No. | Nama & Deskripsi Fungsi |
---|---|
1 | Out(): Mendapat simpul keluar yang berdekatan mulai dari rekor saat ini sebagai Vertex. Syntax - keluar ([<label-1>] [, <label-n>] *) |
2 | In(): Mendapat simpul masuk yang berdekatan mulai dari catatan saat ini sebagai Vertex. Syntax - dalam ([<label-1>] [, <label-n>] *) |
3 | Both(): Mendapat simpul keluar dan masuk yang berdekatan mulai dari catatan saat ini sebagai Vertex. Syntax - keduanya ([<label1>] [, <label-n>] *) |
4 | outE(): Mendapat tepi keluar yang berdekatan mulai dari rekor saat ini sebagai Vertex. Syntax - outE ([<label1>] [, <label-n>] *) |
5 | inE(): Mendapat tepi masuk yang berdekatan mulai dari rekor saat ini sebagai Vertex. Syntax - inE ([<label1>] [, <label-n>] *) |
6 | bothE(): Mendapat tepi keluar dan masuk yang berdekatan mulai dari rekor saat ini sebagai Vertex. Syntax - keduanyaE ([<label1>] [, <label-n>] *) |
7 | outV(): Mendapat simpul keluar mulai dari rekor saat ini sebagai Edge. Syntax - outV () |
8 | inV(): Dapatkan simpul masuk dari rekor saat ini sebagai Edge. Syntax - inV () |
9 | traversedElement(): Mengembalikan elemen yang dilintasi dalam perintah Traverse. Syntax - traversedElement (<index> [, <items>]) |
10 | traversedVertex(): Kembalikan simpul yang dilintasi dalam perintah Traverse. Syntax - traversedVertex (<index> [, <items>]) |
11 | traversedEdge(): Mengembalikan tepi yang dilintasi dalam perintah Traverse. Syntax - traversedEdge (<index> [, <items>]) |
12 | shortestPath(): Mengembalikan jalur terpendek antara dua simpul. Arahnya bisa OUT (default), IN atau BOTH. Synatx - shortestPath (<sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]]) |
13 | dijkstra(): Mengembalikan jalur termurah antara dua simpul menggunakan algoritma Dijkstra. Syntax - dijkstra (<sourceVertex>, <destinationVertex>, <weightEdgeFieldName> [, <direction>]) |
Coba beberapa fungsi grafik bersama dengan kueri berikut.
Jalankan kueri berikut untuk mendapatkan semua simpul keluar dari semua simpul kendaraan.
orientdb {db = demo}>SELECT out() from Vehicle
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
---+----------+---------
# | @class | out
---+----------+---------
0 | Vehicle | #11:2
1 | Vehicle | #13:1
2 | Vehicle | #13:4
---+----------+---------
Jalankan kueri berikut untuk mendapatkan simpul masuk dan keluar dari simpul # 11: 3.
orientdb {db = demo}>SELECT both() FROM #11:3
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
---+----------+--------+-------
# | @class | out | in
---+----------+--------+-------
0 | Vehicle | #13:2 | #10:2
---+----------+-------+-------
Fungsi Matematika
Sr.No. | Nama & Deskripsi Fungsi |
---|---|
1 | eval(): Mengevaluasi ekspresi di antara tanda kutip (atau tanda kutip ganda). Syntax - eval ('<expression>') |
2 | min(): Mengembalikan nilai minimum. Jika dipanggil dengan lebih dari satu parameter, maka ia mengembalikan nilai argumen minimum di antara semua argumen. Syntax - min (<field> [, <field-n>] *) |
3 | max(): Mengembalikan nilai maksimum. Jika dipanggil dengan lebih dari satu parameter, maka mengembalikan nilai maksimum di antara semua argumen. Syntax - maks (<field> [, <field-n>] *) |
4 | sum() Mengembalikan jumlah dari semua nilai yang dikembalikan. Syntax - jumlah (<field>) |
5 | abs(): Mengembalikan nilai absolut. Ia bekerja dengan Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null. Syntax - abs (<field>) |
6 | avg(): Mengembalikan nilai rata-rata. Syntax - rata-rata (<field>) |
7 | count(): Menghitung rekaman yang cocok dengan kondisi kueri. Jika * tidak digunakan sebagai kolom, maka record akan dihitung hanya jika isinya bukan null. Syntax - hitung (<field>) |
8 | mode(): Mengembalikan nilai yang terjadi dengan frekuensi terbesar. Null diabaikan dalam penghitungan. Syntax - mode (<field>) |
9 | median(): Mengembalikan nilai tengah atau nilai interpolasi yang mewakili nilai tengah setelah nilai diurutkan. Null diabaikan dalam penghitungan. Syntax - median (<field>) |
10 | percentile(): Menampilkan persentil ke-n. Null diabaikan dalam penghitungan. Syntax - persentil (<field> [, <quantile-n>] *) |
11 | variance() Mengembalikan varian tengah: Rata-rata selisih kuadrat dari rata-rata.
Syntax - varians (<field>) |
12 | stddev() Mengembalikan simpangan baku: Ukuran sebaran nilai. Null diabaikan dalam penghitungan. Syntax - stddev (<field>) |
Cobalah beberapa fungsi matematika menggunakan kueri berikut.
Jalankan kueri berikut untuk mendapatkan jumlah gaji semua karyawan.
orientdb {db = demo}>SELECT SUM(salary) FROM Employee
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
---+----------+---------
# | @CLASS | sum
---+----------+---------
0 | null | 150000
---+----------+---------
Jalankan kueri berikut untuk mendapatkan gaji rata-rata dari semua karyawan.
orientdb {db = demo}>SELECT avg(salary) FROM Employee
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
---+----------+---------
# | @CLASS | avg
---+----------+---------
0 | null | 25
---+----------+---------
Fungsi Koleksi
Sr.No. | Nama & Deskripsi Fungsi |
---|---|
1 | set(): Menambahkan nilai ke satu set. Jika nilainya adalah sebuah koleksi, maka itu akan digabungkan dengan set, jika tidak, <value> akan ditambahkan. Syntax - set (<field>) |
2 | map(): Menambahkan nilai ke peta saat pertama kali peta dibuat. Jika <value> adalah peta, maka itu akan digabungkan dengan peta, jika tidak, pasangan <key> dan <value> ditambahkan ke peta sebagai entri baru. Syntax - peta (<key>, <value>) |
3 | ist(): Menambahkan nilai ke daftar pertama kali daftar dibuat. Jika <value> adalah sebuah koleksi, maka itu digabungkan dengan daftar, jika tidak <value> ditambahkan ke daftar. Syntax - daftar (<field>) |
4 | difference(): Berfungsi sebagai agregat atau sebaris. Jika hanya satu argumen yang diteruskan maka agregat, jika tidak dijalankan, dan mengembalikan PERBEDAAN antara koleksi yang diterima sebagai parameter. Syntax - perbedaan (<field> [, <field-n>] *) |
5 | first(): Mengambil hanya item pertama dari bidang multi-nilai (array, koleksi, dan peta). Untuk tipe non-multi-nilai hanya mengembalikan nilainya. Syntax - pertama (<field>) |
6 | intersect(): Berfungsi sebagai agregat atau sebaris. Jika hanya satu argumen yang diteruskan maka agregat, jika tidak dijalankan, dan mengembalikan, INTERACTION dari koleksi yang diterima sebagai parameter. Syntax - berpotongan (<field> [, <field-n>] *) |
7 | distinct(): Mengambil hanya entri data unik bergantung pada bidang yang telah Anda tentukan sebagai argumen. Perbedaan utama dibandingkan dengan SQL DISTINCT standar adalah bahwa dengan OrientDB, fungsi dengan tanda kurung dan hanya satu bidang yang dapat ditentukan. Syntax - berbeda (<field>) |
8 | expand(): Fungsi ini memiliki dua arti-
Syntax - luaskan (<field>) |
9 | unionall(): Berfungsi sebagai agregat atau sebaris. Jika hanya satu argumen yang dilewatkan maka agregat, jika tidak mengeksekusi dan mengembalikan UNION dari semua koleksi yang diterima sebagai parameter. Juga berfungsi tanpa nilai koleksi. Syntax - unionall (<field> [, <field-n>] *) |
10 | flatten(): Mengekstrak koleksi di bidang dan menggunakannya sebagai hasil. Ini sudah usang, gunakan expand () sebagai gantinya. Syntax - ratakan (<field>) |
11 | last(): Mengambil hanya item terakhir dari bidang multi-nilai (array, koleksi, dan peta). Untuk tipe non-multi-nilai hanya mengembalikan nilainya. Syntax - terakhir (<field>) |
12 | symmetricDifference(): Berfungsi sebagai agregat atau sebaris. Jika hanya satu argumen yang dilewatkan maka agregat, jika tidak dijalankan, dan mengembalikan, PERBEDAAN SIMETRIS antara koleksi yang diterima sebagai parameter. Syntax - perbedaan simetris (<field> [, <field-n>] *) |
Coba beberapa fungsi koleksi menggunakan kueri berikut.
Jalankan kueri berikut untuk mendapatkan sekumpulan guru, mengajar kelas 9.
orientdb {db = demo}>SELECT ID, set(teacher.id) AS teacherID from classess where class_id = 9
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
---+----------+--------+--------------------------
# | @CLASS | id | TeacherID
---+----------+--------+--------------------------
0 | null | 9 | 1201, 1202, 1205, 1208
---+----------+-------+---------------------------
Fungsi Lain-lain
Sr.No. | Nama & Deskripsi Fungsi |
---|---|
1 | date(): Mengembalikan tanggal yang memformat string. <date-as-string> adalah tanggal dalam format string, dan <format> adalah format tanggal yang mengikuti aturan ini. Syntax - tanggal (<date-as-string> [<format>] [, <timezone>]) |
2 | sysdate(): Mengembalikan tanggal dan waktu saat ini. Syntax - sysdate ([<format>] [, <timezone>]) |
3 | format(): Memformat nilai menggunakan konvensi String.format (). Syntax - format (<format> [, <arg1>] (, <arg-n>] *. Md) |
4 | distance(): Mengembalikan jarak antara dua titik di dunia menggunakan algoritme Haversine. Koordinat harus derajat. Syntax - jarak (<x-field>, <y-field>, <x-value>, <y-value>) |
5 | ifnull(): Mengembalikan bidang / nilai yang diteruskan (atau parameter opsional return_value_if_not_null). Jika field / nilai bukan null, ia mengembalikan return_value_if_null. Syntax - ifnull (<field | value>, <return_value_if_null> [, <return_value_if_not_null>] (, <field & .md # 124; value>] *) |
6 | coalesce(): Mengembalikan bidang / nilai pertama, bukan parameter nol. Jika tidak ada bidang / nilai bukan nol, mengembalikan nol. Syntax - menyatu (<bidang | nilai> [, <bidang-n | nilai-n>] *) |
7 | uuid(): Menghasilkan UUID sebagai nilai 128-bit menggunakan varian Leach-Salz. Syntax - uuid () |
8 | if(): Mengevaluasi kondisi (parameter pertama) dan mengembalikan parameter kedua jika kondisinya benar, yang ketiga sebaliknya. Syntax - if (<expression>, <result-if-true>, <result-if-false>) |
Coba beberapa fungsi Misc menggunakan kueri berikut.
Jalankan kueri berikut untuk mempelajari cara mengeksekusi ekspresi if.
orientdb {db = demo}> SELECT if(eval("name = 'satish'"), "My name is satish",
"My name is not satish") FROM Employee
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+--------+-----------------------
# |@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
----+--------+------------------------
Jalankan kueri berikut untuk mendapatkan tanggal sistem.
orientdb {db = demo}> SELECT SYSDATE() FROM Employee
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+--------+-----------------------
# |@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
----+--------+------------------------
Dengan menggunakan fungsi ini secara menyeluruh, Anda dapat dengan mudah memanipulasi data OrientDB.
Sequencesadalah konsep yang digunakan dalam mekanisme penambahan otomatis dan diperkenalkan di OrientDB v2.2. Dalam terminologi database, sequence adalah struktur yang mengatur field counter. Urutan sederhana sebagian besar digunakan saat Anda membutuhkan angka yang selalu bertambah. Ini mendukung dua tipe-
ORDERED - Setiap kali penunjuk memanggil metode .next yang mengembalikan nilai baru.
CACHED- Urutan akan menyimpan item 'N' pada setiap node. Untuk memanggil setiap item yang kami gunakan.next(), yang disukai jika cache berisi lebih dari satu item.
Buat Urutan
Urutan biasanya digunakan untuk menaikkan nilai id seseorang secara otomatis. Seperti konsep SQL lainnya dari OrientDB, ia juga membentuk operasi serupa seperti Urutan di RDBMS.
Pernyataan berikut adalah sintaks dasar untuk membuat urutan.
CREATE SEQUENCE <sequence> TYPE <CACHED|ORDERED> [START <start>]
[INCREMENT <increment>] [CACHE <cache>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<Sequence> - Nama lokal untuk urutan.
TYPE - Mendefinisikan jenis urutan ORDERED atau CACHED.
START - Mendefinisikan nilai awal.
INCREMENT - Mendefinisikan kenaikan untuk setiap pemanggilan metode .next.
CACHE - Mendefinisikan jumlah nilai untuk pra-cache, jika Anda menggunakan jenis urutan cache.
Mari kita buat urutan bernama 'seqid' yang dimulai dengan angka 1201. Coba pertanyaan berikut untuk mengimplementasikan contoh ini dengan urutan.
CREATE SEQUENCE seqid START 1201
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Sequence created successfully
Coba kueri berikut untuk menggunakan urutan 'seqid' untuk memasukkan nilai id tabel Akun.
INSERT INTO Account SET id = sequence('seqid').next()
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Insert 1 record(s) in 0.001000 sec(s)
Ubah Urutan
Alter sequence adalah perintah yang digunakan untuk mengubah properti suatu sequence. Ini akan mengubah semua opsi urutan kecuali jenis urutan.
Pernyataan berikut adalah sintaks dasar untuk mengubah urutan.
ALTER SEQUENCE <sequence> [START <start-point>]
[INCREMENT <increment>] [CACHE <cache>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<Sequence> - Mendefinisikan urutan yang ingin Anda ubah.
START - Mendefinisikan nilai awal.
INCREMENT - Mendefinisikan kenaikan untuk setiap pemanggilan metode .next.
CACHE - Mendefinisikan jumlah nilai untuk pra-cache jika Anda menggunakan jenis urutan cache.
Coba kueri berikut untuk mengubah nilai awal dari '1201 hingga 1000' dari urutan bernama seqid.
ALTER SEQUENCE seqid START 1000
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Altered sequence successfully
Jatuhkan Urutan
Urutan drop adalah perintah yang digunakan untuk menjatuhkan urutan.
Pernyataan berikut adalah sintaks dasar untuk menghapus urutan.
DROP SEQUENCE <sequence>
Dimana <Sequence> menentukan urutan yang ingin Anda hapus.
Coba kueri berikut untuk menghapus urutan bernama 'seqid'.
DROP SEQUENCE seqid
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Sequence dropped successfully
Index adalah pointer yang menunjuk ke lokasi data dalam database. Indexingadalah konsep yang digunakan untuk mencari data dengan cepat tanpa harus mencari setiap record dalam database. OrientDB mendukung empat algoritma indeks dan beberapa tipe di dalamnya.
Empat jenis indeks adalah -
Indeks SB-Tree
Ini memberikan campuran bagus fitur yang tersedia dari jenis indeks lainnya. Lebih baik menggunakan ini untuk utilitas umum. Ini tahan lama, transaksional dan mendukung berbagai pertanyaan. Ini adalah tipe indeks default. Jenis plugin berbeda yang mendukung algoritma ini adalah -
UNIQUE- Indeks ini tidak mengizinkan kunci duplikat. Untuk indeks komposit, ini mengacu pada keunikan kunci komposit.
NOTUNIQUE - Indeks ini memungkinkan kunci duplikat.
FULLTEXT- Indeks ini didasarkan pada satu kata teks apa pun. Anda dapat menggunakannya dalam kueri melaluiCONTAINSTEXT operator.
DICTIONARY - Indeks ini mirip dengan yang menggunakan UNIK, tetapi dalam kasus kunci duplikat, mereka mengganti catatan yang ada dengan catatan baru.
Indeks Hash
Ini bekerja lebih cepat dan sangat ringan dalam penggunaan disk. Ini tahan lama, transaksional, tetapi tidak mendukung kueri rentang. Ia bekerja seperti HASHMAP, yang membuatnya lebih cepat pada pencarian tepat waktu dan mengkonsumsi lebih sedikit sumber daya daripada jenis indeks lainnya. Jenis plugin berbeda yang mendukung algoritma ini adalah -
UNIQUE_HASH_INDEX- Indeks ini tidak mengizinkan kunci duplikat. Untuk indeks komposit, ini mengacu pada keunikan kunci komposit.
NOTUNIQUE_HASH_INDEX - Indeks ini memungkinkan kunci duplikat.
FULLTEXT_HASH_INDEX- Indeks ini didasarkan pada satu kata teks apa pun. Anda dapat menggunakannya dalam query melalui operator CONTAINSTEXT.
DICTIONARY_HASH_INDEX - Indeks ini mirip dengan yang digunakan UNIQUE_HASH_INDEX, tetapi dalam kasus kunci duplikat, mereka mengganti catatan yang ada dengan catatan baru.
Indeks Teks Lengkap Lucene
Ini menyediakan indeks teks lengkap yang baik, tetapi tidak dapat digunakan untuk mengindeks tipe lain. Ini tahan lama, transaksional, dan mendukung berbagai pertanyaan.
Indeks Spasial Lucene
Ini memberikan indeks spasial yang baik, tetapi tidak dapat digunakan untuk mengindeks tipe lain. Ini tahan lama, transaksional, dan mendukung berbagai pertanyaan.
Membuat Indeks
Buat indeks adalah perintah untuk membuat indeks pada skema tertentu.
Pernyataan berikut adalah sintaks dasar untuk membuat indeks.
CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>]
[METADATA {<metadata>}]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<name>- Mendefinisikan nama logis untuk indeks. Anda juga dapat menggunakan notasi <class.property> untuk membuat indeks otomatis yang terikat ke properti skema. <class> menggunakan kelas skema dan <property> menggunakan properti yang dibuat di kelas.
<class-name>- Memberikan nama kelas yang Anda buat indeks otomatis untuk diindeks. Kelas ini harus ada di database.
<prop-names>- Memberikan daftar properti, yang Anda ingin indeks otomatis untuk diindeks. Properti ini harus sudah ada dalam skema.
<type> - Memberikan algoritma dan jenis indeks yang ingin Anda buat.
<key-type> - Menyediakan jenis kunci opsional dengan indeks otomatis.
<metadata> - Memberikan representasi JSON.
Contoh
Coba kueri berikut untuk membuat indeks otomatis yang terikat ke properti 'ID' dari pengguna sales_user.
orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Creating index...
Index created successfully with 4 entries in 0.021000 sec(s)
Membuat Kueri Indeks
Anda dapat menggunakan kueri pemilihan untuk mendapatkan catatan dalam indeks.
Coba kueri berikut untuk mengambil kunci indeks bernama 'indexforId'.
SELECT FROM INDEX:indexforId
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
----+------+----+-----
# |@CLASS|key |rid
----+------+----+-----
0 |null |1 |#11:7
1 |null |2 |#11:6
2 |null |3 |#11:5
3 |null |4 |#11:8
----+------+----+-----
Jatuhkan Indeks
Jika Anda ingin menghapus indeks tertentu, Anda dapat menggunakan perintah ini. Operasi ini tidak menghapus rekaman terkait.
Pernyataan berikut adalah sintaks dasar untuk menghapus indeks.
DROP INDEX <name>
Dimana <name> memberikan nama indeks yang ingin Anda hapus.
Coba kueri berikut untuk menghapus indeks bernama 'ID' dari pengguna sales_user.
DROP INDEX sales_users.Id
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Index dropped successfully
Seperti RDBMS, OrientDB mendukung transaksi properti ACID. SEBUAHtransactionterdiri dari satu unit pekerjaan yang dilakukan dalam sistem manajemen basis data. Ada dua alasan utama untuk memelihara transaksi dalam lingkungan database.
Untuk memungkinkan pemulihan bersamaan dari kegagalan dan menjaga database tetap konsisten bahkan jika terjadi kegagalan sistem.
Untuk menyediakan isolasi antara program yang mengakses database secara bersamaan.
Secara default, transaksi database harus mengikuti properti ACID seperti properti Atomic, Consistent, Isolated, dan Durable. Tetapi OrientDB adalah database yang sesuai dengan ACID, yang berarti tidak bertentangan atau meniadakan konsep ACID, tetapi mengubah persepsinya saat menangani database NoSQL. Lihat bagaimana properti ACID bekerja bersama dengan database NoSQL.
Atomic - Saat Anda melakukan sesuatu untuk mengubah database, perubahan tersebut akan berfungsi atau gagal secara keseluruhan.
Consistent - Basis data harus tetap konsisten.
Isolated - Jika eksekusi transaksi lain dijalankan pada saat yang sama, maka pengguna tidak akan dapat melihat record dalam eksekusi bersamaan.
Durable - Jika sistem crash (perangkat keras atau perangkat lunak), database itu sendiri harus dapat membuat cadangan.
Transaksi database dapat dicapai dengan menggunakan perintah Commit dan Rollback.
Melakukan
Komit berarti menutup transaksi dengan menyimpan semua perubahan ke database. Rollback berarti memulihkan status database ke titik di mana Anda membuka transaksi.
Pernyataan berikut adalah sintaks dasar dari perintah database COMMIT.
COMMIT
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu dan setelah memulai transaksi.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya dari tutorial ini. Kita akan melihat pengoperasian transaksi komit dan menyimpan catatan menggunakan transaksi.
Anda harus memulai transaksi terlebih dahulu menggunakan perintah BEGIN berikut.
orientdb {db = demo}> BEGIN
Masukkan record ke dalam tabel karyawan dengan nilai id = 12 dan name = satish.P menggunakan perintah berikut.
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
Anda dapat menggunakan perintah berikut untuk melakukan transaksi.
orientdb> commit
Jika transaksi ini berhasil dilakukan, Anda akan mendapatkan output berikut.
Transaction 2 has been committed in 4ms
Rollback
Rollback berarti memulihkan status database ke titik di mana Anda membuka transaksi.
Pernyataan berikut adalah sintaks dasar dari perintah database ROLLBACK.
ROLLBACK
Note - Anda dapat menggunakan perintah ini hanya setelah menghubungkan ke database tertentu dan setelah memulai transaksi.
Contoh
Dalam contoh ini, kami akan menggunakan database yang sama bernama 'demo' yang kami buat di bab sebelumnya dari tutorial. Kita akan melihat pengoperasian transaksi rollback dan menyimpan catatan menggunakan transaksi.
Anda harus terlebih dahulu memulai transaksi menggunakan perintah BEGIN berikut.
orientdb {db = demo}> BEGIN
Masukkan record ke dalam tabel karyawan dengan nilai id = 12 dan name = satish.P menggunakan perintah berikut.
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
Anda dapat menggunakan perintah berikut ini untuk mengambil rekaman tabel karyawan.
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
---+-------+--------------------
# | ID | name
---+-------+--------------------
0 | 12 | satish.P
---+-------+--------------------
1 item(s) found. Query executed in 0.076 sec(s).
Anda dapat menggunakan perintah berikut untuk Rollback transaksi ini.
orientdb> ROLLBACK
Periksa kembali kueri pemilihan untuk mengambil rekaman yang sama dari tabel Karyawan.
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
Jika Rollback berhasil dijalankan, Anda akan mendapatkan 0 record yang ditemukan di output.
0 item(s) found. Query executed in 0.037 sec(s).
OrientDB Hookstidak lain adalah pemicu dalam terminologi database yang memungkinkan kejadian internal sebelum dan sesudah setiap operasi CRUD dalam aplikasi pengguna. Anda dapat menggunakan hook untuk menulis aturan validasi kustom, untuk menegakkan keamanan, atau untuk mengatur event eksternal seperti mereplikasi terhadap DBMS relasional.
OrientDB mendukung dua jenis pengait -
Dynamic Hook - Pemicu, yang dapat dibangun di tingkat kelas dan / atau tingkat Dokumen.
Java (Native) Hook - Pemicu, yang dapat dibangun menggunakan kelas Java.
Kait Dinamis
Hook dinamis lebih fleksibel daripada hook Java, karena bisa diubah saat runtime dan dapat dijalankan per dokumen jika diperlukan, tetapi lebih lambat dari hook Java.
Untuk mengeksekusi hook terhadap dokumen Anda, pertama-tama izinkan class Anda untuk diperluas OTriggeredkelas dasar. Nanti, tentukan properti khusus untuk acara yang diminati. Berikut adalah acara yang tersedia.
onBeforeCreate - Disebut before membuat dokumen baru.
onAfterCreate - Disebut after membuat dokumen baru.
onBeforeRead - Disebut before membaca dokumen.
onAfterRead - Disebut after membaca dokumen.
onBeforeUpdate - Disebut before memperbarui dokumen.
onAfterUpdate - Disebut after memperbarui dokumen.
onBeforeDelete - Disebut before menghapus dokumen.
onAfterDelete - Disebut after menghapus dokumen.
Dynamic Hooks dapat memanggil -
Fungsi, ditulis dalam SQL, Javascript atau bahasa apa pun yang didukung oleh OrientDB dan JVM.
Metode statis Java.
Kait Tingkat Kelas
Kait tingkat kelas ditentukan untuk semua dokumen yang terkait dengan kelas. Berikut adalah contoh untuk menyiapkan pengait yang bertindak di tingkat kelas terhadap dokumen Faktur.
CREATE CLASS Invoice EXTENDS OTriggered
ALTER CLASS Invoice CUSTOM onAfterCreate = invoiceCreated
Mari buat fungsinya invoiceCreated dalam Javascript yang mencetak di konsol server nomor faktur yang dibuat.
CREATE FUNCTION invoiceCreated "print('\\nInvoice created: ' + doc.field ('number'));"
LANGUAGE Javascript
Sekarang coba pengait dengan membuat yang baru Invoice dokumen.
INSERT INTO Invoice CONTENT {number: 100, notes: 'This is a test}
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
Invoice created: 100
Pengait Tingkat Dokumen
Anda dapat menetapkan tindakan khusus hanya terhadap satu atau lebih dokumen. Untuk melakukan ini, izinkan kelas Anda untuk diperluasOTriggered kelas.
Sebagai contoh, mari kita jalankan pemicu, sebagai fungsi Javascript, terhadap kelas Profil yang ada, untuk semua dokumen dengan property account = 'Premium'. Pemicu akan dipanggil untuk mencegah penghapusan dokumen.
ALTER CLASS Profile SUPERCLASS OTriggered UPDATE Profile
SET onBeforeDelete = 'preventDeletion' WHERE account = 'Premium'
Mari buat preventDeletion() Fungsi Javascript.
CREATE FUNCTION preventDeletion "throw new java.lang.RuntimeException('Cannot
delete Premium profile ' + doc)" LANGUAGE Javascript
Dan kemudian uji hook dengan mencoba menghapus akun '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
Kait JAWA
Satu kasus penggunaan umum untuk OrientDB Hooks (pemicu) adalah untuk mengelola tanggal yang dibuat dan diperbarui untuk salah satu atau semua kelas. Misalnya, Anda dapat menyetel fileCreatedDate lapangan setiap kali rekor dibuat dan menetapkan UpdatedDate setiap kali record diperbarui, dan melakukannya dengan cara di mana Anda menerapkan logika sekali pada lapisan database dan tidak perlu mengkhawatirkannya lagi di lapisan aplikasi.
Sebelum membuat, Anda harus mengunduh orientdb-core.jarfile dengan mengunjungi tautan berikut unduh inti OrientDB . Dan kemudian salin file jar itu ke folder tempat Anda ingin menyimpan file sumber Java.
Buat File Hook
Buat file Java bernama HookTest.java, yang akan menguji mekanisme Hook menggunakan bahasa 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;
}
}
Kode contoh di atas mencetak komentar yang sesuai setiap kali Anda membuat atau memperbarui catatan kelas itu.
Mari tambahkan satu file hook lagi setCreatedUpdatedDates.java sebagai berikut -
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;
}
}
}
Apa yang dilakukan kode di atas adalah mencari kelas apa pun yang dimulai dengan huruf 'r' atau 't'dan menyetel CreatedDate dan UpdatedDate saat rekaman dibuat dan menyetel UpdatedDate saja setiap kali rekaman diperbarui.
Kompilasi Java Hooks
Kompilasi kode Java dengan menggunakan perintah berikut. Note: Simpan file jar yang diunduh dan file Java ini ke dalam folder yang sama.
$ jar cf hooks-1.0-SNAPSHOT.jar *.java
Pindahkan Kode yang Dikompilasi ke Tempat Server OrientDB Dapat Menemukannya
Anda perlu menyalin file .jar yang sudah selesai ke direktori tempat server OrientDB Anda akan mencarinya. Ini berarti './lib'di bawah direktori root Server OrientDB Anda akan terlihat seperti ini -
$ cp hooks-1.0-SNAPSHOT.jar "$ORIENTDB_HOME/lib"
Aktifkan Test Hook di File Konfigurasi Server OrientDB
Edit $ORIENTDB_HOME/config/orientdb-server-config.xml dan tambahkan bagian berikut di dekat akhir file.
<hooks>
<hook class = "HookTest" position = "REGULAR"/>
</hooks>
...
</orient-server>
Mulai ulang Server OrientDB
Setelah Anda merestart OrientDB Server, hook yang Anda tentukan orientdb-server-config.xmlsekarang aktif. Luncurkan konsol OrientDB, hubungkan ke database Anda, dan jalankan perintah berikut -
INSERT INTO V SET ID = 1;
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
Ran create hook
Sekarang jalankan perintah berikut -
UPDATE V SET ID = 2 WHERE ID = 1;
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
Ran update hook
Aktifkan Real Hook di File Konfigurasi Server OrientDB
Edit $ORIENTDB_HOME/config/orientdb-server-config.xml dan ubah bagian kait sebagai berikut -
<hooks>
<hook class="setCreatedUpdatedDates" position="REGULAR"/>
</hooks>
...
</orient-server>
Mulai ulang Server OrientDB
Buat kelas baru yang dimulai dengan huruf 'r' atau 't'-
CREATE CLASS tTest EXTENDS V;
Sekarang masukkan catatan -
INSERT INTO tTest SET ID = 1
SELECT FROM tTest
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+------+----+-----------+-----------
# |@RID |@CLASS|ID |CreatedDate|UpdatedDate
----+-----+------+----+-----------+-----------
0 |#19:0|tTest |1 |1427597275 |1427597275
----+-----+------+----+-----------+-----------
Meskipun Anda tidak menentukan nilai untuk ditetapkan CreatedDate dan UpdatedDate, OrientDB telah menyetel bidang ini secara otomatis untuk Anda.
Selanjutnya Anda perlu memperbarui catatan menggunakan perintah berikut -
UPDATE tTest SET ID = 2 WHERE ID = 1;
SELECT FROM tTest;
Jika perintah ini berhasil dijalankan, Anda akan mendapatkan output berikut.
----+-----+------+----+-----------+-----------
# |@RID |@CLASS|ID |CreatedDate|UpdatedDate
----+-----+------+----+-----------+-----------
0 |#19:0|tTest |2 |1427597275 |1427597306
----+-----+------+----+-----------+-----------
Anda dapat melihat bahwa OrientDB telah mengubah file UpdatedDate tetapi telah membiarkan CreatedDate tetap tidak berubah.
OrientDB Java Hooks dapat menjadi alat yang sangat berharga untuk membantu mengotomatiskan pekerjaan yang seharusnya Anda lakukan dalam kode aplikasi. Karena banyak DBA tidak selalu ahli dalam Java, semoga informasi yang terkandung dalam tutorial ini akan memberi Anda permulaan dan membuat Anda merasa nyaman dengan teknologinya, memberdayakan Anda untuk berhasil membuat pemicu database saat diperlukan.
Cachingadalah konsep yang akan membuat salinan dari struktur tabel database yang menyediakan lingkungan yang nyaman untuk aplikasi pengguna. OrientDB memiliki beberapa mekanisme caching di level yang berbeda.
Ilustrasi berikut memberikan gambaran tentang apa itu cache.
Pada ilustrasi di atas DB1, DB2, DB3 adalah tiga contoh database berbeda yang digunakan dalam aplikasi.
Level-1 cache adalah Local cacheyang menyimpan semua entitas yang diketahui oleh sesi tertentu. Jika Anda memiliki tiga transaksi dalam sesi ini, itu akan menampung semua entitas yang digunakan oleh ketiga transaksi tersebut. Cache ini dibersihkan saat Anda menutup sesi atau saat Anda melakukan metode "hapus". Ini mengurangi beban operasi I / O antara aplikasi dan database dan pada gilirannya meningkatkan kinerja.
Level-2 cache adalah Real cacheyang berfungsi dengan menggunakan penyedia pihak ketiga. Anda dapat memiliki kendali penuh atas konten cache, yaitu Anda dapat menentukan entri mana yang harus dihapus, entri mana yang harus disimpan lebih lama dan seterusnya. Ini adalah cache bersama yang lengkap di antara beberapa utas.
Storage model tidak lain adalah perangkat penyimpanan yaitu disk, memori, atau server jauh.
Bagaimana Cache Bekerja di OrientDB?
Caching OrientDB menyediakan metodologi yang berbeda di lingkungan yang berbeda. Caching terutama digunakan untuk transaksi database yang lebih cepat, mengurangi waktu pemrosesan transaksi dan meningkatkan kinerja. Diagram alir berikut menunjukkan cara kerja cache dalam mode lokal dan mode klien-server.
Mode Lokal (Basis Data Tertanam)
Diagram alir berikut memberi tahu Anda bagaimana record berada di antara penyimpanan dan aplikasi yang digunakan dalam mode lokal, yaitu ketika server database Anda berada di localhost Anda.
Ketika aplikasi klien meminta catatan, OrientDB memeriksa hal-hal berikut -
Jika transaksi telah dimulai, maka transaksi mencari catatan yang diubah di dalam transaksi dan mengembalikannya jika ditemukan.
Jika cache lokal diaktifkan dan berisi rekaman yang diminta, maka kembalikan.
Jika pada titik ini record tidak ada di cache, maka memintanya ke Storage (disk, memory).
Mode Server Klien (Database Jarak Jauh)
Diagram alir berikut memberi tahu Anda bagaimana record berada di antara penyimpanan dan aplikasi yang digunakan dalam mode client-server, yaitu saat server database Anda berada di lokasi yang jauh.
Ketika aplikasi klien meminta catatan, OrientDB memeriksa hal-hal berikut -
Jika transaksi telah dimulai, maka transaksi mencari catatan yang diubah di dalam transaksi dan mengembalikannya jika ditemukan.
Jika cache lokal diaktifkan dan berisi rekaman yang diminta, maka kembalikan.
Pada titik ini, jika record tidak ada dalam cache, maka akan memintanya ke Server melalui panggilan TCP / IP.
Di server, jika cache lokal diaktifkan dan berisi rekaman yang diminta, maka kembalikan.
Pada titik ini, masih catatan tidak di-cache di server, lalu memintanya ke Penyimpanan (disk, memori).
OrientDB menggunakan framework Java Logging yang dibundel dengan Java Virtual Machine. Format log default OrientDB dikelola olehOLogFormatter kelas.
Pernyataan berikut adalah sintaks dasar dari perintah logging.
<date> <level> <message> [<requester>]
Berikut adalah detail tentang opsi dalam sintaks di atas.
<date> - Ini adalah tanggal log dalam format berikut: tttt-BB-hh JJ: mm: dd: SSS.
<level> - Ini adalah level logging sebagai output 5 karakter.
<message> - Ini adalah teks log, dapat berukuran berapa pun.
[<class>] - Ini adalah kelas Java yang dicatat (opsional).
Level yang didukung adalah level yang ada di kelas JRE java.util.logging.Level. Mereka adalah -
- SEVERE (nilai tertinggi)
- WARNING
- INFO
- CONFIG
- FINE
- FINER
- TERBAIK (nilai terendah)
Secara default, dua penebang diinstal -
Console, sebagai output dari shell / command prompt yang memulai aplikasi / server. Dapat diubah dengan mengatur variabel 'log.console.level'.
File, sebagai output ke file log. Dapat diubah dengan mengatur 'log.file.level'.
Konfigurasi Logging
Strategi dan kebijakan logging dapat dikonfigurasi menggunakan file yang mengikuti Java.
syntax - Konfigurasi Java Logging.
Contoh
Salin konten berikut dari orientdb-server-log.properties file dan taruh di file $ORIENTDB_HOME/config mengajukan.
# 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
Untuk memberi tahu JVM di mana file properti ditempatkan, Anda perlu menyetel "java.util.logging.config.file"properti sistem untuk itu. Misalnya, gunakan perintah berikut -
$ java -Djava.util.logging.config.file=mylog.properties ...
Atur tingkat logging
Untuk mengubah tingkat logging tanpa mengubah konfigurasi logging, cukup setel "log.console.level"dan"log.file.level"variabel sistem ke tingkat yang diminta.
Masuk saat Startup
Berikut adalah prosedur untuk mengatur logging pada tingkat permulaan dengan berbagai cara.
Di Konfigurasi Server
Buka file orientdb-server-config.xml dan tambahkan atau perbarui baris ini di akhir file di dalam bagian <properties> -
<entry value = "fine" name = "log.console.level" />
<entry value = "fine" name = "log.file.level" />
Di Server.sh (atau .bat) Script
Setel properti sistem "log.console.level"dan"log.file.level"ke level yang Anda inginkan menggunakan parameter -D java.
$ java -Dlog.console.level = FINE ...
Masuk pada Run-time
Berikut adalah prosedur untuk mengatur logging pada tingkat permulaan dengan berbagai cara.
Dengan Menggunakan Kode Java
Variabel sistem dapat disetel saat memulai menggunakan System.setProperty () API. Potongan kode berikut adalah sintaks untuk menyetel tingkat logging menggunakan kode Java.
public void main(String[] args){
System.setProperty("log.console.level", "FINE");
...
}
Di Server Jarak Jauh
Jalankan HTTP POST terhadap URL: /server/log.<type>/ <level>, di mana -
- <type> bisa berupa "konsol" atau "file"
- <level> adalah salah satu level yang didukung
Contoh
Contoh berikut menggunakan cURLuntuk menjalankan perintah HTTP POST terhadap OrientDB Server. Pengguna dan kata sandi "root" server digunakan, ganti dengan kata sandi Anda sendiri.
Aktifkan tingkat penelusuran terbaik ke konsol -
curl -u root:root -X POST http://localhost:2480/server/log.console/FINEST
Aktifkan tingkat penelusuran terbaik ke file -
curl -u root:root -X POST http://localhost:2480/server/log.file/FINEST
Di bab ini, Anda bisa mendapatkan beberapa tip umum tentang cara mengoptimalkan aplikasi Anda yang menggunakan OrientDB. Ada tiga cara untuk meningkatkan kinerja untuk tipe database yang berbeda.
Document Database Performance Tuning - Menggunakan teknik yang membantu menghindari pembuatan dokumen untuk setiap dokumen baru.
Object Database Performance Tuning - Menggunakan teknik umum untuk meningkatkan kinerja.
Distributed Configuration Tuning - Menggunakan metodologi yang berbeda untuk meningkatkan kinerja dalam konfigurasi terdistribusi.
Anda dapat mencapai penyetelan kinerja umum dengan mengubah pengaturan Memori, JVM, dan koneksi Jarak jauh.
Pengaturan Memori
Ada berbagai strategi dalam pengaturan memori untuk meningkatkan kinerja.
Server dan Pengaturan Tertanam
Pengaturan ini berlaku untuk komponen Server dan JVM di mana aplikasi Java dijalankan menggunakan OrientDB dalam mode Tertanam, dengan langsung menggunakan plocal.
Hal terpenting dalam penyetelan adalah memastikan pengaturan memori sudah benar. Apa yang dapat membuat perbedaan nyata adalah keseimbangan yang tepat antara heap dan memori virtual yang digunakan oleh Pemetaan Memori, terutama pada set data besar (GB, TB, dan lainnya) di mana struktur cache inmemori dihitung lebih sedikit daripada IO mentah.
Misalnya, jika Anda dapat menetapkan maksimum 8GB ke proses Java, biasanya lebih baik menetapkan heap kecil dan buffer cache disk yang besar (memori off-heap).
Coba perintah berikut untuk menambah memori heap.
java -Xmx800m -Dstorage.diskCache.bufferSize=7200 ...
Itu storage.diskCache.bufferSize pengaturan (dengan penyimpanan "lokal" yang lama file.mmap.maxMemory) dalam MB dan memberi tahu berapa banyak memori yang akan digunakan untuk komponen Disk Cache. Secara default adalah 4GB.
NOTE - Jika jumlah maksimum heap dan buffer cache disk terlalu tinggi, ini dapat menyebabkan OS bertukar dengan sangat lambat.
Pengaturan JVM
Pengaturan JVM dikodekan dalam file batch server.sh (dan server.bat). Anda dapat mengubahnya untuk menyetel JVM sesuai dengan penggunaan dan pengaturan hw / sw Anda. Tambahkan baris berikut di file server.bat.
-server -XX:+PerfDisableSharedMem
Pengaturan ini akan menonaktifkan penulisan informasi debug tentang JVM. Jika Anda perlu membuat profil JVM, hapus saja pengaturan ini.
Koneksi Jarak Jauh
Ada banyak cara untuk meningkatkan kinerja saat Anda mengakses database menggunakan koneksi jarak jauh.
Strategi Pengambilan
Saat Anda bekerja dengan database jarak jauh, Anda harus memperhatikan strategi pengambilan yang digunakan. Secara default, klien OrientDB hanya memuat catatan yang terdapat dalam kumpulan hasil. Misalnya, jika kueri mengembalikan 100 elemen, tetapi jika Anda menyilangkan elemen ini dari klien, maka klien OrientDB dengan malas memuat elemen dengan satu lagi panggilan jaringan ke server untuk setiap rekaman yang terlewat.
Pool Koneksi Jaringan
Setiap klien, secara default, hanya menggunakan satu koneksi jaringan untuk berbicara dengan server. Beberapa utas di klien yang sama berbagi kumpulan koneksi jaringan yang sama.
Jika Anda memiliki banyak utas, mungkin ada kemacetan karena banyak waktu dihabiskan untuk menunggu koneksi jaringan gratis. Inilah alasan mengapa penting untuk mengkonfigurasi pool koneksi jaringan.
Konfigurasinya sangat sederhana, hanya 2 parameter -
minPool- Ini adalah ukuran awal dari kumpulan koneksi. Nilai default dikonfigurasi sebagai parameter global "client.channel.minPool".
maxPool- Ini adalah ukuran maksimum yang dapat dicapai oleh kumpulan koneksi. Nilai default dikonfigurasi sebagai parameter global "client.channel.maxPool".
Jika semua koneksi pool sibuk, maka thread klien akan menunggu koneksi gratis pertama.
Contoh perintah konfigurasi dengan menggunakan properti database.
database = new ODatabaseDocumentTx("remote:localhost/demo");
database.setProperty("minPool", 2);
database.setProperty("maxPool", 5);
database.open("admin", "admin");
Pengaturan Konfigurasi Terdistribusi
Ada banyak cara untuk meningkatkan kinerja pada konfigurasi terdistribusi.
Gunakan Transaksi
Bahkan saat Anda memperbarui grafik, Anda harus selalu bekerja dalam transaksi. OrientDB memungkinkan Anda untuk bekerja di luarnya. Kasus umum adalah kueri hanya-baca atau operasi besar dan tidak bersamaan dapat dipulihkan jika terjadi kegagalan. Saat Anda menjalankan konfigurasi terdistribusi, menggunakan transaksi membantu mengurangi latensi. Ini karena operasi terdistribusi hanya terjadi pada waktu komit. Mendistribusikan satu operasi besar jauh lebih efisien daripada mentransfer beberapa operasi kecil, karena latensi.
Replikasi vs Sharding
Konfigurasi terdistribusi OrientDB diatur ke replikasi penuh. Memiliki banyak node dengan salinan database yang sama penting untuk pembacaan skala. Faktanya, setiap server independen dalam menjalankan pembacaan dan kueri. Jika Anda memiliki 10 node server, throughput baca adalah 10x.
Dengan menulis, itu sebaliknya: memiliki banyak node dengan replikasi penuh memperlambat operasi, jika replikasi itu sinkron. Dalam kasus ini, sharding database di beberapa node memungkinkan Anda meningkatkan skala penulisan, karena hanya subset node yang terlibat dalam penulisan. Selain itu, Anda dapat memiliki database yang lebih besar dari satu node server HD.
Tingkatkan skala pada Penulisan
Jika Anda memiliki jaringan yang lambat dan memiliki replikasi sinkronis (default), Anda dapat membayar biaya latensi. Faktanya ketika OrientDB berjalan serentak, itu menunggu setidaknya untuk filewriteQuorum. Ini berarti jika writeQuorum adalah 3, dan Anda memiliki 5 node, node server koordinator (tempat operasi terdistribusi dimulai) harus menunggu jawaban dari setidaknya 3 node untuk memberikan jawaban kepada klien.
Untuk menjaga konsistensi, writeQuorum harus disetel ke mayoritas. Jika Anda memiliki 5 node, mayoritas adalah 3. Dengan 4 node, itu masih 3. Mengatur writeQuorum ke 3 daripada 4 atau 5 memungkinkan untuk mengurangi biaya latensi dan tetap menjaga konsistensi.
Replikasi Asinkron
Untuk mempercepat, Anda dapat mengatur Replikasi Asinkron untuk menghilangkan hambatan latensi. Dalam kasus ini, node server koordinator menjalankan operasi secara lokal dan memberikan jawaban kepada klien. Seluruh replikasi akan berada di latar belakang. Jika kuorum tidak tercapai, perubahan akan dibatalkan secara transparan.
Meningkatkan Skala Baca
Jika Anda sudah menyetel writeQuorum ke sebagian besar node, Anda dapat meninggalkan file readQuorumke 1 (default). Ini mempercepat semua pembacaan.
Saat mengupgrade, Anda harus mempertimbangkan nomor versi dan formatnya. Ada tiga jenis format - MAYOR, MINOR, PATCH.
MAJOR versi memerlukan perubahan API yang tidak kompatibel.
MINOR versi memerlukan fungsionalitas dengan cara yang kompatibel dengan versi sebelumnya.
PTCH versi memerlukan perbaikan bug yang kompatibel dengan versi sebelumnya.
Untuk menyinkronkan antara versi minor dan mayor, Anda mungkin perlu mengekspor dan mengimpor database. Terkadang Anda banyak yang perlu memigrasi database dari LOKAL ke PLOCAL dan perlu memigrasi grafik ke RidBag.
Bermigrasi dari Mesin Penyimpanan LOCAL ke PLOCAL
Mulai dari versi 1.5.x OrientDB hadir dengan mesin penyimpanan baru: PLOCAL (Paginated LOCAL). Ini persisten seperti LOKAL, tetapi menyimpan informasi dengan cara yang berbeda. Poin-poin berikut menunjukkan perbandingan antara PLOCAL dan LOCAL -
Dalam PLOCAL Records disimpan dalam file cluster, sedangkan dengan LOCAL dipisahkan antara cluster dan data-segment.
PLOCAL lebih tahan lama daripada LOCAL karena mode append-on-write.
PLOCAL memiliki kunci pertentangan kecil pada penulisan, yang berarti lebih banyak konkurensi.
PLOCAL tidak menggunakan teknik Pemetaan Memori (MMap) sehingga perilakunya lebih "dapat diprediksi".
Untuk memigrasi penyimpanan LOKAL Anda ke PLOCAL baru, Anda perlu mengekspor dan mengimpor ulang database menggunakan PLOCAL sebagai mesin penyimpanan. Berikut prosedurnya.
Step 1 - Buka shell baru (Linux / Mac) atau Command Prompt (Windows).
Step 2- Ekspor database menggunakan konsol. Ikuti perintah yang diberikan untuk mengekspor demo database kedemo.json.gzip mengajukan.
$ 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 - Di sistem file lokal, buat database baru menggunakan mesin "plocal" -
orientdb> CREATE DATABASE plocal:/temp/newdb admin admin plocal graph
Step 4 - Impor database lama ke yang baru.
orientdb> IMPORT DATABASE /temp/demo.json.gzip -preserveClusterIDs=true
orientdb> QUIT
Jika Anda mengakses database di JVM yang sama, ingatlah untuk mengubah URL dari "local:" menjadi "plocal:"
Migrasikan Grafik ke RidBag
Mulai OrientDB 1.7, RidBag adalah kumpulan default yang mengelola hubungan ketetanggaan dalam grafik. Meskipun database lama yang dikelola oleh MVRB-Tree sepenuhnya kompatibel, Anda dapat memperbarui database Anda ke format yang lebih baru.
Anda dapat meningkatkan grafik Anda melalui konsol atau menggunakan ORidBagMigration kelas.
Hubungkan ke database CONNECT plocal:databases/<graphdb-name>
Jalankan perintah grafik peningkatan
Seperti RDBMS, OrientDB juga menyediakan keamanan berdasarkan konsep, pengguna, dan peran terkenal. Setiap database memiliki penggunanya sendiri dan setiap pengguna memiliki satu atau lebih peran. Peran adalah kombinasi mode kerja dan serangkaian izin.
Pengguna
Secara default OrientDB mempertahankan tiga pengguna berbeda untuk semua database di server -
Admin - Pengguna ini memiliki akses ke semua fungsi di database tanpa batasan.
Reader- Pengguna ini adalah pengguna hanya-baca. Pembaca bisa membuat kueri rekaman apa pun dalam database, tapi tidak bisa mengubah atau menghapusnya. Itu tidak memiliki akses ke informasi internal, seperti pengguna dan peran itu sendiri.
Writer - Pengguna ini sama dengan pembaca pengguna, tetapi juga dapat membuat, memperbarui, dan menghapus catatan.
Bekerja dengan Pengguna
Saat Anda tersambung ke database, Anda bisa membuat kueri pengguna saat ini di database dengan menggunakan SELECT kueri di OUser kelas.
orientdb> SELECT RID, name, status FROM OUser
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
---+--------+--------+--------
# | @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).
Membuat Pengguna Baru
Untuk membuat pengguna baru, gunakan perintah INSERT. Ingat, dalam melakukannya, Anda harus mengatur status menjadi AKTIF dan memberinya peran yang valid.
orientdb> INSERT INTO OUser SET
name = 'jay',
password = 'JaY',
status = 'ACTIVE',
roles = (SELECT FROM ORole WHERE name = 'reader')
Memperbarui Pengguna
Anda dapat mengubah nama pengguna dengan pernyataan UPDATE.
orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'
Dengan cara yang sama, Anda juga dapat mengubah kata sandi untuk pengguna.
orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'
OrientDB menyimpan kata sandi dalam format hash. PemicunyaOUserTrigger mengenkripsi kata sandi secara transparan sebelum menyimpan catatan.
Menonaktifkan Pengguna
Untuk menonaktifkan pengguna, gunakan UPDATE untuk mengalihkan statusnya dari AKTIF menjadi DITANGGUHKAN. Misalnya, jika Anda ingin menonaktifkan semua pengguna kecuali admin, gunakan perintah berikut -
orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'
Peran
Peran menentukan operasi apa yang dapat dilakukan pengguna terhadap sumber daya. Terutama, keputusan ini tergantung pada mode kerja dan aturannya. Aturan itu sendiri bekerja secara berbeda, tergantung pada mode kerja.
Bekerja dengan Peran
Saat Anda tersambung ke database, Anda bisa menanyakan peran saat ini di database menggunakan SELECT kueri di ORole kelas.
orientdb> SELECT RID, mode, name, rules FROM ORole
Jika query di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
--+------+----+--------+-------------------------------------------------------
# |@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).
Membuat Peran Baru
Untuk membuat peran baru, gunakan pernyataan INSERT.
orientdb> INSERT INTO ORole SET name = 'developer', mode = 0
Bekerja dengan Mode
Di mana aturan menentukan apa yang dapat dilakukan pengguna yang termasuk dalam peran tertentu pada database, mode kerja menentukan bagaimana OrientDB menafsirkan aturan ini. Ada dua jenis mode kerja, yang ditentukan oleh 1 dan 0.
Allow All But (Rules)- Secara default ini adalah mode pengguna super. Tentukan pengecualian untuk ini menggunakan aturan. Jika OrientDB tidak menemukan aturan untuk sumber daya yang diminta, maka memungkinkan pengguna untuk menjalankan operasi. Gunakan mode ini terutama untuk power user dan administrator. Admin peran default menggunakan mode ini secara default dan tidak memiliki aturan pengecualian. Ini ditulis sebagai 1 dalam database.
Deny All But (Rules)- Secara default, mode ini tidak mengizinkan apa pun. Tentukan pengecualian untuk ini menggunakan aturan. Jika OrientDB menemukan aturan untuk sumber daya yang diminta, maka itu memungkinkan pengguna untuk menjalankan operasi. Gunakan mode ini sebagai default untuk semua pengguna klasik. Peran default, pembaca dan penulis, gunakan mode ini. Ini ditulis sebagai 0 dalam database.
OrientDB menyediakan UI web untuk menjalankan operasi database melalui GUI. Bab ini menjelaskan opsi berbeda yang tersedia di OrientDB.
Beranda Studio
Studio adalah antarmuka web untuk administrasi OrientDB yang disertakan bersama distribusi OrientDB.
Pertama, Anda perlu memulai server OrientDB menggunakan perintah berikut.
$ server.sh
Jika Anda menjalankan OrientDB di mesin Anda, antarmuka web dapat diakses melalui URL -
http://localhost:2480
Jika perintah berhasil dijalankan, berikut akan menjadi output di layar.
Hubungkan ke Database yang Ada
Untuk login, pilih database dari daftar database dan gunakan setiap pengguna database. Secara default (nama pengguna / kata sandi)reader/reader dapat membaca catatan dari database, writer/writer dapat membaca, membuat, memperbarui dan menghapus catatan, sementara admin/admin memiliki semua hak.
Jatuhkan Database yang Ada
Pilih database dari daftar database dan klik ikon tempat sampah. Studio akan membuka popup konfirmasi di mana Anda harus memasukkan Pengguna Server dan Kata Sandi Server.
Kemudian klik tombol "Jatuhkan database". Anda dapat menemukan kredensial server di$ORIENTDB_HOME/config/orientdb-server-config.xml mengajukan.
<users>
<user name = "root" password = "pwd" resources = "*" />
</users>
Buat Database Baru
Untuk membuat database baru, klik tombol "New DB" dari homepage.
Informasi berikut diperlukan untuk membuat database baru -
- Nama database
- Jenis database (Dokumen / Grafik)
- Jenis penyimpanan (plocal / memory)
- Pengguna server
- Password server
Anda dapat menemukan kredensial server di $ORIENTDB_HOME/config/orientdbserver-config.xml mengajukan.
<users>
<user name = "root" password = "pwd" resources = "*" />
</users>
Setelah dibuat, Studio akan secara otomatis masuk ke database baru.
Jalankan Query
Studio mendukung pengenalan otomatis bahasa yang Anda gunakan antara yang didukung: SQL dan Gremlin. Saat menulis, gunakan fitur pelengkapan otomatis dengan menekanCtrl + Space.
Pintasan berikut tersedia di editor kueri -
Ctrl + Return - Untuk menjalankan kueri atau cukup klik Run tombol.
Ctrl/Cmd + Z - Untuk membatalkan perubahan.
Ctrl/Cmd + Shift + Z - Untuk mengulangi perubahan.
Ctrl/Cmd + F - Untuk mencari di editor.
Ctrl/Cmd + / - Untuk mengganti komentar.
Tangkapan layar berikut menunjukkan cara menjalankan kueri.
Dengan mengklik salah satu @rid nilai dalam set-hasil, Anda akan masuk ke mode edit dokumen jika rekamannya adalah Dokumen, jika tidak, Anda akan masuk ke edit simpul.
Anda dapat menandai kueri Anda dengan mengklik ikon bintang di set-hasil atau di editor. Untuk menelusuri kueri yang dibookmark, klikBookmarkstombol. Studio akan membuka daftar bookmark di sebelah kiri, tempat Anda dapat mengedit / menghapus atau menjalankan kembali kueri.
Studio menyimpan kueri yang dieksekusi di Penyimpanan Lokal browser. Di pengaturan kueri, Anda dapat mengonfigurasi berapa banyak kueri yang akan disimpan studio dalam sejarah. Anda juga dapat mencari kueri yang dieksekusi sebelumnya, menghapus semua kueri dari riwayat, atau menghapus satu kueri.
Edit Vertex
Untuk mengedit puncak grafik, buka bagian Grafik. Kemudian jalankan kueri berikut.
Select From Customer
Saat berhasil menjalankan kueri, berikut adalah tangkapan layar keluaran. Pilih titik tertentu di kanvas grafik untuk diedit.
Pilih simbol edit pada simpul tertentu. Anda akan mendapatkan layar berikut yang berisi opsi untuk mengedit simpul.
Manajer Skema
OrientDB dapat bekerja dalam mode tanpa skema, mode skema, atau campuran keduanya. Di sini kita akan membahas mode skema. Klik pada bagian Schema di bagian atas UI web. Anda akan mendapatkan tangkapan layar berikut.
Buat Kelas Baru
Untuk membuat Kelas baru, cukup klik New Classtombol. Screenshot berikut akan muncul. Anda harus memberikan informasi berikut seperti yang ditunjukkan pada tangkapan layar untuk membuat kelas baru.
Lihat Semua Indeks
Ketika Anda ingin memiliki gambaran umum dari semua indeks yang dibuat di database Anda, cukup klik tombol he all indexes di UI Skema. Ini akan memberikan akses cepat ke beberapa informasi tentang indeks (nama, jenis, properti, dll.) Dan Anda dapat melepaskan atau membangunnya kembali dari sini.
Edit Kelas
Klik kelas mana saja di bagian skema, Anda akan mendapatkan tangkapan layar berikut.
Saat mengedit kelas, Anda dapat menambahkan properti atau menambahkan indeks baru.
Tambahkan Properti
Klik tombol Properti Baru untuk menambahkan properti. Anda akan mendapatkan tangkapan layar berikut.
Anda harus memberikan detail berikut seperti yang ditunjukkan pada tangkapan layar untuk menambahkan properti.
Tambahkan Indeks
Klik tombol Indeks Baru. Anda akan mendapatkan tangkapan layar berikut. Anda harus memberikan detail berikut seperti yang ditunjukkan pada tangkapan layar untuk menambahkan indeks.
Editor Grafik
Klik bagian grafik. Anda tidak hanya dapat memvisualisasikan data Anda dalam gaya grafik tetapi Anda juga dapat berinteraksi dengan grafik dan memodifikasinya.
Untuk mengisi area grafik, ketikkan kueri di editor kueri atau gunakan fungsionalitas Kirim ke Grafik dari Jelajahi UI.
Tambahkan Simpul
Untuk menambahkan Vertex baru di Database Grafik Anda dan di area Kanvas Grafik, Anda harus menekan tombol Add Vertex. Operasi ini dilakukan dalam dua langkah.
Pada langkah pertama, Anda harus memilih kelas untuk Vertex baru lalu klik Berikutnya.
Pada langkah kedua, Anda harus memasukkan nilai bidang dari simpul baru. Anda juga dapat menambahkan bidang khusus karena OrientDB mendukung mode tanpa skema. Untuk membuat simpul baru tetap ada, klik 'Simpan perubahan' dan simpul akan disimpan ke dalam database dan ditambahkan ke area kanvas.
Hapus Simpul
Buka menu melingkar dengan mengklik Vertex yang ingin Anda hapus. Buka submenu dengan mengarahkan mouse ke entri menu lainnya (...) lalu klik ikon tempat sampah.
Hapus Vertices dari Canvas
Buka menu melingkar, buka sub menu dengan mengarahkan mouse ke entri menu more (...) lalu klik icon penghapus.
Periksa Vertices
Jika Anda ingin melihat sekilas properti Vertex, klik ikon mata.
Keamanan
Studio 2.0 menyertakan Manajemen Keamanan baru, tempat Anda dapat mengelola Pengguna dan Peran dengan cara grafis.
Pengguna
Anda dapat melakukan tindakan berikut untuk mengelola pengguna database -
- Cari Pengguna
- Tambahkan Pengguna
- Hapus Pengguna
- Edit Pengguna: peran dapat diedit in-line, untuk nama, status dan kata sandi klik Edit tombol
Tambahkan Pengguna
Untuk menambahkan Pengguna baru, klik Add User , lengkapi informasi untuk pengguna baru (nama, kata sandi, status, peran) dan kemudian simpan untuk menambahkan pengguna baru ke database.
Peran
Anda dapat melakukan tindakan berikut untuk mengelola peran database -
- Peran Pencarian
- Tambahkan Peran
- Hapus Peran
- Edit Peran
Tambahkan Peran
Untuk menambahkan Pengguna baru, klik Add Role tombol, lengkapi informasi untuk peran baru (nama, peran induk, mode) dan kemudian simpan untuk menambahkan peran baru ke database.
Tambahkan Aturan ke Peran
Untuk menambahkan aturan keamanan baru untuk peran yang dipilih, klik Add Ruletombol. Ini akan menanyakan string sumber daya yang ingin Anda amankan. Kemudian Anda dapat mengkonfigurasi izin CRUD pada sumber daya yang baru dibuat.
Mirip dengan RDBMS, OrientDB mendukung JDBC. Untuk ini, pertama-tama kita perlu mengkonfigurasi lingkungan untuk pemrograman JDBC. Berikut adalah prosedur untuk membuat koneksi antara aplikasi dan database Anda.
Pertama, kita perlu mengunduh Driver JDBC. Kunjungi tautan berikuthttps://code.google.com/archive/p/orient/downloads untuk mengunduh OrientDB-JDBC.
Berikut adalah lima langkah dasar untuk mencapai konektivitas OrientDB-jdbc.
- Muat driver JDBC
- Buat Koneksi
- Buat pernyataan
- Jalankan pernyataan
- Tutup koneksi
Contoh
Coba contoh berikut untuk memahami konektivitas OrientDB-JDBC. Mari kita anggap kita memiliki tabel karyawan yang berisi bidang berikut dan tipenya.
Sr.No. | Nama Bidang | Tipe |
---|---|---|
1 | Indo | Bilangan bulat |
2 | Nama | Tali |
3 | Gaji | Bilangan bulat |
4 | Tanggal bergabung | Tanggal |
Anda dapat membuat Skema (tabel) dengan menjalankan perintah berikut.
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
Setelah menjalankan semua perintah, Anda akan mendapatkan tabel Karyawan dengan kolom berikut, nama karyawan dengan kolom id, usia, dan join_date.
Simpan kode berikut ke OrientJdbcDemo.java mengajukan.
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();
}
}
Perintah berikut digunakan untuk mengkompilasi program di atas.
$ javac –classpath:.:orientdb-jdbc-1.0-SNAPSHOT.jar OrientJdbcDemo.java $ java –classpath:.:orientdb-jdbc-1.0-SNAPSHOT.jar OrientJdbcDemo
Jika perintah di atas berhasil dijalankan, Anda akan mendapatkan output berikut.
Records Successfully Inserted
Driver OrientDB untuk Python menggunakan protokol biner. PyOrient adalah nama proyek hub git yang membantu menghubungkan OrientDB dengan Python. Ia bekerja dengan OrientDB versi 1.7 dan yang lebih baru.
Perintah berikut digunakan untuk menginstal PyOrient.
pip install pyorient
Anda dapat menggunakan file script bernama demo.py untuk melakukan tugas-tugas berikut -
Membuat contoh klien berarti membuat koneksi.
Buat DB bernama DB_Demo.
Buka DB bernama DB_Demo.
Buat kelas my_class.
Buat id properti, dan nama.
Masukkan catatan ke kelas saya.
//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')")
Jalankan skrip di atas menggunakan perintah berikut.
$ python demo.py