OrientDB - Hızlı Kılavuz

OrientDB, Açık Kaynaklı bir NoSQL Veritabanı Yönetim Sistemidir. NoSQL DatabaseBelge verileri veya grafik verileri gibi tablo verileri dışındaki verilere atıfta bulunan NO ilişkisini veya ilişkisel olmayan verileri depolamak ve almak için bir mekanizma sağlar. NoSQL veritabanları, Büyük Veri ve gerçek zamanlı web uygulamalarında giderek daha fazla kullanılmaktadır. NoSQL sistemleri, bazen SQL benzeri sorgu dillerini destekleyebileceklerini vurgulamak için "Yalnızca SQL Değil" olarak da adlandırılır.

OrientDB ayrıca NoSQL ailesine aittir. OrientDB, açık kaynak Apache 2 lisansına sahip tek bir üründe Documents esnekliğine sahip ikinci nesil bir Dağıtılmış Grafik Veritabanıdır. Piyasada OrientDB'den önce MongoDB olan birkaç NoSQL veritabanı vardı.

MongoDB ve OrientDB

MongoDB ve OrientDB birçok ortak özellik içerir ancak motorlar temelde farklıdır. MongoDB saf Belge veritabanıdır ve OrientDB grafik motorlu karma bir Belgedir.

Özellikleri MongoDB OrientDB
Relationships Varlıklar arasında ilişki oluşturmak için RDBMS JOINS'i kullanır. Yüksek çalışma süresi maliyetine sahiptir ve veritabanı ölçeği arttığında ölçeklenmez. İlişkisel veritabanı gibi belgeleri yerleştirir ve bağlar. Grafik veritabanı dünyasından alınan doğrudan, süper hızlı bağlantıları kullanır.
Fetch Plan Maliyetli JOIN işlemleri. Birbirine bağlı belgelerle kolayca eksiksiz bir grafik döndürür.
Transactions ACID işlemlerini desteklemez, ancak atomik işlemleri destekler. ACID işlemlerini ve atomik işlemleri destekler.
Query language JSON'a dayalı kendi dili vardır. Sorgu dili SQL üzerine inşa edilmiştir.
Indexes Tüm dizinler için B-Ağacı algoritmasını kullanır. Kullanıcının en iyi performansı elde edebilmesi için üç farklı indeksleme algoritmasını destekler.
Storage engine Bellek haritalama tekniğini kullanır. Depolama motoru adını LOCAL ve PLOCAL kullanır.

OrientDB, grafiklerin gücünü ve belgelerin esnekliğini ölçeklenebilir yüksek performanslı bir operasyonel veritabanında bir araya getiren ilk Çok Modelli açık kaynaklı NoSQL DBMS'dir.

OrientDB kurulum dosyası iki sürümde mevcuttur -

  • Community Edition - OrientDB topluluk sürümü, Apache tarafından 0.2 lisansı altında açık kaynak olarak yayınlandı

  • Enterprise Edition- OrientDB kurumsal sürümü, topluluk sürümüne dayanan özel bir yazılım olarak piyasaya sürüldü. Topluluk baskısının bir uzantısı olarak hizmet eder.

Bu bölüm, açık kaynak olduğu için OrientDB topluluk sürümünün kurulum prosedürünü açıklamaktadır.

Önkoşullar

Hem topluluk hem de Kurumsal sürümler, Java Sanal Makinesi'ni (JVM) uygulayan herhangi bir İşletim sisteminde çalışabilir. OrientDB, Java'nın 1.7 veya sonraki bir sürümünü gerektirir.

OrientDB'yi sisteminize indirmek ve kurmak için aşağıdaki adımları kullanın.

Adım 1 - OrientDB İkili Kurulum Dosyasını İndirin

OrientDB, veritabanını sisteminize kurmak için yerleşik kurulum dosyasıyla birlikte gelir. Farklı işletim sistemleri için önceden derlenmiş farklı ikili paketler (taranmış veya sıkıştırılmış paketler) sağlar. OrientDB dosyalarını OrientDB İndir linkinden indirebilirsiniz .

Aşağıdaki ekran görüntüsü OrientDB'nin indirme sayfasını göstermektedir. Sıkıştırılmış veya taranmış dosyayı, uygun işletim sistemi simgesine tıklayarak indirebilirsiniz.

İndirdiğinizde, ikili paketi alacaksınız. Downloads Klasör.

Adım 2 - OrientDB'yi Çıkarın ve Kurun

Aşağıda, farklı işletim sistemleri için OrientDB'yi çıkarma ve yükleme prosedürü açıklanmaktadır.

Linux'ta

İndirdikten sonra alacaksınız orientdb-community-2.1.9.tar.gz dosyanda DownloadsKlasör. Tarredilen dosyayı çıkarmak için aşağıdaki komutu kullanabilirsiniz.

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

Tüm OrientDB kitaplık dosyalarını şuradan taşımak için aşağıdaki komutu kullanabilirsiniz: orientdbcommunity-2.1.9 to /opt/orientdb/dizin. Burada süper kullanıcı komutunu (sudo) kullanıyoruz, bu nedenle aşağıdaki komutu yürütmek için süper kullanıcı şifresi sağlamanız gerekiyor.

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

Kayıt olmak için aşağıdaki komutları kullanabilirsiniz. orientdb komutu ve Orient sunucusu.

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

Windows'ta

  • İndirdikten sonra alacaksınız orientdb-community-2.1.9.zip dosyanda DownloadsKlasör. Zip dosyasını zip çıkarıcı kullanarak çıkartın.

  • Çıkarılan klasörü şuraya taşıyın: C:\ dizin.

  • Aşağıdaki verilen değerlerle iki çevresel değişken ORIENTDB_HOME ve PATH değişkenleri oluşturun.

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

Adım 3 - OrientDB Sunucusunu Hizmet Olarak Yapılandırma

Yukarıdaki adımları izleyerek OrientDB'nin Masaüstü sürümünü kullanabilirsiniz. OrientDB veritabanı sunucusunu aşağıdaki adımları kullanarak servis olarak başlatabilirsiniz. Prosedür, işletim sisteminize bağlı olarak farklılık gösterir.

Linux'ta

OrientDB adlı bir komut dosyası sağlar orientdb.shVeritabanını bir arka plan programı olarak çalıştırmak için. OrientDB kurulum dizininizin $ ORIENTDB_HOME / bin / orientdb.sh olan bin / dizininde bulabilirsiniz.

Komut dosyasını çalıştırmadan önce, düzenlemeniz gerekir orientdb.shiki değişkeni tanımlamak için dosya. BiriORIENTDB_DIR kurulum dizininin yolunu tanımlayan (/opt/orientdb) ve ikincisi ORIENTDB_USER OrientDB'yi çalıştırmak istediğiniz kullanıcı adını aşağıdaki gibi tanımlar.

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

Kopyalamak için aşağıdaki komutu kullanın orientdb.sh dosyalamak /etc/init.d/betiği başlatmak ve çalıştırmak için dizin. Burada süper kullanıcı komutunu (sudo) kullanıyoruz, bu nedenle aşağıdaki komutu yürütmek için süper kullanıcı şifresi sağlamanız gerekiyor.

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

Console.sh dosyasını OrientDB kurulum dizininden kopyalamak için aşağıdaki komutu kullanın. $ORIENTDB_HOME/bin sistem bin dizinine /usr/bin Orient DB'nin konsoluna erişmek için.

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

ORIENTDB veritabanı sunucusunu hizmet olarak başlatmak için aşağıdaki komutu kullanın. Burada, sunucuyu başlatmak için orientdb.sh dosyasında belirttiğiniz ilgili kullanıcının şifresini girmeniz gerekir.

$ service orientdb start

OrientDB sunucu arka plan programının hangi PID'de çalıştığını öğrenmek için aşağıdaki komutu kullanın.

$ service orientdb status

OrientDB sunucu arka plan programını durdurmak için aşağıdaki komutu kullanın. Burada, sunucuyu durdurmak için orientdb.sh dosyasında belirttiğiniz ilgili kullanıcının şifresini girmeniz gerekir.

$ service orientdb stop

Windows'ta

OrientDB bir sunucu uygulamasıdır, bu nedenle Java sanal makine sürecini kapatmaya başlamadan önce birkaç görevi yerine getirmesi gerekir. OrientDB sunucusunu manuel olarak kapatmak istiyorsanız,shutdown.batdosya. Ancak, sistem yukarıdaki komut dosyasını çalıştırmadan aniden kapandığında sunucu örnekleri doğru şekilde durmaz. İşletim sistemi tarafından bir dizi belirtilen sinyalle kontrol edilen programlar denirservices Windows'ta.

Kullanmak zorundayız Apache Common DaemonBu, Windows kullanıcılarının Java uygulamalarını Windows hizmeti olarak sarmalarına izin verir. Apache ortak arka plan programını indirme ve kaydettirme prosedürü aşağıdadır.

  • Windows için Apache Common Daemons için aşağıdaki bağlantıya tıklayın .

  • Tıklamak common-daemon-1.0.15-bin-windows indirmek.

  • Fermuarını aç common-daemon-1.0.15-bin-windowsdizin. Çıkardıktan sonra bulacaksınprunsrv.exe ve prunmgr.exedizinin içindeki dosyalar. Bunlarda -

    • prunsrv.exe file, uygulamaları servisler olarak çalıştırmak için bir servis uygulamasıdır.

    • prunmgr.exe file, Windows hizmetlerini izlemek ve yapılandırmak için kullanılan bir uygulamadır.

  • OrientDB kurulum klasörüne gidin → yeni bir dizin oluşturun ve hizmet olarak adlandırın.

  • Kopyala prunsrv.exe ve prunmgr .exe bunu servis dizinine yapıştırın.

  • OrientDB'yi Windows hizmeti olarak yapılandırmak için, prusrv.exe'yi Windows hizmeti olarak kullanan kısa bir komut dosyası çalıştırmanız gerekir.

  • Windows Hizmetlerini tanımlamadan önce, prunsrv ve prunmgr'yi hizmetin adına göre yeniden adlandırmanız gerekir. Örneğin sırasıyla OrientDBGraph ve OrientDBGraphw için. OrientDBGraph, hizmetin adıdır.

  • Aşağıdaki komut dosyasını adlı dosyaya kopyalayın installService.bat ve içine yerleştirin %ORIENTDB_HOME%\service\ dizin.

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

Komut dosyası iki parametre gerektirir -

  • Jvm.dll dosyasının konumu, örneğin C: \ ProgramFiles \ java \ jdk1.8.0_66 \ jre \ bin \ server \ jvm.dll

  • OrientDB kurulumunun konumu, örneğin C: \ orientdb-community-2.1.9

  • Servis, OrientDBGraph.exe dosyasını (Original prunsrv) çalıştırıp üzerine çift tıkladığınızda yüklenir.

  • Hizmetleri Windows'a yüklemek için aşağıdaki komutu kullanın.

> 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

Görev Yöneticisi hizmetlerini açın, içinde kayıtlı hizmet adı bulunan aşağıdaki ekran görüntüsünü bulacaksınız.

Adım 4 - OrientDB Kurulumunu Doğrulama

Bu adım, OrientDB veritabanı sunucusu kurulumunu aşağıdaki adımları kullanarak doğrular.

  • Sunucuyu çalıştırın.
  • Konsolu çalıştırın.
  • Stüdyoyu çalıştırın.

Bu, işletim sistemine göre benzersizdir.

Linux'ta

Linux'ta OrientDB kurulumunu doğrulamak için verilen prosedürü izleyin.

Running the server - Sunucuyu başlatmak için aşağıdaki komutu kullanabilirsiniz.

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

Veya OrientDB sunucusunu UNIX arka plan programı olarak başlatmak için aşağıdaki komutu kullanabilirsiniz.

$ service orientdb start

Başarıyla kurulursa, aşağıdaki çıktıyı alacaksınız.

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

Running the console - OrientDB'yi konsol altında çalıştırmak için aşağıdaki komutu kullanabilirsiniz.

$ orientdb

Başarıyla kurulursa, aşağıdaki çıktıyı alacaksınız.

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 - Sunucuyu başlattıktan sonra aşağıdaki URL'yi kullanabilirsiniz (http://localhost:2480/) tarayıcınızda. Aşağıdaki ekran görüntüsünü alacaksınız.

Windows'ta

Windows'ta OrientDB kurulumunu doğrulamak için verilen prosedürü izleyin.

Running the server - Sunucuyu başlatmak için aşağıdaki komutu kullanabilirsiniz.

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

Başarıyla kurulursa, aşağıdaki çıktıyı alacaksınız.

.                                           
          .`        `                                  
          ,      `:.                                   
         `,`    ,:`                                    
         .,.   :,,    
		 .,,  ,,,                                      
    .    .,.:::::  ````                                 :::::::::     :::::::::    
    ,`   .::,,,,::.,,,,,,`;;                      .:    ::::::::::    :::    :::   
    `,.  ::,,,,,,,:.,,.`  `                       .:    :::      :::  :::     :::  
     ,,:,:,,,,,,,,::.   `        `         ``     .:    :::      :::  :::     :::  
      ,,:.,,,,,,,,,: `::, ,,   ::,::`   : :,::`  ::::   :::      :::  :::    :::   
       ,:,,,,,,,,,,::,:   ,,  :.    :   ::    :   .:    :::      :::  :::::::      
        :,,,,,,,,,,:,::   ,,  :      :  :     :   .:    :::      :::  :::::::::    
  `     :,,,,,,,,,,:,::,  ,, .::::::::  :     :   .:    :::      :::  :::     :::  
  `,...,,:,,,,,,,,,: .:,. ,, ,,         :     :   .:    :::      :::  :::     :::  
    .,,,,::,,,,,,,:  `: , ,,  :     `   :     :   .:    :::      :::  :::     :::  
      ...,::,,,,::.. `:  .,,  :,    :   :     :   .:    :::::::::::   :::     :::  
           ,::::,,,. `:   ,,   :::::    :     :   .:    :::::::::     ::::::::::   
           ,,:` `,,.                                   
          ,,,    .,`                                   
         ,,.     `,                                          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 - Konsol altında OrientDB'yi çalıştırmak için aşağıdaki komutu kullanabilirsiniz.

> %ORIENTDB_HOME%\bin\console.bat

Başarıyla kurulursa, aşağıdaki çıktıyı alacaksınız.

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 - Sunucuyu başlattıktan sonra aşağıdaki URL'yi kullanabilirsiniz (http://localhost:2480/) tarayıcınızda. Aşağıdaki ekran görüntüsünü alacaksınız.

OrientDB'nin ana özelliği çok modelli nesneleri desteklemesidir, yani Belge, Grafik, Anahtar / Değer ve Gerçek Nesne gibi farklı modelleri destekler. Tüm bu dört modeli desteklemek için ayrı bir API içerir.

Belge Modeli

Terminoloji Belge modeli NoSQL veritabanına aittir. Verilerin Belgelerde saklandığı ve Belgeler grubunun şu şekilde adlandırıldığı anlamına gelir:Collection. Teknik olarak belge, bir dizi anahtar / değer çifti anlamına gelir veya alanlar veya özellikler olarak da adlandırılır.

OrientDB, belgeleri saklamak, gruplamak ve analiz etmek için sınıflar, kümeler ve bağlantı gibi kavramları kullanır.

Aşağıdaki tablo, ilişkisel model, belge modeli ve OrientDB belge modeli arasındaki karşılaştırmayı göstermektedir -

İlişkisel Model Belge Modeli OrientDB Belge Modeli
Tablo Collection Class or Cluster
Row Document Document
Column Key/value pair Document field
Relationship Not available Link

Graph Model

A graph data structure is a data model that can store data in the form of Vertices (Nodes) interconnected by Edges (Arcs). The idea of OrientDB graph database came from property graph. The vertex and edge are the main artifacts of the Graph model. They contain the properties, which can make these appear similar to documents.

The following table shows a comparison between graph model, relational data model, and OrientDB graph model.

Relational Model Graph Model OrientDB Graph Model
Table Vertex and Edge Class Class that extends "V" (for Vertex) and "E" (for Edges)
Row Vertex Vertex
Column Vertex and Edge property Vertex and Edge property
Relationship Edge Edge

The Key/Value Model

The Key/Value model means that data can be stored in the form of key/value pair where the values can be of simple and complex types. It can support documents and graph elements as values.

The following table illustrates the comparison between relational model, key/value model, and OrientDB key/value model.

Relational Model Key/Value Model OrientDB Key/Value Model
Table Bucket Class or Cluster
Row Key/Value pair Document
Column Not available Document field or Vertex/Edge property
Relationship Not available Link

The Object Model

This model has been inherited by Object Oriented programming and supports Inheritance between types (sub-types extends the super-types), Polymorphism when you refer to a base class and Direct binding from/to Objects used in programming languages.

The following table illustrates the comparison between relational model, Object model, and OrientDB Object model.

Relational Model Object Model OrientDB Object Model
Table Class Class or Cluster
Row Object Document or Vertex
Column Object property Document field or Vertex/Edge property
Relationship Pointer Link

Before go ahead in detail, it is better to know the basic terminology associated with OrientDB. Following are some of the important terminologies.

Record

The smallest unit that you can load from and store in the database. Records can be stored in four types.

  • Document
  • Record Bytes
  • Vertex
  • Edge

Record ID

When OrientDB generates a record, the database server automatically assigns a unit identifier to the record, called RecordID (RID). The RID looks like #<cluster>:<position>. <cluster> means cluster identification number and the <position> means absolute position of the record in the cluster.

Documents

The Document is the most flexible record type available in OrientDB. Documents are softly typed and are defined by schema classes with defined constraint, but you can also insert the document without any schema, i.e. it supports schema-less mode too.

Documents can be easily handled by export and import in JSON format. For example, take a look at the following JSON sample document. It defines the document details.

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

RecordBytes

Record Type is the same as BLOB type in RDBMS. OrientDB can load and store document Record type along with binary data.

Vertex

OrientDB database is not only a Document database but also a Graph database. The new concepts such as Vertex and Edge are used to store the data in the form of graph. In graph databases, the most basic unit of data is node, which in OrientDB is called a vertex. The Vertex stores information for the database.

Edge

There is a separate record type called the Edge that connects one vertex to another. Edges are bidirectional and can only connect two vertices. There are two types of edges in OrientDB, one is regular and another one lightweight.

Class

The class is a type of data model and the concept drawn from the Object-oriented programming paradigm. Based on the traditional document database model, data is stored in the form of collection, while in the Relational database model data is stored in tables. OrientDB follows the Document API along with OPPS paradigm. As a concept, the class in OrientDB has the closest relationship with the table in relational databases, but (unlike tables) classes can be schema-less, schema-full or mixed. Classes can inherit from other classes, creating trees of classes. Each class has its own cluster or clusters, (created by default, if none are defined).

Cluster

Cluster is an important concept which is used to store records, documents, or vertices. In simple words, Cluster is a place where a group of records are stored. By default, OrientDB will create one cluster per class. All the records of a class are stored in the same cluster having the same name as the class. You can create up to 32,767(2^15-1) clusters in a database.

The CREATE class is a command used to create a cluster with specific name. Once the cluster is created you can use the cluster to save records by specifying the name during the creation of any data model.

Relationships

OrientDB supports two kinds of relationships: referenced and embedded. Referenced relationships means it stores direct link to the target objects of the relationships. Embedded relationships means it stores the relationship within the record that embeds it. This relationship is stronger than the reference relationship.

Database

The database is an interface to access the real storage. IT understands high-level concepts such as queries, schemas, metadata, indices, and so on. OrientDB also provides multiple database types. For more information on these types, see Database Types.

OrientDB supports several data types natively. Following is the complete table on the same.

Sr. No. Type Description
1 Boolean

Handles only the values True or False.

Java types: java.lang.Boolean

Min: 0

Max: 1

2 Integer

32-bit signed integers.

Java types: java.lang.Interger

Min: -2,147,483,648

Max: +2,147,483,647

3 Short

Small 16-bit signed integers.

Java types: java.lang.short

Min: -32,768

Max: 32,767

4 Long

Big 64-bit signed integers.

Java types: java.lang.Long

Min: -263

Max: +263-1

5 Float

Decimal numbers.

Java types: java.lang.Float

: 2-149

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

6 Double

Decimal numbers with high precision.

Java types: Java.lang.Double.

Min: 2-1074

Max: (2-2-52)*21023

7 Date-time

Any date with the precision up to milliseconds.

Java types: java.util.Date

8 String

Any string as alphanumeric sequence of chars.

Java types: java.lang.String

9 Binary

Can contain any value as byte array.

Java types: byte[ ]

Min: 0

Max: 2,147,483,647

10 Embedded

The record is contained inside the owner. The contained record has no RecordId.

Java types: ORecord

11 Embedded list

The records are contained inside the owner. The contained records have no RecordIds and are reachable only by navigating the owner record.

Java types: List<objects>

Min: 0

Max: 41,000,000 items

12 Embedded set

The records are contained inside the owner. The contained records have no RecordId and are reachable only by navigating the owner record.

Java types: set<objects>

Min: 0

Max: 41,000,000 items

13 Embedded map

The records are contained inside the owner as values of the entries, while the keys can only be strings. The contained records have no RecordId and are reachable only by navigating the owner Record.

Java types: Map<String, ORecord>

Min: 0

Max: 41,000,000 items

14 Link

Link to another Record. It's a common one-to-one relationship

Java Types: ORID, <? extends ORecord>

Min: 1

Max: 32767:2^63-1

15 Link list

Links to other Records. It's a common one-to-many relationship where only the RecordIds are stored.

Java types: List<? Extends ORecord>

Min: 0

Max: 41,000,000 items

16 Link set

Links to other records. It's a common one-to-many relationship.

Java types: Set<? extends ORecord>

Min: 0

Max: 41,000,000 items

17 Link map

Links to other records as value of the entries, while keys can only be strings. It's a common one-to-many relationship. Only the RecordIds are stored.

Java types: Map<String, ? extends Record>

Min: 0

Max: 41,000,000 items

18 Byte

Single byte. Useful to store small 8-bit signed integers.

Java types: java.lang.Byte

Min: -128

Max: +127

19 Transient Any value not stored on database.
20 Date

Any date as year, month and day.

Java Types: java.util.Date

21 Custom

Used to store a custom type providing the Marshall and Unmarshall methods.

Java types: OSerializableStream

Min: 0

Max: x

22 Decimal

Decimal numbers without rounding.

Java types: java.math.BigDecimal

23 LinkBag

List of RecordIds as specific RidBag.

Java types: ORidBag

24 Any

Not determinate type, used to specify collections of mixed type, and null.

In the following chapters, how to use these data types in OrientDB is discussed.

The OrientDB Console is a Java Application made to work against OrientDB databases and Server instances. There are several console modes that OrientDB supports.

Interactive Mode

This is the default mode. Just launch the console by executing the following script bin/console.sh (or bin/console.bat in MS Windows systems). Make sure to have execution permission on it.

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

Once done, the console is ready to accept commands.

Batch Mode

To execute commands in batch mode run the following bin/console.sh (or bin/console.bat in MS Windows systems) script passing all the commands separated with semicolon ";".

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

Or call the console script passing the name of the file in text format containing the list of commands to execute. Commands must be separated with semicolon ";".

Example

Command.txt contains the list of commands which you want to execute through OrientDB console. The following command accepts the batch of commands from the command.txt file.

orientdb> console.bat commands.txt

In batch mode, you can ignore errors to let the script continue the execution by setting the "ignoreErrors" variable to true.

orientdb> set ignoreErrors true

Enable Echo

When you run console commands in pipeline, you will need to display them. Enable "echo" of commands by setting it as property at the beginning. Following is the syntax to enable echo property in OrientDB console.

orientdb> set echo true

The SQL Reference of the OrientDB database provides several commands to create, alter, and drop databases.

The following statement is a basic syntax of Create Database command.

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

Following are the details about the options in the above syntax.

<database-url> − Defines the URL of the database. URL contains two parts, one is <mode> and the second one is <path>.

<mode> − Defines the mode, i.e. local mode or remote mode.

<path> − Defines the path to the database.

<user> − Defines the user you want to connect to the database.

<password> − Defines the password for connecting to the database.

<storage-type> − Defines the storage types. You can choose between PLOCAL and MEMORY.

Example

You can use the following command to create a local database named demo.

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

If the database is successfully created, you will get the following output.

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

orientdb {db = demo}>

Database is a one of the important data models with different attributes that you can modify as per your requirements.

The following statement is the basic syntax of the Alter Database command.

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

Where <attribute-name> defines the attribute that you want to modify and <attributevalue> defines the value you want to set for that attribute.

The following table defines the list of supported attributes for altering a database.

Sr.No. Attribute Name Description
1 STATUS Defines the database’s status between different attributes.
2 IMPORTING Sets the importing status.
3 DEFAULTCLUSTERID Sets the default cluster using ID. By default it is 2.
4 DATEFORMAT Sets the particular date format as default. By default it is "yyyy-MM-dd".
5 DATETIMEFORMAT Sets the particular date time format as default. By default it is "yyyy-MM-dd HH:mm:ss".
6 TIMEZONE Sets the particular time zone. By default it is Java Virtual Machine’s (JVM’s) default time zone.
7 LOCALECOUNTRY Sets the default locale country. By default it is JVM’s default locale country. For example: "GB".
8 LOCALELANGUAGE Sets the default locale language. By default it is JVM’s default locale language. For example: "en".
9 CHARSET Sets the type of character set. By default it is JVM’s default charset. For example: "utf8".
10 CLUSTERSELECTION Sets the default strategy used for selecting the cluster. These strategies are created along with the class creation. Supported strategies are default, roundrobin, and balanced.
11 MINIMUMCLUSTERS Sets the minimum number of clusters to create automatically when a new class is created. By default it is 1.
12 CUSTOM Sets the custom property.
13 VALIDATION Disables or enables the validations for entire database.

Example

From the version of OrientDB-2.2, the new SQL parser is added which will not allow the regular syntax in some cases. Therefore, we have to disable the new SQL parser (StrictSQL) in some cases. You can use the following Alter database command to disable the StrictSQL parser.

orientdb> ALTER DATABASE custom strictSQL = false

If the command is executed successfully, you will get the following output.

Database updated successfully

Like RDBMS, OrientDB also supports the backup and restore operations. While executing the backup operation, it will take all files of the current database into a compressed zip format using the ZIP algorithm. This feature (Backup) can be availed automatically by enabling the Automatic-Backup server plugin.

Taking backup of a database or exporting a database is the same, however, based on the procedure we have to know when to use backup and when to use export.

While taking backup, it will create a consistent copy of a database, all further write operations are locked and waiting to finish the backup process. In this operation, it will create a read-only backup file.

If you need the concurrent read and write operation while taking a backup you have to choose exporting a database instead of taking backup of a database. Export doesn’t lock the database and allows concurrent writes during the export process.

The following statement is the basic syntax of database backup.

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

Following are the details about the options in the above syntax.

<dburl> − The database URL where the database is located either in the local or in the remote location.

<user> − Specifies the username to run the backup.

<password> − Provides the password for the particular user.

<destination> − Destination file location stating where to store the backup zip file.

<type> − Optional backup type. It has either of the two options.

  • Default − locks the database during the backup.

  • LVM − uses LVM copy-on-write snapshot in background.

Example

Take a backup of the database demo which is located in the local file system /opt/orientdb/databases/demo into a file named sample-demo.zip and located into the current directory.

You can use the following command to take a backup of the database demo.

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

Using Console

The same you can do using the OrientDB console. Before taking the backup of a particular database, you have to first connect to the database. You can use the following command to connect to the database named demo.

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

After connecting you can use the following command to take backup of the database into a file named ‘backup-demo.zip’ in the current directory.

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

If this command is executed successfully, you will get some success notifications along with following message.

Backup executed in 0.30 seconds

As like RDBMS, OrientDB also supports restoring operation. Only from the console mode, you can execute this operation successfully.

The following statement is the basic syntax for restoring operation.

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

Example

You have to perform this operation only from the console mode. Therefore, first you have to start the OrientDB console using the following OrientDB command.

$ orientdb

Then, connect to the respective database to restore the backup. You can use the following command to connect to the database named demo.

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

After successful connection, you can use the following command to restore the backup from ‘backup-demo.zip’ file. Before executing, make sure the backup-demo.zip file is placed in the current directory.

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

If this command is executed successfully, you will get some success notifications along with the following message.

Database restored in 0.26 seconds

This chapter explains how to connect to a particular database from the OrientDB command line. It opens a database.

The following statement is the basic syntax of the Connect command.

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

Following are the details about the options in the above syntax.

<database-url> − Defines the URL of the database. URL contains two parts one is <mode> and the second one is <path>.

<mode> − Defines the mode, i.e. local mode or remote mode.

<path> − Defines the path to the database.

<user> − Defines the user you want to connect to the database.

<password> − Defines the password for connecting to the database.

Example

We have already created a database named ‘demo’ in the previous chapters. In this example, we will connect to that using the user admin.

You can use the following command to connect to demo database.

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

If it is successfully connected, you will get the following output −

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

This chapter explains how to disconnect to a particular database from the OrientDB command line. It closes the currently open database.

The following statement is the basic syntax of the Disconnect command.

DISCONNECT

Note − You can use this command only after connecting to a particular database and it will only close the currently running database.

Example

In this example, we will use the same database named ‘demo’ that we created in the previous chapter. We will disconnect from demo database.

You can use the following command to disconnect the database.

orientdb {db = demo}> DISCONNECT

If it is successfully disconnected, you will get the following output −

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

This chapter explains how to get information of a particular database from the OrientDB command line.

The following statement is the basic syntax of the Info command.

info

Note − You can use this command only after connecting to a particular database and it will retrieve the information of only the currently running database.

Example

In this example, we will use the same database named ‘demo’ that we created in the previous chapter. We will retrieve the basic information from demo database.

You can use the following command to disconnect the database.

orientdb {db = demo}> info

If it is successfully disconnected, you will get the following output.

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

Bu bölüm, OrientDB komut satırından bir örnekteki tüm veritabanlarının listesinin nasıl alınacağını açıklar.

Aşağıdaki ifade, info komutunun temel sözdizimidir.

LIST DATABASES

Note - Bu komutu yalnızca yerel veya uzak bir sunucuya bağlandıktan sonra kullanabilirsiniz.

Misal

Veritabanlarının listesini almadan önce, uzak sunucu üzerinden localhost sunucusuna bağlanmamız gerekir. Localhost örneğine bağlanmak için kullanıcı adı ve parolanın sırasıyla guest ve guest olduğunu veorintdb/config/orientdb-server-config.xml dosya.

Localhost veritabanı sunucusu örneğine bağlanmak için aşağıdaki komutu kullanabilirsiniz.

orientdb> connect remote:localhost guest

Şifreyi soracaktır. Konuk için yapılandırma dosyasına göre şifre de misafirdir. Başarıyla bağlanırsa, aşağıdaki çıktıyı alacaksınız.

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

Localhost veritabanı sunucusuna bağlandıktan sonra, veritabanlarını listelemek için aşağıdaki komutu kullanabilirsiniz.

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

Başarıyla yürütülürse, aşağıdaki çıktıyı alırsınız -

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

Veritabanı durumunu statik yapmak istediğinizde, bu, veritabanının hiçbir okuma ve yazma işlemine yanıt vermediği bir durum anlamına gelir. Basitçe, veritabanı donma durumunda.

Bu bölümde, veritabanını OrientDB komut satırından nasıl donduracağınızı öğrenebilirsiniz.

Aşağıdaki ifade veritabanı dondurma komutunun temel sözdizimidir.

FREEZE DATABASE

Note - Bu komutu yalnızca uzak veya yerel veritabanındaki belirli bir veritabanına bağlandıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. Bu veritabanını CLI'den donduracağız.

Veritabanını dondurmak için aşağıdaki komutu kullanabilirsiniz.

Orientdb {db = demo}> FREEZE DATABASE

Başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Database 'demo' was frozen successfully

Bu bölümde, OrientDB komut satırı aracılığıyla veritabanını donma durumundan nasıl çıkaracağınızı öğrenebilirsiniz.

Aşağıdaki ifade, Release veritabanı komutunun temel sözdizimidir.

RELEASE DATABASE

Note - Bu komutu yalnızca donma durumunda olan belirli bir veritabanına bağlandıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. Önceki bölümde dondurulmuş olan veritabanını yayınlayacağız.

Veritabanını serbest bırakmak için aşağıdaki komutu kullanabilirsiniz.

Orientdb {db = demo}> RELEASE DATABASE

Başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Database 'demo' was release successfully

Bu bölümde, OrientDB komut satırı aracılığıyla belirli bir veritabanının yapılandırmasının nasıl görüntüleneceğini öğrenebilirsiniz. Bu komut hem yerel hem de uzak veritabanları için geçerlidir.

Yapılandırma bilgileri varsayılan önbelleği, etkin olup olmadığını, bu önbelleğin boyutunu, yükleme faktörü değerini, harita için maksimum belleği, düğüm sayfası boyutunu, havuz minimum ve maksimum boyutunu vb. İçerir.

Aşağıdaki ifade, yapılandırma veritabanı komutunun temel sözdizimidir.

CONFIG

Note - Bu komutu yalnızca belirli bir veritabanına bağlandıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız.

Demo veritabanının yapılandırmasını görüntülemek için aşağıdaki komutu kullanabilirsiniz.

Orientdb {db = demo}> CONFIG

Başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Yukarıdaki konfigürasyon parametreleri listesinde, parametre değerlerinden herhangi birini değiştirmek isterseniz, bunu komut satırından config set and get komutunu kullanarak kolayca yapabilirsiniz.

Yapılandırma Seti

Konfigürasyon değişkeni değerini güncelleyebilirsiniz. CONFIG SET komut.

Aşağıdaki ifade, config set komutunun temel sözdizimidir.

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

Note - Bu komutu yalnızca belirli bir veritabanına bağlandıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. 'Tx.autoRetry' değişken değerini 5 olarak değiştireceğiz.

Demo veritabanının yapılandırmasını ayarlamak için aşağıdaki komutu kullanabilirsiniz.

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

Başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Local configuration value changed correctly

Config Get

Konfigürasyon değişkeni değerini, CONFIG GET komut.

Aşağıdaki ifade, config get komutunun temel sözdizimidir.

CONFIG GET <config-variable>

Note - Bu komutu yalnızca belirli bir veritabanına bağlandıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. 'Tx.autoRetry' değişken değerini almaya çalışacağız.

Demo veritabanının yapılandırmasını görüntülemek için aşağıdaki komutu kullanabilirsiniz.

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

Başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Local configuration: tx.autoRetry = 5

RDBMS gibi, OrientDB de veritabanını Dışa Aktarma ve İçe Aktarma gibi özellikler sunar. OrientDB, verileri dışa aktarmak için JSON formatını kullanır. Varsayılan olarak dışa aktarma komutu, dosyaları sıkıştırmak için GZIP algoritmasını kullanıyor.

Bir veritabanını dışa aktarırken, veritabanını kilitlemiyor, yani üzerinde eşzamanlı okuma ve yazma işlemleri gerçekleştirebilirsiniz. Aynı zamanda, eşzamanlı okuma ve yazma işlemleri nedeniyle bu verilerin tam bir kopyasını oluşturabileceğiniz anlamına da gelir.

Bu bölümde, veritabanını OrientDB komut satırından nasıl dışa aktaracağınızı öğrenebilirsiniz.

Aşağıdaki ifade, Veritabanını dışa aktar komutunun temel sözdizimidir.

EXPORT DATABASE <output file>

Note - Bu komutu yalnızca belirli bir veritabanına bağlandıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. Veritabanını 'export-demo' adlı bir dosyaya aktarmak için aşağıdaki komutu kullanabilirsiniz.

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

Başarıyla yürütülürse, işletim sistemine bağlı olarak 'export-demo.zip' veya 'exportdemo.gz' adlı bir dosya oluşturur ve aşağıdaki çıktıyı alırsınız.

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

Veritabanını her içe aktarmak istediğinizde, dışa aktarma komutuyla oluşturulan JSON biçiminde dışa aktarılan dosyayı kullanmanız gerekir.

Bu bölümde, veritabanını OrientDB komut satırından nasıl içe aktaracağınızı öğrenebilirsiniz.

Aşağıdaki ifade, Veritabanını içe aktar komutunun temel sözdizimidir.

IMPORT DATABASE <input file>

Note - Bu komutu yalnızca belirli bir veritabanına bağlandıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. Veritabanını 'export-demo.gz' adlı bir dosyaya aktarmak için aşağıdaki komutu kullanabilirsiniz.

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

Başarıyla yürütülürse, başarılı bildirimle birlikte aşağıdaki çıktıyı alacaksınız.

Database import completed in 11612ms

RDBMS'ye benzer şekilde, OrientDB ayrıca Commit ve Rollback gibi işlem konseptleri sağlar. Commit tüm değişiklikleri veritabanına kaydederek işlemin kapatılmasını ifade eder. Rollback , veritabanı durumunu işlemi açtığınız noktaya kadar kurtarmak anlamına gelir.

Aşağıdaki ifade, Commit veritabanı komutunun temel sözdizimidir.

COMMIT

Note - Bu komutu yalnızca belirli bir veri tabanına bağlandıktan sonra ve işleme başladıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. Commit işleminin işleyişini göreceğiz ve işlemleri kullanarak bir kayıt saklayacağız.

İlk önce aşağıdakileri kullanarak işlemi başlatın BEGIN komut.

orientdb {db = demo}> BEGIN

Ardından, aşağıdaki komutu kullanarak id = 12 ve name = satish.P değerlerine sahip bir çalışan tablosuna bir kayıt ekleyin.

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

İşlemi gerçekleştirmek için aşağıdaki komutu kullanabilirsiniz.

orientdb> commit

Bu işlem başarıyla tamamlanırsa, aşağıdaki çıktıyı alırsınız.

Transaction 2 has been committed in 4ms

Bu bölümde, işlenmemiş işlemi OrientDB komut satırı arayüzü üzerinden nasıl geri alacağınızı öğreneceksiniz.

Aşağıdaki ifade, Veritabanını geri al komutunun temel sözdizimidir.

ROLLBACK

Note - Bu komutu yalnızca belirli bir veri tabanına bağlandıktan sonra ve işleme başladıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. Geri alma işleminin işleyişini göreceğiz ve işlemleri kullanarak bir kayıt kaydedeceğiz.

İlk önce aşağıdakileri kullanarak işlemi başlatın BEGIN komut.

orientdb {db = demo}> BEGIN

Ardından, aşağıdaki komutu kullanarak id = 12 ve name = satish.P değerlerine sahip bir çalışan tablosuna bir kayıt ekleyin.

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

Kayıtları Çalışan tablosundan almak için aşağıdaki komutu kullanabilirsiniz.

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

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Artık bu işlemi Geri Almak için aşağıdaki komutu kullanabilirsiniz.

orientdb> ROLLBACK

Çalışan tablosundan aynı kaydı almak için seçme sorgusunu tekrar kontrol edin.

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

Geri alma başarılı bir şekilde yürütülürse, çıktıda bulunan 0 kayıt alırsınız.

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

Teknik terminolojiye göre Optimization"En kısa sürede mümkün olan daha iyi performansı elde edin" anlamına gelir. Veritabanına referansla, optimizasyon, verilerin alınma hızını ve verimliliğini en üst düzeye çıkarmayı içerir.

OrientDB, veri varlıkları arasında doğrudan bir ilişki anlamına gelen hafif kenarları destekler. Basit bir ifadeyle, alan arası bir ilişkidir. OrientDB, veritabanını optimize etmek için farklı yollar sunar. Normal kenarların hafif kenarlara dönüştürülmesini destekler.

Aşağıdaki ifade, Optimize veritabanı komutunun temel sözdizimidir.

OPTMIZE DATABASE [-lwedges] [-noverbose]

Nerede lwedges normal kenarları hafif kenarlara dönüştürür ve noverbose çıkışı devre dışı bırakır.

Misal

Bu örnekte, önceki bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. Aşağıdaki optimize veritabanı komutunu kullanabilirsiniz.

OPTIMIZE DATABASE -lwedges

Başarıyla yürütülürse, tamamlama mesajıyla birlikte bazı başarılı bildirimler alacaksınız.

Database Optimization completed in 35ms

RDBMS'ye benzer şekilde, OrientDB bir veritabanı bırakma özelliği sağlar. Drop database bir veritabanının tamamen kaldırılması anlamına gelir.

Aşağıdaki ifade, Drop veritabanı komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<database-name> - Bırakmak istediğiniz veritabanı adı.

<server-username> - Veritabanını bırakma ayrıcalığına sahip veritabanının kullanıcı adı.

<server-user-password> - Belirli bir kullanıcının şifresi.

Misal

Bir veritabanını bırakmanın iki yolu vardır, biri o anda açık olan bir veritabanını bırakmak ve ikincisi belirli bir adı sağlayarak belirli bir veritabanını bırakmaktır.

Bu örnekte, daha önceki bir bölümde oluşturduğumuz 'demo' adlı veritabanını kullanacağız. Bir veritabanı bırakmak için aşağıdaki komutu kullanabilirsinizdemo.

orientdb {db = demo}> DROP DATABASE

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Database 'demo' deleted successfully

OR

Aşağıdaki gibi bir veritabanını bırakmak için başka bir komut kullanabilirsiniz.

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

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Database 'demo' deleted successfully

OrientDB, belgeleri ve grafik odaklı verileri depolayabilen bir NoSQL veritabanıdır. NoSQL veritabanı herhangi bir tablo içermez, bu nedenle verileri kayıt olarak nasıl ekleyebilirsiniz. Burada, tablo verilerini sınıf, özellik, tepe noktası ve kenar anlam sınıfları biçiminde görebilirsiniz ve özellikler tablolardaki dosyalar gibidir.

Tüm bu varlıkları kullanarak tanımlayabiliriz schemaOrientDB'de. Mülk verileri bir sınıfa eklenebilir. Ekle komutu, veritabanı şemasında yeni bir kayıt oluşturur. Kayıtlar şemasız olabilir veya belirli kurallara uyabilir.

Aşağıdaki ifade, Kayıt Ekle komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

SET - Her alanı değerle birlikte tanımlar.

CONTENT- Alan değerlerini ayarlamak için JSON verilerini tanımlar. Bu isteğe bağlıdır.

RETURN- Eklenen kayıtların sayısı yerine döndürülecek ifadeyi tanımlar. En yaygın kullanım durumları şunlardır:

  • @rid - Yeni kaydın Kayıt Kimliğini döndürür.

  • @this - Yeni kaydın tamamını döndürür.

FROM - Kaydı veya sonuç kümesini eklemek istediğiniz yer.

Misal

Aşağıdaki alan ve türlere sahip bir Müşteri tablosu düşünelim.

Sr.No. Alan adı Tür
1 İD Tamsayı
2 İsim Dize
3 Yaş Tamsayı

Aşağıdaki komutları uygulayarak Şemayı (tablo) oluşturabilirsiniz.

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

Tüm komutları yürüttükten sonra, id, isim ve yaş alanlarıyla birlikte Müşteri tablo adını alacaksınız. Müşteri tablosuna seçme sorgusu uygulayarak tabloyu kontrol edebilirsiniz.

OrientDB, kayıt eklemek için farklı yollar sunar. Örnek kayıtları içeren aşağıdaki Müşteri tablosunu göz önünde bulundurun.

Sr.No. İsim Yaş
1 Satish 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Aşağıdaki komut, ilk kaydı Müşteri tablosuna eklemektir.

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

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Aşağıdaki komut, ikinci kaydı Müşteri tablosuna eklemektir.

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

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Aşağıdaki komut, üçüncü kaydı Müşteri tablosuna eklemektir.

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

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Aşağıdaki komut, sonraki iki kaydı Müşteri tablosuna eklemektir.

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

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Aşağıdaki komutu uygulayarak tüm bu kayıtların eklenip eklenmediğini kontrol edebilirsiniz.

SELECT FROM Customer

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

RDBMS'ye benzer şekilde, OrientDB, kayıtları veritabanından almak için farklı türde SQL sorgularını destekler. Kayıtları alırken, select ifadesiyle birlikte farklı sorgu varyasyonlarına veya seçeneklerine sahibiz.

Aşağıdaki ifade, SELECT komutunun temel sözdizimidir.

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 ]

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<Projections> - Sonuç kayıtları kümesi olarak sorgudan çıkarmak istediğiniz verileri gösterir.

FROM- Sorgulanacak nesneyi gösterir. Bu bir sınıf, küme, tek bir Kayıt Kimliği, bir dizi Kayıt Kimliği olabilir. Tüm bu nesneleri hedef olarak belirtebilirsiniz.

WHERE - Sonuç kümesine filtre uygulanacak koşulu belirtir.

LET - Öngörüler, koşullar veya alt sorgularda kullanılan bağlam değişkenini gösterir.

GROUP BY - Kayıtların gruplanacağı alanı belirtir.

ORDER BY - Kayıt sırasına göre düzenlemek için başvuruyu gösterir.

UNWIND - Kayıtların toplanmasının çözüleceği alanı belirler.

SKIP - Sonuç kümesinin başından itibaren atlamak istediğiniz kayıtların sayısını tanımlar.

LIMIT - Sonuç kümesindeki maksimum kayıt sayısını gösterir.

FETCHPLAN - Sonuçları nasıl getirmek istediğinizi tanımlayan stratejiyi belirtir.

TIMEOUT - Sorgu için milisaniye cinsinden maksimum süreyi tanımlar.

LOCK- Kilitleme stratejisini tanımlar. VARSAYILAN ve KAYIT mevcut kilit stratejileridir.

PARALLEL - Sorguyu 'x' eşzamanlı evrelerde yürütür.

NOCACHE - Önbellek kullanmak isteyip istemediğinizi tanımlar.

Misal

Bir önceki bölümde oluşturulan aşağıdaki Müşteri tablosunu ele alalım.

Sr.No. İsim Yaş
1 Satish 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Müşteri tablosundan veri kayıtlarını almak için farklı seçim sorgularını deneyin.

Method 1 - Müşteri tablosundan tüm kayıtları seçmek için aşağıdaki sorguyu kullanabilirsiniz.

orientdb {db = demo}> SELECT FROM Customer

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

----+-----+--------+----+-------+---- 
#   |@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 - Adı 'harfiyle başlayan tüm kayıtları seçink'.

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

VEYA yukarıdaki örnek için aşağıdaki sorguyu kullanabilirsiniz.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Method 3 - Adları büyük harflerle Müşteri tablosundan id, ad kayıtlarını seçin.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

----+--------+----+------- 
#   |@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 - Müşteri tablosundan yaşın 25 ile 29 arasında olduğu tüm kayıtları seçin.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

----+-----+--------+----+-------+---- 
#   |@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 - Herhangi bir alanın 'sh' kelimesini içerdiği Müşteri tablosundan tüm kayıtları seçin.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Method 6 - Müşteri tablosundan yaşa göre azalan sırada sıralanmış tüm kayıtları seçin.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Load Recordşemadan belirli bir kaydı yüklemek için kullanılır. Yükleme kaydı, kaydı Kayıt Kimliği yardımı ile yükleyecektir. İle temsil edilir@rid sonuç kümesindeki sembolü.

Aşağıdaki ifade, LOAD Record komutunun temel sözdizimidir.

LOAD RECORD <record-id>

Nerede <record-id> Yüklemek istediğiniz kaydın kayıt kimliğini tanımlar.

Belirli bir kaydın Kayıt Kimliğini bilmiyorsanız, tabloyla ilgili herhangi bir sorguyu yürütebilirsiniz. Sonuç kümesinde, ilgili kaydın Kayıt Kimliğini (@rid) bulacaksınız.

Misal

Önceki bölümlerde kullandığımız aynı Müşteri tablosunu ele alalım.

Sr.No. İsim Yaş
1 Satish 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Kayıt Kimliği olan kaydı almak için aşağıdaki sorguyu deneyin @rid: #11:0.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Reload Recordayrıca Kayıt Yükle komutuna benzer şekilde çalışır ve ayrıca şemadan belirli bir kaydı yüklemek için kullanılır. Yükleme kaydı, kaydı Kayıt Kimliği yardımı ile yükleyecektir. İle temsil edilir@ridSonuç kümesindeki sembolü. Ana fark, kaydı değiştirmek için harici eşzamanlı işlemler uygulandığında yararlı olan Kaydı yeniden yükle önbelleği yok sayar. En son güncellemeyi verecektir.

Aşağıdaki ifade, RELOAD Record komutunun temel sözdizimidir.

RELOAD RECORD <record-id>

Nerede <record-id> yeniden yüklemek istediğiniz kaydın kayıt kimliğini tanımlar.

Belirli bir kaydın Kayıt Kimliğini bilmiyorsanız, tabloyla ilgili herhangi bir sorguyu yürütebilirsiniz. Sonuç kümesinde, ilgili kaydın Kayıt Kimliğini (@rid) bulacaksınız.

Misal

Önceki bölümde kullandığımız aynı Müşteri tablosunu ele alalım.

Sr.No. İsim Yaş
1 Satish 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Kayıt Kimliği olan kaydı almak için aşağıdaki sorguyu deneyin @rid: #11:0.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Export Recordyüklenen kaydı istenen ve desteklenen biçime aktarmak için kullanılan komuttur. Herhangi bir yanlış sözdizimi yürütüyorsanız, desteklenen formatların listesini verecektir. OrientDB, bir Belge veritabanı ailesidir, bu nedenle JSON, varsayılan desteklenen formattır.

Aşağıdaki ifade, Kaydı Dışa Aktar komutunun temel sözdizimidir.

EXPORT RECORD <format>

Nerede <Format> kaydı almak istediğiniz formatı tanımlar.

Note - Dışa aktar komutu, yüklenen kaydı Kayıt Kimliğine göre dışa aktarır.

Misal

Önceki bölümde kullandığımız aynı Müşteri tablosunu ele alalım.

Sr.No. İsim Yaş
1 Satish 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Kayıt Kimliği olan kaydı almak için aşağıdaki sorguyu deneyin @rid: #11:0.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Yüklenen kaydı (# 11: 0) JSON formatına aktarmak için aşağıdaki sorguyu kullanın.

orientdb {db = demo}> EXPORT RECORD json

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Update Recordkomutu, belirli bir kaydın değerini değiştirmek için kullanılır. SET, belirli bir alan değerini güncellemek için temel komuttur.

Aşağıdaki ifade, Güncelle komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

SET - Güncellenecek alanı tanımlar.

INCREMENT - Belirtilen alan değerini verilen değer kadar artırır.

ADD - Yeni öğeyi koleksiyon alanlarına ekler.

REMOVE - Koleksiyon alanından bir öğeyi kaldırır.

PUT - Harita alanına giriş yapar.

CONTENT - Kayıt içeriğini JSON belge içeriğiyle değiştirir.

MERGE - Kayıt içeriğini bir JSON belgesiyle birleştirir.

LOCK- Yükleme ve güncelleme arasında kayıtların nasıl kilitleneceğini belirtir. Belirtmek için iki seçeneğimiz varDefault ve Record.

UPSERT- Bir kaydı varsa günceller veya yoksa yeni bir kayıt ekler. İki sorgu yürütmek yerine tek bir sorgu yürütmeye yardımcı olur.

RETURN - Kayıt sayısı yerine döndürülecek ifadeyi belirtir.

LIMIT - Güncellenecek maksimum kayıt sayısını tanımlar.

TIMEOUT - Güncellemenin zaman aşımına uğramadan önce çalışmasına izin vermek istediğiniz zamanı tanımlar.

Misal

Önceki bölümde kullandığımız aynı Müşteri tablosunu ele alalım.

Sr.No. İsim Yaş
1 Satish 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Bir müşterinin "Raja" yaşını güncellemek için aşağıdaki sorguyu deneyin.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Müşteri tablosunun kaydını kontrol etmek için aşağıdaki sorguyu kullanabilirsiniz.

orientdb {db = demo}> SELECT FROM Customer

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

----+-----+--------+----+-------+---- 
#   |@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 komutu, belirli bir kaydın değerlerini silmek için kullanılır.

Aşağıdaki ifade, Truncate komutunun temel sözdizimidir.

TRUNCATE RECORD <rid>*

Nerede <rid>* kesilecek Kayıt Kimliğini gösterir. Birden çok kaydı kesmek için virgülle ayrılmış birden çok Rids kullanabilirsiniz. Kesilen kayıtların sayısını döndürür.

Misal

Önceki bölümde kullandığımız aynı Müşteri tablosunu ele alalım.

Sr.No. İsim Yaş
1 Satish 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 28

Kayıt Kimliği # 11: 4 olan kaydı kesmek için aşağıdaki sorguyu deneyin.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Müşteri tablosunun kaydını kontrol etmek için aşağıdaki sorguyu kullanabilirsiniz.

Orientdb {db = demo}> SELECT FROM Customer

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

----+-----+--------+----+-------+---- 
#   |@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 komutu, veritabanından bir veya daha fazla kaydı tamamen silmek için kullanılır.

Aşağıdaki ifade, Sil komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

LOCK- Yükleme ve güncelleme arasında kayıtların nasıl kilitleneceğini belirtir. Belirtmek için iki seçeneğimiz varDefault ve Record.

RETURN - Kayıt sayısı yerine döndürülecek ifadeyi belirtir.

LIMIT - Güncellenecek maksimum kayıt sayısını tanımlar.

TIMEOUT - Güncellemenin zaman aşımına uğramadan önce çalışmasına izin vermek istediğiniz zamanı tanımlar.

Note - Grafiğin bütünlüğünü etkilediği için Tepe Noktalarını veya Kenarları kaldırmak için SİL'i kullanmayın.

Misal

Müşteri tablosunu ele alalım.

Sr.No. İsim Yaş
1 Satish 25
2 Krishna 26
3 Kiran 29
4 Javeed 21

İd = 4 olan kaydı silmek için aşağıdaki sorguyu deneyin.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Müşteri tablosunun kaydını kontrol etmek için aşağıdaki sorguyu kullanabilirsiniz.

Orientdb {db = demo}> SELECT FROM Customer

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

----+-----+--------+----+-------+---- 
#   |@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, çoklu model özelliğini destekler ve bir veritabanının temel kavramlarına yaklaşmak ve anlamak için farklı yollar sunar. Ancak bu modellere Document veritabanı API perspektifinden kolayca erişebiliriz. RDBMS gibi, OrientDB de Kaydı bir depolama öğesi olarak kullanır ancak Belge türünü kullanır. Belgeler Anahtar / Değer çiftleri şeklinde saklanır. Alanları ve özellikleri bir kavram sınıfına ait anahtar / değer çiftleri olarak saklıyoruz.

Classbir tür veri modelidir ve kavram, Nesne yönelimli programlama paradigmasından alınmıştır. Geleneksel belge veritabanı modeline dayalı olarak, veriler toplama biçiminde saklanırken, ilişkisel veritabanı modelinde veriler tablolarda depolanır. OrientDB, OPPS paradigmasıyla birlikte Document API'yi takip eder. Kavram olarak, OrientDB'deki sınıf ilişkisel veritabanlarında tabloyla en yakın ilişkiye sahiptir, ancak (tabloların aksine) sınıflar şemasız, şema dolu veya karışık olabilir. Sınıflar, diğer sınıflardan miras alabilir ve sınıf ağaçları oluşturabilir. Her sınıfın kendi kümesi veya kümeleri vardır (hiçbiri tanımlanmamışsa varsayılan olarak oluşturulur).

Aşağıdaki ifade, Sınıf Oluştur Komutu'nun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<class> - Oluşturmak istediğiniz sınıfın adını tanımlar.

<super-class> - Bu sınıfla genişletmek istediğiniz süper sınıfı tanımlar.

<total-cluster-number>- Bu sınıfta kullanılan toplam küme sayısını tanımlar. Varsayılan 1'dir.

ABSTARCT- Sınıfın soyut olduğunu tanımlar. Bu isteğe bağlıdır.

Misal

Tartışıldığı gibi sınıf, tablo ile ilgili bir kavramdır. Bu nedenle burada bir tablo Hesabı oluşturacağız. Ancak, sınıf oluştururken alanları, yani özellikleri OOPS paradigmasına dayalı olarak tanımlayamayız.

Aşağıdaki komut, Account adında bir sınıf oluşturmaktır.

orientdb> CREATE CLASS Account

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Class created successfully

Bir sınıf oluşturmak için aşağıdaki komutu kullanabilirsiniz Car hangi sınıfa kadar uzanır Vehicle.

orientdb> CREATE CLASS Car EXTENDS Vehicle

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Class created successfully

Soyut olarak bir Kişi sınıfı oluşturmak için aşağıdaki komutu kullanabilirsiniz.

orientdb> CREATE CLASS Person ABSTRACT

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Class created successfully

Note- Özellikler olmadan, sınıf işe yaramaz ve gerçek nesneyi oluşturamaz. Daha sonraki bölümlerde, belirli bir sınıf için özellikleri nasıl oluşturacağınızı öğrenebilirsiniz.

OrientDB'deki Sınıf ve Özellik, sınıf adı, süper sınıf, küme, küme sayısı, Özet, vb. Gibi ilgili özniteliklere sahip bir şema oluşturmak için kullanılır. Şemadaki mevcut sınıfların herhangi bir özniteliğini değiştirmek veya güncellemek istiyorsanız, o zaman kullanmak zorundasın Alter Class komut.

Aşağıdaki ifade, Alter Class Command'ın temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<class> - Sınıf adını tanımlar.

<attribute-name> - Değiştirmek istediğiniz özelliği tanımlar.

<attribute-value> - Özellik için ayarlamak istediğiniz değeri tanımlar.

Aşağıdaki tablo, Sınıfı Değiştir komutunu destekleyen özniteliklerin listesini tanımlar.

Öznitelik Tür Açıklama
İSİM Dize Sınıf adını değiştirir.
KISA ADI Dize Sınıf için kısa bir ad (yani bir takma ad) tanımlar. Kısa ad atamasını kaldırmak için NULL kullanın.
SUPERCLASS Dize Sınıf için bir süper sınıf tanımlar. Yeni bir sınıf eklemek için, + <class> sözdizimini, kaldırmak için - <class> kullanabilirsiniz.
BÜYÜK BOY Ondalık sayı Büyük boy faktörünü tanımlar.
ADDCLUSTER Dize Sınıfa bir küme ekler. Küme mevcut değilse, fiziksel bir küme oluşturur. Bir sınıfa küme eklemek, kayıtları dağıtılmış sunucularda depolamak için de yararlıdır.
KALDIRICI Dize Sınıftan bir kümeyi kaldırır. Kümeyi silmez, yalnızca sınıftan kaldırır.
STRICTMODE - Katı modu etkinleştirir veya devre dışı bırakır. Katı moddayken, şema tam modda çalışırsınız ve sınıfın şema tanımının parçasıysa bir kayda yeni özellikler ekleyemezsiniz.
KÜMELENME - Yeni kayıtlar için hangi kümeyi kullanacağını seçerken seçim stratejisini tanımlar.
ÖZEL - Özel özellikleri tanımlar. Özellik adları ve değerleri, ad ve değer arasında boşluk bırakmadan <özellik adı> = <değer> sözdizimini izlemelidir.
ÖZ Boole Sınıfı soyut bir sınıfa veya tersine dönüştürür.

Misal

Mevcut sınıfın niteliklerini güncelleyecek veya değiştirecek birkaç örnek deneyelim.

Aşağıdaki sorgu, mevcut bir 'Çalışan' sınıfı için bir süper sınıf 'Kişi' tanımlamak için kullanılır.

orientdb> ALTER CLASS Employee SUPERCLASS Person

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Class altered successfully

Aşağıdaki sorgu, mevcut bir 'Çalışan' sınıfı için süper sınıf bir 'Kişi' eklemek için kullanılır.

orientdb> ALTER CLASS Employee SUPERCLASS +Person

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Class altered successfully

Truncate classsınıfın bir parçası olarak tanımlanan tüm küme kayıtlarını silecektir. OrientDB'de her sınıfın aynı ada sahip ilişkili bir küme vardır. Sınıf hiyerarşisindeki tüm kayıtları da kaldırmak istiyorsanız, POLYMORPHIC anahtar sözcüğünü kullanmanız gerekir.

Aşağıdaki ifade, Truncate Class Command'ın temel sözdizimidir.

TRUNCATE CLASS <class> [ POLYMORPHIC ] [ UNSAFE ]

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<class> - Kesmek istediğiniz sınıfı tanımlar.

POLYMORPHIC - Komutun hiyerarşiyi de kısaltıp kesmeyeceğini tanımlar.

UNSAFE - Komutu, tepe veya kenar sınıfında kesmeye zorlar.

Misal

Bir sınıfı kesmek için aşağıdaki sorgu Profile.

orientdb> TRUNCATE CLASS Profile

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Class truncated successfully

Drop Classkomutu, şemadan bir sınıfı kaldırır. Dikkatli olmak ve tutarlı bir şema sürdürmek önemlidir. Örneğin, başkalarının süper sınıfları olan sınıfları kaldırmaktan kaçının. İlişkili küme silinmeyecek.

Aşağıdaki ifade, Drop Class komutunun temel sözdizimidir.

DROP CLASS <class>

Sınıf adıyla bir sınıf bırakın.

Misal

Sınıf Çalışanı Bırakmak için aşağıdaki sorguyu deneyin.

Orientdb> DROP CLASS Employee

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Class dropped successfully

ClusterOrientDB'de kayıtları, belgeleri veya köşeleri depolamak için kullanılan önemli bir kavramdır. Basit bir deyişle, küme, bir grup kaydın depolandığı bir yerdir. OrientDB varsayılan olarak sınıf başına bir küme oluşturacaktır. Bir sınıfın tüm kayıtları, sınıfla aynı adı taşıyan aynı kümede saklanır. Bir veritabanında en çok 32.767 (2 ^ 15-1) küme oluşturabilirsiniz.

CREATE sınıfı, belirli bir ada sahip bir küme oluşturmak için kullanılan bir komuttur. Küme oluşturulduktan sonra, herhangi bir veri modelinin oluşturulması sırasında adı belirterek kayıtları kaydetmek için kümeyi kullanabilirsiniz. Bir sınıfa yeni bir küme eklemek istiyorsanız, Sınıfı Değiştir komutunu ve ADDCLUSTER komutunu kullanın.

Aşağıdaki ifade, Küme Oluştur komutunun temel sözdizimidir.

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

Nerede <cluster> oluşturmak istediğiniz kümenin adını tanımlar ve <cluster-id> küme için kullanmak istediğiniz sayısal kimliği tanımlar.

Aşağıdaki tablo, Küme seçim stratejilerinin listesini sağlar.

Sr.No. Strateji ve Açıklama
1

Default

Varsayılan ClusterId sınıf özelliğini kullanarak kümeyi seçer.

2

Round-robin

Sonraki kümeyi dairesel sırayla seçer. Tamamlandığında yeniden başlatılıyor.

3

Balanced

En küçük kümeyi seçer. Sınıfın tüm temel kümelerin boyut açısından dengeli olmasını sağlar. Mevcut bir sınıfa yeni bir küme eklerken, önce yeni kümeyi doldurur.

Misal

Sales adında bir küme oluşturmak için bir örnek alalım.

orientdb> CREATE CLUSTER sales

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Cluster created correctly with id #12

Alter Clusterkomut, mevcut bir kümedeki öznitelikleri güncellemektir. Bu bölümde bir kümenin niteliklerini nasıl ekleyeceğinizi veya değiştireceğinizi öğrenebilirsiniz.

Aşağıdaki ifade, Alter Cluster komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<cluster> - Küme adını tanımlar.

<attribute-name> - Değiştirmek istediğiniz özelliği tanımlar.

<attribute-value> - Bu özellik için ayarlamak istediğiniz değeri tanımlar.

Aşağıdaki tablo biçimi, Küme Alter komutuyla birlikte kullanabileceğiniz desteklenen özniteliklerin listesini sağlar.

İsim Tür Açıklama
İSİM Dize Küme adını değiştirir.
DURUM Dize Küme durumunu değiştirir. İzin verilen değerler ÇEVRİMİÇİ ve ÇEVRİMDIŞI'dır. Varsayılan olarak, kümeler çevrimiçidir.
SIKIŞTIRMA Dize Kullanılacak sıkıştırma türünü tanımlar. İzin verilen değerler NOTHING, SNAPPY, GZIP ve OCompressionFactory sınıfında kayıtlı diğer sıkıştırma türleridir.
USE_WAL Boole OrientDB kümeye karşı çalışırken Journal'ı kullanıp kullanmayacağını tanımlar
RECORD_GROW_FACTO R Tamsayı Kayıt oluşturmada daha fazla alan kazanmak için büyüme faktörünü tanımlar. Kaydı ek bilgilerle güncellediğinizde bunu yararlı bulabilirsiniz.
RECORD_OVERFLOW_GR OW_FACTOR Tamsayı Güncellemelerde büyüme faktörünü tanımlar. Boyut sınırına ulaştığında, daha fazla alan elde etmek için bu ayarı kullanır (faktör> 1).
ÇATIŞMA STRATEJİSİ Dize OrientDB MVCC'nin eski bir kayda karşı yürüttüğü bir güncelleme veya silme işlemi bulması durumunda çakışmaları ele almak için kullandığı stratejiyi tanımlar.

Aşağıdaki tablo, Çatışma stratejilerinin bir listesini sunmaktadır.

Sr.No. Strateji ve Açıklama
1

Version

Sürümler farklı olduğunda bir istisna atar. Bu varsayılan ayardır.

2

Content

Sürümlerin farklı olması durumunda içerikteki değişiklikleri kontrol eder, aksi takdirde istisna atmamak için en yüksek sürümü kullanır.

3

Automerge

Değişiklikleri birleştirir.

Misal

Küme Alter komutunu öğrenmek için aşağıdaki örnek sorguları deneyin.

Bir kümenin adını Employee'den Employee2'ye değiştirmek için aşağıdaki komutu yürütün.

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

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Cluster updated successfully

Küme kimliğini kullanarak Employee2 olan bir kümenin adını Employee olarak değiştirmek için aşağıdaki komutu yürütün.

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

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Cluster updated successfully

Küme çakışması stratejisini otomatikleştirecek şekilde değiştirmek için aşağıdaki komutu yürütün.

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

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Cluster updated successfully

Truncate Cluster komutu, bir kümenin tüm kayıtlarını siler.

Aşağıdaki ifade, Truncate Cluster Command'ın temel sözdizimidir.

TRUNCATE CLUSTER <cluster-name>

Nerede <cluster-name> kümenin adıdır.

Misal

Sales adlı kümeyi kesmek için aşağıdaki sorguyu deneyin.

Orientdb {db = demo}> TRUNCATE CLUSTER Profile

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Cluster truncated successfully.

Drop Clusterkomut, kümeyi ve tüm ilgili içeriğini kaldırır. Bu işlem kalıcıdır ve geri alınır.

Aşağıdaki ifade, Drop Cluster komutunun temel sözdizimidir.

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

Nerede <cluster-name> kaldırmak istediğiniz kümenin adını tanımlar ve <cluster-id> Kaldırmak istediğiniz kümenin kimliğini tanımlar.

Misal

Satış kümesini kaldırmak için aşağıdaki komutu deneyin.

orientdb> DROP CLUSTER Sales

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Cluster dropped successfully

PropertyOrientDB'de veritabanı tablosunda bir sınıf ve sütun alanı gibi çalışır. Özellik Oluştur, belirli bir sınıf için bir özellik oluşturmak için kullanılan bir komuttur. Komutta kullandığınız sınıf adı mevcut olmalıdır.

Aşağıdaki ifade, Özellik Oluştur komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<class-name> - Mülkü oluşturmak istediğiniz sınıfı tanımlar.

<property-name> - Özelliğin mantıksal adını tanımlar.

<property-type> - Oluşturmak istediğiniz mülkün türünü tanımlar.

<linked-type> - Konteyner özellik tipinde kullanılan konteyner tipini tanımlar.

<linked-class> - Konteyner özellik tipinde kullanılan konteyner sınıfını tanımlar.

Aşağıdaki tablo, OrientDB'nin depolanacak veri türünü bilmesi için mülk için veri türünü sağlar.

BOOLE TAM KISA UZUN
YÜZER TARİH STRING GÖMÜLÜ
BAĞLANTI BAYT İKİLİ ÇİFT

Bunlara ek olarak, konteyner olarak çalışan birkaç başka mülk türü vardır.

EMBEDDEDLIST EMBEDDEDSET EMBEDDEDMAP
BAĞLANTI LİSTESİ LINKSET LINKMAP

Misal

String türünün Employee sınıfında bir özellik adı oluşturmak için aşağıdaki örneği deneyin.

orientdb> CREATE PROPERTY Employee.name STRING

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Property created successfully with id = 1

Alter Propertybelirli bir sınıfın Özelliğini değiştirmek veya güncellemek için kullanılan bir komuttur. Özelliği değiştirmek, bir tablonun alanlarını değiştirmek anlamına gelir. Bu bölümde, özelliği nasıl güncelleyeceğinizi öğrenebilirsiniz.

Aşağıdaki ifade, Alter Property Command'ın temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<class> - Özelliğin ait olduğu sınıfı tanımlar.

<property> - Güncellemek istediğiniz özelliği tanımlar.

<attribute-name> - Güncellemek istediğiniz bir mülkün niteliğini tanımlar.

<attribute-value> - Öznitelikte ayarlamak istediğiniz değeri tanımlar.

Aşağıdaki tablo, özelliği değiştirecek niteliklerin listesini tanımlar.

Öznitelik Tür Açıklama
LINKEDCLASS Dize Bağlantılı sınıf adını tanımlar. Mevcut bir değeri kaldırmak için NULL kullanın.
LINKEDTYPE Dize Bağlantı türünü tanımlar. Mevcut bir değeri kaldırmak için NULL kullanın.
MIN Tamsayı Minimum değeri bir kısıtlama olarak tanımlar. Mevcut bir kısıtlamayı kaldırmak için NULL kullanın.
ZORUNLU Boole Özelliğin bir değer gerektirip gerektirmediğini tanımlar.
MAX Tamsayı Maksimum değeri sınırlama olarak tanımlar. Mevcut bir kısıtlamayı kaldırmak için NULL kullanın.
İSİM Dize Özellik adını tanımlar.
GEÇERSİZ DEĞİL Boole Özelliğin bir NULL değerine sahip olup olamayacağını tanımlar.
REGEX Dize Normal İfadeyi kısıtlama olarak tanımlar. Mevcut bir kısıtlamayı kaldırmak için NULL kullanın.
TÜR Dize Bir özellik türünü tanımlar.
TOPLA Dize Harmanlamayı tanımlanan karşılaştırma stratejilerinden birine ayarlar. Varsayılan olarak, büyük / küçük harfe duyarlı (cs) olarak ayarlanmıştır. Ayrıca büyük / küçük harfe duyarlı olmayacak (ci) olarak da ayarlayabilirsiniz.
SADECE OKU Boole Özellik değerinin sabit olup olmadığını tanımlar. Yani, ilk atamadan sonra değiştirmek mümkünse. Oluşturma sırasında değişmez değerlere sahip olmak için VARSAYILAN ile birlikte kullanın.
ÖZEL Dize Özel özellikleri tanımlar. Özel özellikler için sözdizimi, stereotype = icon gibi <özel-ad> = <özel-değer> şeklindedir.
VARSAYILAN   Varsayılan değeri veya işlevi tanımlar.

Note - İSİM veya TİP'i değiştiriyorsanız, bu komutun güncellenmesi veri miktarına bağlı olarak biraz zaman alacaktır.

Misal

Alter özelliğini anlamak için aşağıda verilen bazı sorguları deneyin.

Müşteri sınıfında mülkün adını "yaş" dan "doğmuş" olarak değiştirmek için aşağıdaki sorguyu yürütün.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Property altered successfully

'Ad'ı' Müşteri 'sınıfının zorunlu özelliği yapmak için aşağıdaki sorguyu yürütün.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Property altered successfully

Drop propertykomutu özelliği şemadan kaldırır. Özellik değerlerini kayıttan kaldırmaz, sadece şemayı değiştirir.

Aşağıdaki ifade, Drop Property Command'ın temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<class> - Özelliğin bulunduğu sınıfı tanımlar.

<property> - Kaldırmak istediğiniz özelliği tanımlar.

[Force] - Mülkte bir veya daha fazla dizin tanımlanması durumunda.

Misal

'Müşteri' sınıfından 'yaş' özelliğini kaldırmak için aşağıdaki komutu deneyin.

orientdb> DROP PROPERTY Customer.age

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Property dropped successfully

OrientDB veritabanı sadece bir Doküman veritabanı değil, aynı zamanda bir Grafik veritabanıdır. Vertex ve Edge gibi yeni kavramlar, verileri grafik biçiminde depolamak için kullanılır. Köşelere polimorfizm uygular. Vertex için temel sınıf V.

Bu bölümde, grafik verilerini depolamak için köşe noktası oluşturmayı öğrenebilirsiniz.

Aşağıdaki ifade Köşe Oluştur Komutu'nun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<class> - Köşenin ait olduğu sınıfı tanımlar.

<cluster> - Köşeyi depoladığı kümeyi tanımlar.

<field> - Ayarlamak istediğiniz alanı tanımlar.

<expression> - Alan için ayarlanacak ifadeyi tanımlar.

Misal

Köşenin nasıl oluşturulacağını anlamak için aşağıdaki örneği deneyin.

'İsim' olmadan ve temel sınıf V'de bir köşe oluşturmak için aşağıdaki sorguyu yürütün.

orientdb> CREATE VERTEX

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Created vertex 'V#9:0 v1' in 0.118000 sec(s)

V1 adında yeni bir köşe sınıfı oluşturmak için aşağıdaki sorguyu yürütün, ardından bu sınıfta köşe oluşturun.

orientdb> CREATE CLASS V1 EXTENDS V 
orientdb> CREATE VERTEX V1

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Created vertex 'V1#14:0 v1' in 0.004000 sec(s)

Brand = 'Maruti' ve name = 'Swift' gibi özelliklerini tanımlayarak v1 adlı sınıfın yeni bir tepe noktasını oluşturmak için aşağıdaki sorguyu yürütün.

orientdb> CREATE VERTEX V1 SET brand = 'maruti', name = 'swift'

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Created vertex 'V1#14:1{brand:maruti,name:swift} v1' in 0.004000 sec(s)

OrientDB'de Vertex'i Taşı komutu, bir veya daha fazla köşeyi mevcut konumdan farklı bir sınıfa veya kümeye taşımaktır. Belirli bir tepe noktasına hareket komutu uyguluyorsanız, bu tepe noktasına bağlı tüm kenarları güncelleyecektir. Köşeyi taşımak için bir küme belirliyorsanız, bu, köşeleri hedef kümenin sunucu sahibine taşır.

Aşağıdaki ifade, Move Vertex Command'ın temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<source>- Taşımak istediğiniz tepe noktasını tanımlar. Belirli bir tepe noktasının Kayıt Kimliğini veya tepe noktaları için Kayıt Kimliği dizisini kabul eder.

<destination>- Köşeyi nereye taşımak istediğinizi tanımlar. Hedef olarak sınıfı veya bir kümeyi destekler.

SET - Değerleri alanlara ayarlar.

MERGE - Değerleri JSON aracılığıyla alanlara ayarlar.

BATCH - Parti boyutunu tanımlar.

Note- Bu komut tüm bağlı kenarları günceller, ancak bağları günceller. Graph API kullanılırken, köşelere bağlı kenarların kullanılması önerilir.

Misal

Köşelerin nasıl taşınacağını öğrenmek için aşağıdaki örnekleri deneyin.

Kayıt Kimliği # 11: 2'ye sahip tek bir tepe noktasını mevcut konumundan Sınıf Çalışanı'na taşımak için aşağıdaki sorguyu yürütün.

orientdb> MOVE VERTEX #11:2 TO CLASS:Employee

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alırsınız -

Move vertex command executed with result '[{old:#11:2, new:#13:0}]' in 0.022000 sec(s)

Köşe kümelerini 'Müşteri' sınıfından 'Çalışan' sınıfına taşımak için aşağıdaki sorguyu yürütün.

orientdb> MOVE VERTEX (SELECT FROM Customer) TO CLASS:Employee

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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 Vertexkomutu, veritabanından köşeleri kaldırmak için kullanılır. Silme sırasında, kenarlarla tutarlılığı kontrol eder ve korur ve tüm çapraz referansları (kenarlarla birlikte) silinen tepe noktasına kaldırır.

Aşağıdaki ifade, Köşe Silme Komutu'nun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<vertex> - Sınıfını, Kayıt Kimliğini kullanarak veya bir alt sorgu aracılığıyla kaldırmak istediğiniz tepe noktasını tanımlar.

WHERE - Komutun hangi kayıtları kaldırdığını belirlemek için koşulu filtreler.

LIMIT - Kaldırılacak maksimum kayıt sayısını tanımlar.

BATCH - Komutun bir seferde kaç kaydı kaldıracağını tanımlar ve bellek kullanımından tasarruf etmek için büyük işlemleri daha küçük bloklara ayırmanıza olanak tanır.

Misal

Tek tepe noktasını veya birden çok tepe noktasını nasıl sileceğinizi öğrenmek için aşağıdaki komutu deneyin.

'# 14: 1' tepe noktasını kaldırmak için aşağıdaki komutu yürütün.

orientdb> DELETE VERTEX #14:1

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

'İsSpam' özelliği ile işaretlenmiş 'Müşteri' sınıfından tüm köşeleri kaldırmak için aşağıdaki komutu yürütün.

orientdb> DELETE VERTEX Customer WHERE isSpam = TRUE

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

OrientDB'de kavram Edgebazı özelliklerin yardımıyla köşeler arasında bir ilişki gibi çalışır. Kenarlar ve köşeler, bir grafik veritabanının ana bileşenleridir. Kenarlar üzerinde polimorfizm uygular. Bir Edge için temel sınıf E'dir. Kenarları uygularken, kaynak veya hedef köşeleri eksikse veya yoksa, işlem geri alınacaktır.

Aşağıdaki ifade, Create Edge Command'ın temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<class> - Kenar için sınıf adını tanımlar.

<cluster> - Kenarı saklamak istediğiniz kümeyi tanımlar.

JSON - Kayıt olarak ayarlanacak JSON içeriği sağlar.

RETRY - Çatışma durumunda yapılacak yeniden deneme sayısını tanımlar.

WAIT - Yeniden denemeler arasındaki gecikme süresini milisaniye cinsinden tanımlar.

BATCH - Komutu daha küçük bloklara bölüp parçalamayacağını ve toplu işlerin boyutunu tanımlar.

Misal

İki köşe # 9: 0 ve # 14: 0 arasında bir kenar E oluşturmak için aşağıdaki sorguyu yürütün.

orientdb> CREATE EDGE FROM #11:4 TO #13:2

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Created edge '[e[#10:0][#9:0->#14:0]]' in 0.012000 sec(s)

Yeni bir kenar türü ve yeni bir tür kenar oluşturmak için aşağıdaki sorguyu yürütün.

orientdb> CREATE CLASS E1 EXTENDS E 
orientdb> CREATE EDGE E1 FROM #10:3 TO #11:4

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Created edge '[e[#10:1][#10:3->#11:4]]' in 0.011000 sec(s)

Update edgekomutu, mevcut veritabanındaki uç kayıtlarını güncellemek için kullanılır. Bu, güncellemeniz durumunda, köşelerle grafik tutarlılığını kontrol etmeye ve korumaya ek olarak gerçek güncelleme komutuna eşdeğerdir.out ve in özellikleri.

Aşağıdaki ifade, Update Edge Komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<edge>- Güncellemek istediğiniz kenarı tanımlar. Arasında seçim yapabilirsinizClass kenarları sınıfa göre güncelleyen, Cluster CLUSTER öneki kullanarak kenarları kümeye göre güncelleyen veya Record ID kayıt kimliğine göre güncellenen kenarlar.

SET - Alanı verilen değerlere günceller.

INCREMENT - Verilen alanı değer kadar artırır.

ADD - Bir alan koleksiyonuna eklenecek bir öğe tanımlar.

REMOVE - Bir alan koleksiyonundan kaldırılacak bir öğe tanımlar.

PUT - Harita alanlarına yerleştirilecek bir giriş tanımlar.

RETURN - Güncellemeyi çalıştırdıktan sonra dönmek istediğiniz ifadeyi tanımlar.

WHERE - Filtre durumunu tanımlar.

LOCK - Kaydın yükleme ve güncellemeler arasında nasıl kilitlendiğini tanımlar.

LIMIT - Maksimum kayıt sayısını tanımlar.

Misal

Alan Id = 001 ve kişi adı = Krishna olan adres tablosundan veri alarak kişi sınıfındaki 'adres' adlı kenarın güncellenmesine bir örnek düşünelim.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Delete edgekomut, veritabanını kaldırmak için kullanılır. Bu, hem "içeri" hem de "dışarı" köşe özelliklerinden kenara yönelik tüm çapraz referansları kaldırarak köşelerle tutarlılığı kontrol etmenin ve korumanın eklenmesiyle silme komutuna eşdeğerdir.

Aşağıdaki ifade, Kenar Sil komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

FROM - Silinecek kenarın başlangıç ​​noktası tepe noktasını tanımlar.

To - Silinecek kenarın bitiş noktası tepe noktasını tanımlar.

WHERE - Filtreleme koşullarını tanımlar.

LIMIT - Silinecek maksimum kenar sayısını tanımlar.

BATCH - İşlem için blok boyutunu tanımlar.

Misal

Kenarların nasıl silineceğini öğrenmek için aşağıdaki örnekleri deneyin.

İki köşe arasındaki kenarı silmek için aşağıdaki sorguyu yürütün (# 11: 2, # 11: 10). Ancak iki köşe arasında bir veya daha fazla kenar olma ihtimali olabilir. Böylece, doğru işlevsellik için date özelliğini kullanıyoruz. Bu sorgu, 'üzerinde oluşturulan kenarları silecektir.2015-01-15' ve sonra.

orientdb {db = demo}> DELETE EDGE FROM #11:2 TO #11:10 WHERE date >= "2012-01-15"

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Delete record(s) '2' in 0.00200 sec(s)

'# 11: 5' tepe noktasından '# 11: 10' tepe noktasına kadar olan ve 'sınıf = Müşteri' ile ilgili olan kenarları silmek için aşağıdaki sorguyu yürütün.

orientdb {db = demo}> DELETE EDGE FROM #11:5 TO #11:10 WHERE @class = 'Customer'

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Delete record(s) '2' in 0.00200 sec(s)

Bu bölüm, OrientDB'deki farklı işlev türlerinin tam referansını açıklamaktadır. Aşağıdaki tablo, işlevlerine göre kategorize edilen işlevlerin listesini tanımlar.

Grafik İşlevleri

Sr.No. Fonksiyon Adı ve Tanımı
1

Out():

Vertex olarak geçerli kayıttan başlayarak bitişik giden köşeleri alır.

Syntax - dışarı ([<label-1>] [, <label-n>] *)

2

In():

Vertex olarak geçerli kayıttan başlayarak bitişik gelen köşeleri alır.

Syntax - içinde ([<label-1>] [, <label-n>] *)

3

Both():

Vertex olarak mevcut kayıttan başlayarak bitişik giden ve gelen köşeleri alır.

Syntax - her ikisi de ([<label1>] [, <label-n>] *)

4

outE():

Vertex olarak geçerli kayıttan başlayarak bitişik giden kenarları alır.

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

5

inE():

Vertex olarak geçerli kayıttan başlayarak bitişik gelen kenarları alır.

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

6

bothE():

Vertex olarak geçerli kayıttan başlayarak bitişik giden ve gelen kenarları alır.

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

7

outV():

Geçerli kayıttan başlayarak giden köşeleri Edge olarak alır.

Syntax - outV ()

8

inV():

Mevcut kayıttan gelen köşeleri Edge olarak alın.

Syntax - inV ()

9

traversedElement():

Travers komutlarında geçilen elemanları döndürür.

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

10

traversedVertex():

Traverse komutlarında geçilen köşe (ler) i döndür.

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

11

traversedEdge():

Travers komutlarında geçilen kenarları döndürür.

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

12

shortestPath():

İki köşe arasındaki en kısa yolu döndürür. Yön OUT (varsayılan), IN veya İKİSİ olabilir.

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

13

dijkstra():

Dijkstra algoritmasını kullanarak iki köşe arasındaki en ucuz yolu döndürür.

Syntax - dijkstra (<sourceVertex>, <destinationVertex>, <weightEdgeFieldName> [, <direction>])

Aşağıdaki sorgularla birlikte bazı grafik işlevlerini deneyin.

Tüm giden köşeleri tüm araç köşelerinden almak için aşağıdaki sorguyu yürütün.

orientdb {db = demo}>SELECT out() from Vehicle

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

---+----------+--------- 
 # | @class   | out 
---+----------+--------- 
 0 | Vehicle  | #11:2 
 1 | Vehicle  | #13:1 
 2 | Vehicle  | #13:4 
---+----------+---------

11: 3 numaralı köşe noktasından hem gelen hem de giden köşeleri almak için aşağıdaki sorguyu yürütün.

orientdb {db = demo}>SELECT both() FROM #11:3

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

---+----------+--------+------- 
 # | @class   | out    | in  
---+----------+--------+------- 
 0 | Vehicle  | #13:2  | #10:2   
 ---+----------+-------+-------

Matematik Fonksiyonları

Sr.No. Fonksiyon Adı ve Tanımı
1

eval():

Tırnak işaretleri (veya çift tırnak) arasındaki ifadeyi değerlendirir.

Syntax - eval ('<ifade>')

2

min():

Minimum değeri döndürür. Birden fazla parametre ile çağrılırsa, tüm argümanlar arasında minimum argüman değerini döndürür.

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

3

max():

Maksimum değeri döndürür. Birden fazla parametre ile çağrılırsa, tüm bağımsız değişkenler arasındaki maksimum değeri döndürür.

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

4

sum()

Döndürülen tüm değerlerin toplamını döndürür.

Syntax - toplam (<field>)

5

abs():

Mutlak değeri verir. Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null ile çalışır.

Syntax - abs (<field>)

6

avg():

Ortalama değeri verir.

Syntax - ort (<field>)

7

count():

Sorgu koşuluyla eşleşen kaydı sayar. Alan olarak * kullanılmıyorsa, kayıt yalnızca içerik boş değilse sayılacaktır.

Syntax - say (<field>)

8

mode():

En büyük sıklıkta oluşan değeri döndürür. Hesaplamada boş değerler yok sayılır.

Syntax - mod (<field>)

9

median():

Değerler sıralandıktan sonra orta değeri veya orta değeri temsil eden enterpolasyonlu bir değeri döndürür. Hesaplamada boş değerler yok sayılır.

Syntax - medyan (<field>)

10

percentile():

N. yüzdelik dilimi döndürür. Null, hesaplamada göz ardı edilir.

Syntax - yüzdelik dilim (<field> [, <quantile-n>] *)

11

variance()

Orta varyansı verir: Ortalamadan farkın karesi ortalaması.

Syntax - varyans (<field>)

12

stddev()

Standart sapmayı döndürür: Değerlerin nasıl yayıldığının ölçüsü. Hesaplamada boş değerler yok sayılır.

Syntax - stddev (<field>)

Aşağıdaki sorguları kullanarak bazı matematik işlevlerini deneyin.

Tüm çalışanların maaşlarının toplamını almak için aşağıdaki sorguyu yürütün.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

---+----------+--------- 
 # | @CLASS   | sum 
---+----------+--------- 
 0 | null     | 150000 
---+----------+---------

Tüm çalışanların ortalama maaşını almak için aşağıdaki sorguyu yürütün.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

---+----------+--------- 
 # | @CLASS   | avg 
---+----------+--------- 
 0 | null     | 25 
---+----------+---------

Koleksiyonlar İşlevleri

Sr.No. Fonksiyon Adı ve Tanımı
1

set():

Bir kümeye değer ekler. Değer bir koleksiyonsa, kümeyle birleştirilir, aksi takdirde <value> eklenir.

Syntax - ayarla (<field>)

2

map():

Harita ilk oluşturulduğunda haritaya bir değer ekler. <value> bir haritaysa, haritayla birleştirilir, aksi takdirde <key> ve <value> çifti yeni giriş olarak haritaya eklenir.

Syntax - harita (<key>, <value>)

3

ist():

Liste ilk oluşturulduğunda listelenecek bir değer ekler. <Değer> bir koleksiyon ise, listeyle birleştirilir, aksi takdirde listeye <değer> eklenir.

Syntax - liste (<field>)

4

difference():

Toplu veya satır içi olarak çalışır. Yalnızca bir bağımsız değişken iletilirse, o zaman toplanır, aksi takdirde çalıştırılır ve parametre olarak alınan koleksiyonlar arasındaki FARKI döndürür.

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

5

first():

Çok değerli alanların (diziler, koleksiyonlar ve haritalar) yalnızca ilk öğesini alır. Çok değerli olmayan türler için yalnızca değeri döndürür.

Syntax - ilk (<field>)

6

intersect():

Toplu veya satır içi olarak çalışır. Yalnızca bir bağımsız değişken iletilirse, parametre olarak alınan koleksiyonların ETKİLEŞİMİNİ toplar, aksi takdirde yürütür ve döndürür.

Syntax - kesişme (<field> [, <field-n>] *)

7

distinct():

Bağımsız değişken olarak belirttiğiniz alana bağlı olarak yalnızca benzersiz veri girişlerini alır. Standart SQL DISTINCT ile karşılaştırıldığında temel fark, OrientDB ile parantezli bir fonksiyon ve yalnızca bir alan belirtilebilmesidir.

Syntax - farklı (<field>)

8

expand():

Bu işlevin iki anlamı vardır−

  • Bir koleksiyon alanında kullanıldığında, alandaki koleksiyonu çözer ve sonuç olarak kullanır.

  • Bir bağlantı (RID) alanında kullanıldığında, o bağın gösterdiği belgeyi genişletir.

Syntax - genişlet (<field>)

9

unionall():

Toplu veya satır içi olarak çalışır. Yalnızca bir bağımsız değişken iletilirse toplar, aksi takdirde parametre olarak alınan tüm koleksiyonların bir BİRLİĞİNİ yürütür ve döndürür. Ayrıca koleksiyon değerleri olmadan çalışır.

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

10

flatten():

Alandaki koleksiyonu çıkarır ve sonuç olarak kullanır. Kullanımdan kaldırılmıştır, bunun yerine expand () kullanın.

Syntax - düzleştir (<field>)

11

last():

Çok değerli alanların (diziler, koleksiyonlar ve haritalar) yalnızca son öğesini alır. Çok değerli olmayan türler için yalnızca değeri döndürür.

Syntax - son (<field>)

12

symmetricDifference():

Toplu veya satır içi olarak çalışır. Yalnızca bir bağımsız değişken iletilirse, parametre olarak alınan koleksiyonlar arasındaki SİMETRİK FARKI toplar, aksi takdirde yürütür ve döndürür.

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

Aşağıdaki sorguları kullanarak bazı toplama işlevlerini deneyin.

9. sınıfa ders veren bir dizi öğretmen almak için aşağıdaki sorguyu yürütün.

orientdb {db = demo}>SELECT ID, set(teacher.id) AS teacherID from classess where class_id = 9

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

---+----------+--------+-------------------------- 
 # | @CLASS   | id     | TeacherID 
---+----------+--------+-------------------------- 
 0 | null     | 9     |   1201, 1202, 1205, 1208 
---+----------+-------+---------------------------

Çeşitli Fonksiyonlar

Sr.No. Fonksiyon Adı ve Tanımı
1

date():

Bir dizeyi biçimlendiren bir tarih döndürür. <date-as-string>, dize biçimindeki tarihtir ve <format>, bu kuralları izleyen tarih biçimidir.

Syntax - tarih (<date-as-string> [<format>] [, <timezone>])

2

sysdate():

Geçerli tarih ve saati döndürür.

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

3

format():

String.format () kurallarını kullanarak bir değeri biçimlendirir.

Syntax - biçim (<biçim> [, <arg1>] (, <arg-n>] *. Md)

4

distance():

Haversine algoritmasını kullanarak dünyadaki iki nokta arasındaki mesafeyi döndürür. Koordinatlar derece olmalıdır.

Syntax - mesafe (<x-field>, <y-field>, <x-value>, <y-value>)

5

ifnull():

Geçilen alanı / değeri (veya isteğe bağlı return_value_if_not_null parametresini) döndürür. Alan / değer boş değilse, return_value_if_null döndürür.

Syntax - ifnull (<alan | değer>, <return_value_if_null> [, <return_value_if_not_null>] (, <alan & .md # 124; değer>] *)

6

coalesce():

İlk alanı / değeri, boş olmayan parametreyi döndürür. Hiçbir alan / değer boş değilse, boş döndürür.

Syntax - birleştirme (<alan | değer> [, <alan-n | değer-n>] *)

7

uuid():

Leach-Salz varyantını kullanarak 128 bitlik bir değer olarak bir UUID oluşturur.

Syntax - uuid ()

8

if():

Bir koşulu (ilk parametreler) değerlendirir ve koşul doğruysa ikinci parametreyi, aksi takdirde üçüncü parametreyi döndürür.

Syntax - eğer (<ifade>, <sonuç-varsa-doğru>, <sonuç-yanlış-yanlış>)

Aşağıdaki sorguları kullanarak bazı Misc işlevlerini deneyin.

If ifadesinin nasıl yürütüleceğini öğrenmek için aşağıdaki sorguyu yürütün.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Sistem tarihini almak için aşağıdaki sorguyu yürütün.

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

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Bu işlevi kapsamlı bir şekilde kullanarak, OrientDB verilerini kolayca değiştirebilirsiniz.

Sequencesotomatik artış mekanizmasında kullanılan bir kavramdır ve OrientDB v2.2'de tanıtılmıştır. Veritabanı terminolojisinde sıra, sayaç alanını yöneten bir yapıdır. Basitçe söylenen diziler çoğunlukla her zaman artan bir sayıya ihtiyaç duyduğunuzda kullanılır. İki türü destekler−

ORDERED - İşaretçi her seferinde yeni bir değer döndüren .next yöntemini çağırır.

CACHED- Sıra, her düğümdeki 'N' öğeyi önbelleğe alacaktır. Kullandığımız her öğeyi aramak için.next(), önbellek birden fazla öğe içerdiğinde tercih edilir.

Sıra Oluştur

Sıra genellikle bir kişinin kimlik değerini otomatik olarak artırmak için kullanılır. OrientDB'nin diğer SQL kavramları gibi, aynı zamanda RDBMS'deki Sıra ile benzer işlemleri önceden gerçekleştirir.

Aşağıdaki ifade, dizileri oluşturmak için temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<Sequence> - Sıranın yerel adı.

TYPE - ORDERED veya CACHED sıra türünü tanımlar.

START - Başlangıç ​​değerini tanımlar.

INCREMENT - Her .next yöntem çağrısı için artışı tanımlar.

CACHE - Sıra türünü önbelleğe almak için kullanmanız durumunda, önbelleğe alınacak değer sayısını tanımlar.

1201 sayısıyla başlayan 'seqid' adlı bir dizi oluşturalım. Bu örneği sıra ile uygulamak için aşağıdaki sorguları deneyin.

CREATE SEQUENCE seqid START 1201

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Sequence created successfully

Hesap tablosunun kimlik değerini eklemek için 'seqid' sırasını kullanmak için aşağıdaki sorguyu deneyin.

INSERT INTO Account SET id = sequence('seqid').next()

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Insert 1 record(s) in 0.001000 sec(s)

Sırayı Değiştir

Sırayı değiştir, bir dizinin özelliklerini değiştirmek için kullanılan bir komuttur. Sıra türü hariç tüm sıra seçeneklerini değiştirecektir.

Aşağıdaki ifade, sırayı değiştirmek için temel sözdizimidir.

ALTER SEQUENCE <sequence> [START <start-point>] 
[INCREMENT <increment>] [CACHE <cache>]

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<Sequence> - Değiştirmek istediğiniz sırayı tanımlar.

START - Başlangıç ​​değerini tanımlar.

INCREMENT - Her .next yöntem çağrısı için artışı tanımlar.

CACHE - Sıra türünü önbelleğe almak için kullanmanız durumunda önbelleğe alınacak değerin sayısını tanımlar.

Seqid adlı bir dizinin başlangıç ​​değerini '1201'den 1000'e' değiştirmek için aşağıdaki sorguyu deneyin.

ALTER SEQUENCE seqid START 1000

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Altered sequence successfully

Bırak Sırası

Bırak sekansı, bir sekansı bırakmak için kullanılan bir komuttur.

Aşağıdaki ifade, bir diziyi bırakmak için temel sözdizimidir.

DROP SEQUENCE <sequence>

Nerede <Sequence> bırakmak istediğiniz sırayı tanımlar.

'Seqid' adlı bir sıra bırakmak için aşağıdaki sorguyu deneyin.

DROP SEQUENCE seqid

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Sequence dropped successfully

Index veri tabanındaki bir veri konumuna işaret eden bir işaretçidir. Indexingbir veri tabanındaki her kaydı aramak zorunda kalmadan verileri hızlı bir şekilde bulmak için kullanılan bir kavramdır. OrientDB, dört dizin algoritmasını ve her biri içinde birkaç türü destekler.

Dört tür dizin şunlardır:

SB-Ağaç Dizini

Diğer dizin türlerinde bulunan özelliklerin iyi bir karışımını sağlar. Bunu genel yardımcı program için kullanmak daha iyidir. Dayanıklıdır, işlemseldir ve aralık sorgularını destekler. Varsayılan dizin türüdür. Bu algoritmayı destekleyen farklı türdeki eklentiler şunlardır:

  • UNIQUE- Bu dizinler yinelenen anahtarlara izin vermez. Bileşik dizinler için bu, bileşik anahtarların benzersizliğine işaret eder.

  • NOTUNIQUE - Bu dizinler yinelenen anahtarlara izin verir.

  • FULLTEXT- Bu dizinler herhangi bir metin kelimesine dayanmaktadır. Bunları sorgularda kullanabilirsiniz.CONTAINSTEXT Şebeke.

  • DICTIONARY - Bu dizinler UNIQUE kullananlara benzer, ancak yinelenen anahtarlar durumunda mevcut kaydı yeni kayıtla değiştirirler.

Hash Endeksi

Daha hızlı çalışır ve disk kullanımında çok hafiftir. Dayanıklıdır, işlemseldir, ancak aralık sorgularını desteklemez. Dakik aramalarda daha hızlı olmasını sağlayan HASHMAP gibi çalışır ve diğer dizin türlerinden daha az kaynak tüketir. Bu algoritmayı destekleyen farklı türdeki eklentiler şunlardır:

  • UNIQUE_HASH_INDEX- Bu dizinler yinelenen anahtarlara izin vermez. Bileşik dizinler için bu, bileşik anahtarların benzersizliğine işaret eder.

  • NOTUNIQUE_HASH_INDEX - Bu dizinler yinelenen anahtarlara izin verir.

  • FULLTEXT_HASH_INDEX- Bu dizinler herhangi bir metin kelimesine dayanmaktadır. Bunları CONTAINSTEXT operatörü aracılığıyla sorgularda kullanabilirsiniz.

  • DICTIONARY_HASH_INDEX - Bu dizinler, kullananlara benzer UNIQUE_HASH_INDEX, ancak yinelenen anahtarlar durumunda, mevcut kaydı yeni kayıtla değiştirirler.

Lucene Tam Metin Dizini

İyi tam metin dizinleri sağlar, ancak diğer türleri dizine eklemek için kullanılamaz. Dayanıklıdır, işlemseldir ve aralık sorgularını destekler.

Lucene Mekansal Endeksi

İyi uzamsal indeksler sağlar, ancak diğer türleri indekslemek için kullanılamaz. Dayanıklıdır, işlemseldir ve aralık sorgularını destekler.

Dizinler Oluşturma

Dizin oluştur, belirli bir şema üzerinde bir dizin oluşturma komutudur.

Aşağıdaki ifade, bir dizin oluşturmak için temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<name>- Dizinin mantıksal adını tanımlar. Bir şema özelliğine bağlı otomatik bir dizin oluşturmak için <class.property> gösterimini de kullanabilirsiniz. <class>, şema sınıfını kullanır ve <property>, sınıfta oluşturulan özelliği kullanır.

<class-name>- Dizine eklenecek otomatik dizini oluşturduğunuz sınıfın adını sağlar. Bu sınıf, veritabanında bulunmalıdır.

<prop-names>- Otomatik dizinin indekslemesini istediğiniz özelliklerin listesini sağlar. Bu özellikler şemada zaten mevcut olmalıdır.

<type> - Oluşturmak istediğiniz algoritmayı ve indeks türünü sağlar.

<key-type> - Otomatik dizinler ile isteğe bağlı anahtar türü sağlar.

<metadata> - JSON temsilini sağlar.

Misal

Sales_user kullanıcısının "ID" özelliğine bağlı otomatik dizin oluşturmak için aşağıdaki sorguyu deneyin.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Creating index... 
Index created successfully with 4 entries in 0.021000 sec(s)

Endeksleri Sorgulama

Dizindeki kayıtları almak için seçme sorgusunu kullanabilirsiniz.

'İndexforId' adlı dizinin anahtarlarını almak için aşağıdaki sorguyu deneyin.

SELECT FROM INDEX:indexforId

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

----+------+----+----- 
#   |@CLASS|key |rid   
----+------+----+----- 
0   |null  |1   |#11:7 
1   |null  |2   |#11:6 
2   |null  |3   |#11:5 
3   |null  |4   |#11:8 
----+------+----+-----

Düşürme Dizinleri

Belirli bir dizini bırakmak istiyorsanız, bu komutu kullanabilirsiniz. Bu işlem bağlantılı kayıtları kaldırmaz.

Aşağıdaki ifade, bir dizini bırakmak için temel sözdizimidir.

DROP INDEX <name>

Nerede <name> düşürmek istediğiniz dizinin adını sağlar.

Sales_user kullanıcısının 'ID' adlı bir dizini bırakmak için aşağıdaki sorguyu deneyin.

DROP INDEX sales_users.Id

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Index dropped successfully

RDBMS gibi, OrientDB de işlemlerin ACID özelliklerini destekler. Birtransactionbir veritabanı yönetim sistemi içinde gerçekleştirilen bir çalışma birimini içerir. Bir veritabanı ortamında işlemleri sürdürmenin iki ana nedeni vardır.

  • Hatalardan eşzamanlı kurtarmaya izin vermek ve sistem arızaları durumunda bile bir veritabanını tutarlı tutmak için.

  • Bir veritabanına eşzamanlı olarak erişen programlar arasında yalıtım sağlamak için.

Varsayılan olarak, veritabanı işlemi Atomik, Tutarlı, Yalıtılmış ve Dayanıklı özellikler gibi ACID özelliklerini izlemelidir. Ancak OrientDB, ACID uyumlu bir veritabanıdır, yani ACID kavramıyla çelişmez veya onu geçersiz kılmaz, ancak NoSQL veritabanını işlerken algısını değiştirir. ACID özelliklerinin NoSQL veritabanıyla birlikte nasıl çalıştığına bir göz atın.

Atomic - Veritabanını değiştirmek için bir şey yaptığınızda, değişikliğin bir bütün olarak çalışması veya başarısız olması gerekir.

Consistent - Veritabanı tutarlı kalmalıdır.

Isolated - Aynı anda başka işlem yürütmeleri yapılıyorsa, kullanıcı eşzamanlı yürütmedeki kayıtları göremez.

Durable - Sistem çökerse (donanım veya yazılım), veritabanının kendisi bir yedek alabilmelidir.

Veritabanı işlemi Commit ve Rollback komutları kullanılarak gerçekleştirilebilir.

Kaydet

Commit, tüm değişiklikleri veritabanına kaydederek işlemi kapatmak anlamına gelir. Geri alma, veritabanı durumunu işlemi açtığınız noktaya kadar kurtarmak anlamına gelir.

Aşağıdaki ifade, COMMIT veritabanı komutunun temel sözdizimidir.

COMMIT

Note - Bu komutu yalnızca belirli bir veri tabanına bağlandıktan sonra ve işleme başladıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, bu öğreticinin önceki bir bölümünde oluşturduğumuz 'demo' adlı aynı veritabanını kullanacağız. Commit işleminin işleyişini göreceğiz ve işlemleri kullanarak bir kayıt saklayacağız.

İşlemi önce aşağıdaki BEGIN komutunu kullanarak başlatmanız gerekir.

orientdb {db = demo}> BEGIN

Aşağıdaki komutu kullanarak id = 12 ve name = satish.P değerlerine sahip bir çalışan tablosuna bir kayıt ekleyin.

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

İşlemi gerçekleştirmek için aşağıdaki komutu kullanabilirsiniz.

orientdb> commit

Bu işlem başarıyla gerçekleştirildiyse, aşağıdaki çıktıyı alacaksınız.

Transaction 2 has been committed in 4ms

Geri alma

Geri alma, veritabanı durumunu işlemi açtığınız noktaya kadar kurtarmak anlamına gelir.

Aşağıdaki ifade, ROLLBACK veritabanı komutunun temel sözdizimidir.

ROLLBACK

Note - Bu komutu yalnızca belirli bir veri tabanına bağlandıktan sonra ve işleme başladıktan sonra kullanabilirsiniz.

Misal

Bu örnekte, öğreticinin önceki bir bölümünde oluşturduğumuz 'demo' adlı aynı veritabanını kullanacağız. Geri alma işleminin işleyişini göreceğiz ve işlemleri kullanarak bir kayıt kaydedeceğiz.

İşlemi önce aşağıdaki BEGIN komutunu kullanarak başlatmalısınız.

orientdb {db = demo}> BEGIN

Aşağıdaki komutu kullanarak id = 12 ve name = satish.P değerlerine sahip bir çalışan tablosuna bir kayıt ekleyin.

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

Tablo çalışanının kayıtlarını almak için aşağıdaki komutu kullanabilirsiniz.

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

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Bu işlemi Geri Almak için aşağıdaki komutu kullanabilirsiniz.

orientdb> ROLLBACK

Employee tablosundan aynı kaydı almak için seçme sorgusunu tekrar kontrol edin.

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

Geri Alma başarılı bir şekilde yürütülürse, çıktıda bulunan 0 kayıt alırsınız.

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

OrientDB HooksKullanıcı uygulamalarındaki her CRUD işleminden önce ve sonra dahili olayları etkinleştiren veritabanı terminolojisindeki tetikleyicilerden başka bir şey değildir. Özel doğrulama kuralları yazmak, güvenliği zorlamak veya ilişkisel bir DBMS'ye karşı kopyalama gibi harici olayları düzenlemek için kancaları kullanabilirsiniz.

OrientDB iki tür kancayı destekler -

Dynamic Hook - Sınıf düzeyinde ve / veya Belge düzeyinde oluşturulabilen tetikleyiciler.

Java (Native) Hook - Java sınıfları kullanılarak oluşturulabilen tetikleyiciler.

Dinamik Kancalar

Dinamik kancalar Java kancalarından daha esnektir, çünkü çalışma zamanında değiştirilebilirler ve gerekirse belge başına çalışabilirler, ancak Java kancalarından daha yavaştırlar.

Belgelerinize kancalar uygulamak için önce sınıflarınızın genişlemesine izin verin OTriggeredtemel sınıf. Daha sonra, ilgili olay için özel bir özellik tanımlayın. Mevcut olaylar aşağıdadır.

  • onBeforeCreate - Aradı before yeni bir belge oluşturmak.

  • onAfterCreate - Aradı after yeni bir belge oluşturmak.

  • onBeforeRead - Aradı before bir belge okumak.

  • onAfterRead - Aradı after bir belge okumak.

  • onBeforeUpdate - Aradı before bir belgenin güncellenmesi.

  • onAfterUpdate - Aradı after bir belgenin güncellenmesi.

  • onBeforeDelete - Aradı before bir belgeyi silme.

  • onAfterDelete - Aradı after bir belgeyi silme.

Dynamic Hooks arayabilir -

  • SQL, Javascript veya OrientDB ve JVM tarafından desteklenen herhangi bir dilde yazılmış işlevler.

  • Java statik yöntemleri.

Sınıf Seviyesi Kancaları

Sınıf düzeyinde kancalar, bir sınıfla ilgili tüm belgeler için tanımlanır. Aşağıda, Fatura belgelerine karşı sınıf düzeyinde hareket eden bir kanca oluşturmaya bir örnek verilmiştir.

CREATE CLASS Invoice EXTENDS OTriggered 
ALTER CLASS Invoice CUSTOM onAfterCreate = invoiceCreated

Fonksiyonu oluşturalım invoiceCreated Sunucu konsolunda oluşturulan fatura numarasını yazdıran Javascript'te.

CREATE FUNCTION invoiceCreated "print('\\nInvoice created: ' + doc.field ('number'));"
LANGUAGE Javascript

Şimdi yeni bir Invoice belge.

INSERT INTO Invoice CONTENT {number: 100, notes: 'This is a test}

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Invoice created: 100

Belge Seviyesi Kanca

Yalnızca bir veya daha fazla belgeye karşı özel bir eylem tanımlayabilirsiniz. Bunu yapmak için sınıfınızın genişlemesine izin verinOTriggered sınıf.

Örneğin, mevcut bir Profil sınıfına karşı Javascript işlevi olarak, = 'Premium' mülk hesabına sahip tüm belgeler için bir tetikleyici yürütelim. Belgelerin silinmesini önlemek için tetikleyici çağrılacaktır.

ALTER CLASS Profile SUPERCLASS OTriggered UPDATE Profile 
SET onBeforeDelete = 'preventDeletion' WHERE account = 'Premium'

Oluşturalım preventDeletion() Javascript işlevi.

CREATE FUNCTION preventDeletion "throw new java.lang.RuntimeException('Cannot 
delete Premium profile ' + doc)" LANGUAGE Javascript

Ve sonra bir 'Premium' hesabı silmeye çalışarak kancayı test edin.

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

JAVA Kancaları

OrientDB Kancalarının (tetikleyiciler) yaygın kullanım durumlarından biri, herhangi bir veya tüm sınıflar için oluşturulan ve güncellenen tarihleri ​​yönetmektir. Örneğin, birCreatedDate alan bir kayıt oluşturulduğunda ve bir UpdatedDate alan bir kayıt güncellendiğinde ve bunu, mantığı veritabanı katmanında bir kez uygulayacağınız ve uygulama katmanında bir daha bunun için endişelenmenize gerek kalmayacak şekilde yapın.

Oluşturmadan önce indirmeniz gerekecek orientdb-core.jarAşağıdaki bağlantıyı ziyaret ederek dosyayı OrientDB core indirin . Daha sonra bu jar dosyasını Java kaynak dosyasını depolamak istediğiniz klasöre kopyalayın.

Kanca Dosyası Oluştur

Adlı bir Java dosyası oluşturun HookTest.java, Java dilini kullanarak Hook mekanizmasını test edecek.

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;  
   }  
}

Yukarıdaki örnek kod, o sınıfın bir kaydını her oluşturduğunuzda veya güncellediğinizde uygun yorumu yazdırır.

Bir kanca dosyası daha ekleyelim setCreatedUpdatedDates.java aşağıdaki gibi -

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; 
      } 
   }  
}

Yukarıdaki kodun yaptığı şey, 'harfleriyle başlayan herhangi bir sınıfı aramaktır.r'veya't've kayıt oluşturulduğunda CreatedDate ve UpdatedDate'i ayarlar ve kayıt her güncellendiğinde yalnızca Güncelleme Tarihini ayarlar.

Java Hook'larını derleyin

Aşağıdaki komutu kullanarak Java kodunu derleyin. Note: İndirilen jar dosyasını ve bu Java dosyalarını aynı klasörde saklayın.

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

Derlenmiş Kodu OrientDB Sunucusunun Bulabileceği Yerlere Taşıyın

Bitmiş .jar dosyasını, OrientDB sunucunuzun onları arayacağı dizine kopyalamanız gerekir. Bu, './libOrientDB Sunucunuzun kök dizininizin altındaki klasör şöyle görünecektir -

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

OrientDB Sunucu Yapılandırma Dosyasında Test Kancasını Etkinleştirin

Düzenle $ORIENTDB_HOME/config/orientdb-server-config.xml ve aşağıdaki bölümü dosyanın sonuna yakın bir yere ekleyin.

<hooks> 
      <hook class = "HookTest" position = "REGULAR"/> 
   </hooks> 
   ... 
</orient-server>

OrientDB Sunucusunu Yeniden Başlatın

OrientDB Sunucusunu yeniden başlattığınızda, içinde tanımladığınız kanca orientdb-server-config.xmlşimdi aktif. Bir OrientDB konsolu başlatın, onu veritabanınıza bağlayın ve aşağıdaki komutu çalıştırın -

INSERT INTO V SET ID = 1;

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Ran create hook

Şimdi aşağıdaki komutu çalıştırın -

UPDATE V SET ID = 2 WHERE ID = 1;

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Ran update hook

OrientDB Sunucu Yapılandırma Dosyasında Gerçek Kancayı Etkinleştirin

Düzenle $ORIENTDB_HOME/config/orientdb-server-config.xml ve kancalar bölümünü aşağıdaki gibi değiştirin -

<hooks> 
      <hook class="setCreatedUpdatedDates" position="REGULAR"/> 
   </hooks> 
   ... 
</orient-server>

OrientDB Sunucusunu Yeniden Başlatın

'Harfiyle başlayan yeni bir sınıf oluşturunr'veya't'-

CREATE CLASS tTest EXTENDS V;

Şimdi bir kayıt ekleyin -

INSERT INTO tTest SET ID = 1 
SELECT FROM tTest

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Ayarlanacak değerleri belirtmemiş olsanız bile CreatedDate ve UpdatedDateOrientDB bu alanları sizin için otomatik olarak ayarladı.

Ardından, aşağıdaki komutu kullanarak kaydı güncellemeniz gerekir -

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

Bu komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

OrientDB'nin UpdatedDate ama izin verdi CreatedDate değişmeden kalır.

OrientDB Java Kancaları, aksi takdirde uygulama kodunda yapmanız gereken işleri otomatikleştirmeye yardımcı olacak son derece değerli bir araç olabilir. Çoğu DBA her zaman Java uzmanı olmadığından, umarız bu eğitimde yer alan bilgiler size bir başlangıç ​​sağlar ve teknolojiyle ilgili rahat hissetmenizi sağlar ve ihtiyaç duyduğunuzda başarılı bir şekilde veritabanı tetikleyicileri oluşturmanıza yardımcı olur.

CachingKullanıcı uygulamaları için rahat bir ortam sağlayan veritabanı tablo yapısının bir kopyasını oluşturacak bir kavramdır. OrientDB, farklı düzeylerde birkaç önbellekleme mekanizmasına sahiptir.

Aşağıdaki çizim, önbelleğe almanın ne olduğu hakkında bir fikir vermektedir.

Yukarıdaki resimde DB1, DB2, DB3 bir uygulamada kullanılan üç farklı veritabanı örneğidir.

Level-1 önbellek bir Local cachebelirli bir oturum tarafından bilinen tüm varlıkları saklar. Bu oturumda üç işleminiz varsa, üç işlemin de kullandığı tüm varlıkları tutacaktır. Bu önbellek, oturumu kapattığınızda veya "temizle" yöntemini uyguladığınızda temizlenir. Uygulama ile veritabanı arasındaki G / Ç işlemlerinin yükünü azaltır ve dolayısıyla performansı artırır.

Level-2 önbellek bir Real cacheüçüncü taraf sağlayıcı kullanarak çalışır. Önbelleğin içeriği üzerinde tam kontrole sahip olabilirsiniz, yani hangi girişlerin kaldırılacağını, hangilerinin daha uzun süre saklanacağını vb. Belirtebileceksiniz. Birden çok iş parçacığı arasında tam paylaşılan bir önbellektir.

Storage model disk, bellek veya uzak sunucu olan depolama aygıtından başka bir şey değildir.

OrientDB'de Önbellek Nasıl Çalışır?

OrientDB önbelleğe alma, farklı ortamlarda farklı metodolojiler sağlar. Önbelleğe alma, daha hızlı veritabanı işlemleri için kullanılır, bir işlemin işlem süresini azaltır ve performansı artırır. Aşağıdaki akış şemaları, önbelleğe almanın yerel modda ve istemci-sunucu modunda nasıl çalıştığını gösterir.

Yerel Mod (Gömülü Veritabanı)

Aşağıdaki akış şeması, kaydın depolama ile yerel modda kullanılan uygulama arasında, yani veritabanı sunucunuz yerel ana makinenizde olduğunda nasıl olduğunu anlatır.

İstemci uygulaması bir kayıt istediğinde OrientDB aşağıdakileri kontrol eder -

  • Bir işlem başladıysa, işlemin içinde değişen kayıtları arar ve bulursa geri verir.

  • Yerel önbellek etkinse ve istenen kaydı içeriyorsa, onu döndürür.

  • Bu noktada kayıt önbellekte değilse, Depoya (disk, bellek) sorar.

İstemci Sunucu Modu (Uzak Veritabanı)

Aşağıdaki akış şeması, kaydın depolama ile istemci-sunucu modunda kullanılan uygulama arasında, yani veritabanı sunucunuz uzak konumdayken nasıl olduğunu anlatır.

İstemci uygulaması bir kayıt istediğinde, OrientDB aşağıdakileri kontrol eder -

  • Bir işlem başladıysa, işlemin içinde değişen kayıtları arar ve bulursa geri verir.

  • Yerel önbellek etkinse ve istenen kaydı içeriyorsa, onu döndürür.

  • Bu noktada, kayıt önbellekte değilse, bunu bir TCP / IP çağrısı aracılığıyla Sunucuya sorar.

  • Sunucuda, yerel önbellek etkinse ve istenen kaydı içeriyorsa, onu döndürür.

  • Bu noktada, kayıt yine de sunucuda önbelleğe alınmaz, ardından Depoya (disk, bellek) sorulur.

OrientDB, Java Virtual Machine ile birlikte verilen Java Logging çerçevesini kullanır. OrientDB'nin varsayılan günlük formatı,OLogFormatter sınıf.

Aşağıdaki ifade, günlük kaydı komutunun temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<date> - Aşağıdaki formattaki günlük tarihidir: yyyy-AA-gg SS: dd: ss: SSS.

<level> - 5 karakter çıktısı olarak loglama seviyesidir.

<message> - Günlük metnidir, herhangi bir boyutta olabilir.

[<class>] - Günlüğe kaydedilen Java sınıfıdır (isteğe bağlı).

Desteklenen düzeyler, java.util.logging.Level JRE sınıfında bulunan düzeylerdir. Onlar -

  • SEVERE (en yüksek değer)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • EN GÜZEL (en düşük değer)

Varsayılan olarak, iki kaydedici kurulur -

  • Console, uygulamayı / sunucuyu başlatan kabuk / komut isteminin çıktısı olarak. 'Log.console.level' değişkeni ayarlanarak değiştirilebilir.

  • File, günlük dosyalarına çıktı olarak. 'Log.file.level' ayarlanarak değiştirilebilir.

Günlük Kaydını Yapılandır

Günlüğe kaydetme stratejileri ve politikaları, Java'yı izleyen bir dosya kullanılarak yapılandırılabilir.

syntax - Java Günlüğü yapılandırması.

Misal

Aşağıdaki içeriği şuradan kopyalayın: orientdb-server-log.properties dosya ve içine koyun $ORIENTDB_HOME/config dosya.

# Specify the handlers to create in the root logger 
# (all loggers are children of the root logger) 
# The following creates two handlers 
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler 
# Set the default logging level for the root logger 
.level = ALL 
 
# Set the default logging level for new ConsoleHandler instances 
java.util.logging.ConsoleHandler.level = INFO 
# Set the default formatter for new ConsoleHandler instances 
java.util.logging.ConsoleHandler.formatter = 
   com.orientechnologies.common.log.OLogFormatter 
 
# Set the default logging level for new FileHandler instances 
java.util.logging.FileHandler.level = INFO 
# Naming style for the output file 
java.util.logging.FileHandler.pattern =../log/orient-server.log 
# Set the default formatter for new FileHandler instances 
java.util.logging.FileHandler.formatter = com.orientechnologies.common.log.OLogFormatter 
# Limiting size of output file in bytes: 
java.util.logging.FileHandler.limit = 10000000 
# Number of output files to cycle through, by appending an 
# integer to the base file name: 
java.util.logging.FileHandler.count = 10

JVM'ye özellikler dosyasının nereye yerleştirildiğini söylemek için, "java.util.logging.config.file"sistem özelliği. Örneğin, aşağıdaki komutu kullanın -

$ java -Djava.util.logging.config.file=mylog.properties ...

Günlük düzeyini ayarlayın

Günlük kaydı yapılandırmasını değiştirmeden günlük kaydı düzeyini değiştirmek için "log.console.level" ve "log.file.level"sistem değişkenleri istenen seviyelere.

Başlangıçta Oturum Açma

Aşağıda, farklı yollarla başlangıç ​​düzeyinde günlük kaydını ayarlama prosedürleri verilmiştir.

Sunucu Yapılandırmasında

Dosyayı aç orientdb-server-config.xml ve <properties> bölümündeki dosyanın sonuna bu satırları ekleyin veya güncelleyin -

<entry value = "fine" name = "log.console.level" /> 
<entry value = "fine" name = "log.file.level" />

Server.sh (veya .bat) Komut Dosyasında

Sistem özelliğini ayarlayın "log.console.level" ve "log.file.level"java'nın -D parametresini kullanarak istediğiniz seviyelere.

$ java -Dlog.console.level = FINE ...

Çalışma Zamanında Günlük Kaydı

Aşağıda, farklı yollarla başlangıç ​​düzeyinde günlük kaydını ayarlama prosedürleri verilmiştir.

Java Kodunu Kullanarak

Sistem değişkeni, System.setProperty () API kullanılarak başlangıçta ayarlanabilir. Aşağıdaki kod parçacığı, Java kodunu kullanarak günlük kaydı düzeyini ayarlamak için kullanılan sözdizimidir.

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

Uzak Sunucuda

Şu URL'ye karşı bir HTTP POST çalıştırın: /server/log.<type>/ <level>, burada -

  • <tür>, "konsol" veya "dosya" olabilir
  • <level> desteklenen düzeylerden biridir

Misal

Aşağıdaki örnek, cURLOrientDB Sunucusuna karşı bir HTTP POST komutu yürütmek için. Sunucunun "root" kullanıcı ve şifresi kullanıldı, kendi şifrenizle değiştirin.

En iyi izleme düzeyini konsola etkinleştirin -

curl -u root:root -X POST http://localhost:2480/server/log.console/FINEST

Dosyaya en iyi izleme seviyesini etkinleştirin -

curl -u root:root -X POST http://localhost:2480/server/log.file/FINEST

Bu bölümde, OrientDB kullanan uygulamanızı nasıl optimize edeceğinize dair bazı genel ipuçları bulabilirsiniz. Farklı veritabanı türleri için performansı artırmanın üç yolu vardır.

  • Document Database Performance Tuning - Her yeni belge için belge oluşturmayı engellemeye yardımcı olan bir teknik kullanır.

  • Object Database Performance Tuning - Performansı artırmak için genel teknikleri kullanır.

  • Distributed Configuration Tuning - Dağıtık konfigürasyonda performansı artırmak için farklı metodolojiler kullanır.

Bellek, JVM ve Uzak bağlantı ayarlarını değiştirerek genel performans ayarı elde edebilirsiniz.

Hafıza Ayarları

Hafıza ayarında performansı artırmak için farklı stratejiler vardır.

Sunucu ve Gömülü Ayarlar

Bu ayarlar hem Sunucu bileşeni hem de Java uygulamasının OrientDB'yi Gömülü modda doğrudan kullanarak çalıştırıldığı JVM için geçerlidir. plocal.

Ayarlamadaki en önemli şey, bellek ayarlarının doğru olmasını sağlamaktır. Gerçek bir fark yaratabilecek şey, yığın ile Bellek Haritalama tarafından kullanılan sanal bellek arasında, özellikle de bellek içi önbellek yapılarının ham GÇ'den daha az sayıldığı büyük veri kümelerinde (GB'ler, TB'ler ve daha fazlası) doğru dengelemedir.

Örneğin, Java işlemine maksimum 8 GB atayabiliyorsanız, genellikle küçük yığın ve büyük disk önbelleği (yığın dışı bellek) atamak daha iyidir.

Yığın belleğini artırmak için aşağıdaki komutu deneyin.

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

storage.diskCache.bufferSize ayar (eski "yerel" depolamayla file.mmap.maxMemory) MB cinsindendir ve Disk Önbelleği bileşeni için ne kadar bellek kullanılacağını belirtir. Varsayılan olarak 4 GB'dir.

NOTE - Maksimum yığın ve disk önbellek tamponunun toplamı çok yüksekse, işletim sisteminin büyük bir yavaşlamayla değişmesine neden olabilir.

JVM Ayarları

JVM ayarları server.sh (ve server.bat) toplu iş dosyalarında kodlanmıştır. JVM'yi kullanımınıza ve hw / sw ayarlarınıza göre ayarlamak için bunları değiştirebilirsiniz. Server.bat dosyasına aşağıdaki satırı ekleyin.

-server -XX:+PerfDisableSharedMem

Bu ayar, JVM hakkında hata ayıklama bilgilerinin yazılmasını devre dışı bırakır. JVM'nin profilini çıkarmanız gerekirse, bu ayarı kaldırmanız yeterlidir.

Uzaktan Bağlantılar

Veritabanına uzak bağlantı kullanarak eriştiğinizde performansı artırmanın birçok yolu vardır.

Getirme Stratejisi

Uzak bir veritabanıyla çalışırken, kullanılan getirme stratejisine dikkat etmeniz gerekir. Varsayılan olarak, OrientDB istemcisi yalnızca sonuç kümesinde bulunan kaydı yükler. Örneğin, bir sorgu 100 öğe döndürürse, ancak bu öğeleri istemciden geçerseniz, OrientDB istemcisi öğeleri tembel bir şekilde her bir cevapsız kayıt için sunucuya bir ağ çağrısı daha yükler.

Ağ Bağlantı Havuzu

Her istemci, varsayılan olarak, sunucuyla konuşmak için yalnızca bir ağ bağlantısı kullanır. Aynı istemcideki birden çok iş parçacığı aynı ağ bağlantı havuzunu paylaşır.

Birden çok iş parçacığına sahip olduğunuzda, ücretsiz bir ağ bağlantısını beklemek için çok zaman harcandığından bir darboğaz olabilir. Ağ bağlantı havuzunu yapılandırmanın önemli olmasının nedeni budur.

Yapılandırma çok basittir, sadece 2 parametre -

  • minPool- Bağlantı havuzunun başlangıç ​​boyutudur. Varsayılan değer, "client.channel.minPool" genel parametreleri olarak yapılandırılır.

  • maxPool- Bağlantı havuzunun ulaşabileceği maksimum boyuttur. Varsayılan değer, "client.channel.maxPool" genel parametreleri olarak yapılandırılır.

Tüm havuz bağlantıları meşgulse, istemci iş parçacığı ilk boş bağlantıyı bekleyecektir.

Veritabanı özelliklerini kullanarak yapılandırma için örnek komut.

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

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

Dağıtılmış Yapılandırma Ayarı

Dağıtılmış yapılandırmada performansı artırmanın birçok yolu vardır.

İşlemleri Kullan

Grafikleri güncelleseniz bile, her zaman işlemlerde çalışmalısınız. OrientDB, bunların dışında çalışmanıza izin verir. Yaygın durumlar salt okunur sorgulardır veya büyük çaplı ve eşzamanlı olmayan işlemler başarısızlık durumunda geri yüklenebilir. Dağıtılmış yapılandırmada çalıştırdığınızda, işlemleri kullanmak gecikmeyi azaltmaya yardımcı olur. Bunun nedeni, dağıtılmış işlemin yalnızca tamamlama zamanında gerçekleşmesidir. Tek bir büyük işlemi dağıtmak, gecikme nedeniyle küçük birden çok işlemi aktarmaktan çok daha verimlidir.

Çoğaltma ve Parçalama

OrientDB dağıtılmış konfigürasyonu tam çoğaltmaya ayarlanmıştır. Aynı veritabanı kopyasına sahip birden fazla düğüme sahip olmak, ölçek okumaları için önemlidir. Aslında, her sunucu okuma ve sorgu yürütme konusunda bağımsızdır. 10 sunucu düğümünüz varsa, okuma verimi 10x'tir.

Yazma işlemlerinde durum tam tersidir: Tam çoğaltmaya sahip birden çok düğüme sahip olmak, çoğaltma eşzamanlıysa işlemleri yavaşlatır. Bu durumda, veritabanını birden çok düğüm arasında parçalamak, yazma işlemlerini büyütmenize olanak tanır, çünkü yazma sırasında yalnızca bir düğüm alt kümesi yer alır. Ayrıca, bir sunucu düğümünden daha büyük bir veritabanına sahip olabilirsiniz.

Yazmalara göre ölçeklendirin

Yavaş bir ağınız varsa ve eşzamanlı (varsayılan) bir çoğaltmanız varsa, gecikme bedelini ödeyebilirsiniz. Aslında OrientDB eşzamanlı olarak çalıştığında, en azındanwriteQuorum. Bu, writeQuorum 3 ise ve 5 düğümünüz varsa, koordinatör sunucu düğümünün (dağıtılmış işlemin başladığı yer) istemciye yanıt vermesi için en az 3 düğümden yanıt beklemesi gerektiği anlamına gelir.

Tutarlılığı korumak için, writeQuorum çoğunluğa ayarlanmalıdır. 5 düğümünüz varsa çoğunluk 3'tür. 4 düğümle hala 3'tür. WriteQuorum'u 4 veya 5 yerine 3 olarak ayarlamak, gecikme maliyetini düşürmeye ve yine de tutarlılığı korumaya izin verir.

Eşzamansız Çoğaltma

İşleri hızlandırmak için, gecikme darboğazını ortadan kaldırmak için Eşzamansız Çoğaltma kurabilirsiniz. Bu durumda, koordinatör sunucu düğümü işlemi yerel olarak yürütür ve yanıtı istemciye verir. Çoğaltmanın tamamı arka planda olacaktır. Yetersaya ulaşılmaması durumunda değişiklikler şeffaf bir şekilde geri alınacaktır.

Okuma sayısını artırın

WriteQuorum'u düğümlerin çoğuna zaten ayarladıysanız, readQuorum1'e (varsayılan). Bu, tüm okumaları hızlandırır.

Yükseltme yaparken, sürüm numarasını ve formatı dikkate almalısınız. Üç tür format vardır - MAJOR, MINOR, PATCH.

  • MAJOR sürüm uyumsuz API değişiklikleri gerektiriyor.

  • MINOR sürüm, geriye dönük uyumlu bir işlevsellik gerektirir.

  • PTCH sürüm, geriye dönük uyumlu hata düzeltmelerini gerektirir.

Küçük ve büyük sürümler arasında senkronizasyon yapmak için veritabanlarını dışa ve içe aktarmanız gerekebilir. Bazen birçoğunuzun veritabanını LOCAL'dan PLOCAL'a taşımanız ve grafiği RidBag'e taşımanız gerekir.

LOCAL Storage Engine'den PLOCAL'a geçiş yapın

Sürüm 1.5.x'ten itibaren OrientDB yepyeni bir depolama motoruyla birlikte gelir: PLOCAL (Sayfalandırılmış YEREL). YEREL gibi kalıcıdır, ancak bilgileri farklı bir şekilde depolar. Aşağıdaki noktalar PLOCAL ve LOCAL arasındaki karşılaştırmayı göstermektedir -

  • PLOCAL'da Kayıtlar küme dosyalarında saklanırken, LOCAL ile küme ve veri segmentleri arasında bölünmüştür.

  • PLOCAL, yazma üzerine ekleme modu nedeniyle LOCAL'den daha dayanıklıdır.

  • PLOCAL, yazma konusunda küçük çekişme kilitlerine sahiptir, bu da daha fazla eşzamanlılık anlamına gelir.

  • PLOCAL, Bellek Haritalama tekniklerini (MMap) kullanmaz, bu nedenle davranış daha "tahmin edilebilir" olur.

LOCAL depolamanızı yeni PLOCAL'a taşımak için, depolama motoru olarak PLOCAL kullanarak veritabanını dışa aktarmanız ve yeniden içe aktarmanız gerekir. Prosedür aşağıdadır.

Step 1 - Yeni bir kabuk (Linux / Mac) veya bir Komut İstemi (Windows) açın.

Step 2- Konsolu kullanarak veritabanını dışa aktarın. Veritabanı demosunu dışa aktarmak için verilen komutu izleyin.demo.json.gzip dosya.

$ 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 - Yerel bir dosya sisteminde, "plocal" motorunu kullanarak yeni bir veritabanı oluşturun -

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

Step 4 - Eski veritabanını yenisine aktarın.

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

Veritabanına aynı JVM'de erişirseniz, URL'yi "local:" yerine "plocal:" olarak değiştirmeyi unutmayın.

Grafiği RidBag'e Taşıyın

OrientDB 1.7'den itibaren RidBag, grafiklerdeki bitişiklik ilişkilerini yöneten varsayılan bir koleksiyondur. Bir MVRB-Ağacı tarafından yönetilen eski veritabanı tamamen uyumlu olsa da, veritabanınızı daha yeni biçime güncelleyebilirsiniz.

Grafiğinizi konsol aracılığıyla veya ORidBagMigration sınıf.

  • CONNECT veritabanına bağlan plocal:databases/<graphdb-name>

  • Grafik yükseltme komutunu çalıştır

RDBMS gibi, OrientDB de iyi bilinen kavramlara, kullanıcılara ve rollere dayalı güvenlik sağlar. Her veritabanının kendi kullanıcıları vardır ve her kullanıcının bir veya daha fazla rolü vardır. Roller, çalışma modları ve izinlerin birleşimidir.

Kullanıcılar

OrientDB, varsayılan olarak sunucudaki tüm veritabanı için üç farklı kullanıcı bulundurur -

  • Admin - Bu kullanıcı, veri tabanındaki tüm işlevlere sınırlama olmaksızın erişebilir.

  • Reader- Bu kullanıcı salt okunur bir kullanıcıdır. Okuyucu veritabanındaki herhangi bir kaydı sorgulayabilir, ancak bunları değiştiremez veya silemez. Kullanıcılar ve rollerin kendileri gibi dahili bilgilere erişimi yoktur.

  • Writer - Bu kullanıcı, kullanıcı okuyucuyla aynıdır, ancak aynı zamanda kayıtları oluşturabilir, güncelleyebilir ve silebilir.

Kullanıcılarla Çalışma

Bir veritabanına bağlandığınızda, veritabanındaki mevcut kullanıcıları kullanarak sorgulayabilirsiniz. SELECT sorgular OUser sınıf.

orientdb> SELECT RID, name, status FROM OUser

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

---+--------+--------+-------- 
#  | @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).

Yeni Bir Kullanıcı Oluşturma

Yeni bir kullanıcı oluşturmak için INSERT komutunu kullanın. Unutmayın, bunu yaparken durumu ETKİN olarak ayarlamanız ve ona geçerli bir rol vermeniz gerekir.

orientdb> INSERT INTO OUser SET 
               name = 'jay', 
               password = 'JaY',
               status = 'ACTIVE',
               roles = (SELECT FROM ORole WHERE name = 'reader')

Kullanıcıları Güncelleme

UPDATE ifadesiyle kullanıcının adını değiştirebilirsiniz.

orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'

Aynı şekilde kullanıcı şifresini de değiştirebilirsiniz.

orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'

OrientDB, şifreyi hash formatında kaydeder. TetikOUserTrigger Kaydı kaydetmeden önce parolayı şeffaf bir şekilde şifreler.

Kullanıcıları Devre Dışı Bırakma

Bir kullanıcıyı devre dışı bırakmak için, durumunu ETKİN'den ASKIYA ALDI'ya çevirmek için GÜNCELLE'yi kullanın. Örneğin, yönetici dışındaki tüm kullanıcıları devre dışı bırakmak istiyorsanız, aşağıdaki komutu kullanın -

orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'

Roller

Rol, bir kullanıcının bir kaynağa karşı hangi işlemleri gerçekleştirebileceğini belirler. Esas olarak bu karar çalışma şekline ve kurallara bağlıdır. Çalışma moduna bağlı olarak kuralların kendileri farklı şekilde çalışır.

Rollerle Çalışma

Bir veritabanına bağlandığınızda, veritabanındaki mevcut rolleri kullanarak sorgulayabilirsiniz. SELECT sorgular ORole sınıf.

orientdb> SELECT RID, mode, name, rules FROM ORole

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

--+------+----+--------+------------------------------------------------------- 
# |@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).

Yeni Roller Oluşturmak

Yeni bir rol oluşturmak için INSERT ifadesini kullanın.

orientdb> INSERT INTO ORole SET name = 'developer', mode = 0

Modlarla Çalışma

Kuralların, belirli rollere ait kullanıcıların veritabanlarında neler yapabileceğini belirlediği durumlarda, çalışma modları OrientDB'nin bu kuralları nasıl yorumlayacağını belirler. 1 ve 0 ile gösterilen iki tür çalışma modu vardır.

  • Allow All But (Rules)- Varsayılan olarak süper kullanıcı modudur. Kuralları kullanarak bunun istisnalarını belirtin. OrientDB, talep edilen bir kaynak için hiçbir kural bulamazsa, kullanıcının işlemi yürütmesine izin verir. Bu modu esas olarak uzman kullanıcılar ve yöneticiler için kullanın. Varsayılan yönetici rolü, varsayılan olarak bu modu kullanır ve istisna kuralı yoktur. Veritabanına 1 olarak yazılır.

  • Deny All But (Rules)- Varsayılan olarak bu mod hiçbir şeye izin vermez. Kuralları kullanarak bunun istisnalarını belirtin. OrientDB, talep edilen bir kaynak için kurallar bulursa, kullanıcının işlemi yürütmesine izin verir. Bu modu tüm klasik kullanıcılar için varsayılan olarak kullanın. Varsayılan roller, okuyucu ve yazar, bu modu kullanır. Veritabanında 0 olarak yazılır.

OrientDB, veritabanı işlemlerini GUI aracılığıyla gerçekleştirmek için bir web kullanıcı arabirimi sağlar. Bu bölüm, OrientDB'de bulunan farklı seçenekleri açıklamaktadır.

Stüdyo Ana Sayfası

Studio, OrientDB dağıtımıyla birlikte gelen OrientDB'nin yönetimi için bir web arayüzüdür.

Öncelikle aşağıdaki komutu kullanarak OrientDB sunucusunu başlatmanız gerekir.

$ server.sh

OrientDB'yi makinenizde çalıştırırsanız, web arayüzüne URL aracılığıyla erişilebilir -

http://localhost:2480

Komut başarıyla yürütülürse, aşağıdaki ekran çıktısı olacaktır.

Mevcut Bir Veritabanına Bağlanın

Oturum açmak için veritabanları listesinden bir veritabanı seçin ve herhangi bir veritabanı kullanıcısını kullanın. Varsayılan olarak (kullanıcı adı / şifre)reader/reader veri tabanından kayıtları okuyabilir, writer/writer kayıtları okuyabilir, oluşturabilir, güncelleyebilir ve silebilir admin/admin tüm haklara sahiptir.

Mevcut bir Veritabanını Bırak

Veritabanları listesinden bir veritabanı seçin ve çöp kutusu simgesine tıklayın. Studio, Sunucu Kullanıcısı ve Sunucu Şifresini girmeniz gereken bir onay penceresi açar.

Ardından "Veritabanını bırak" düğmesini tıklayın. Sunucu kimlik bilgilerini şurada bulabilirsiniz:$ORIENTDB_HOME/config/orientdb-server-config.xml dosya.

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

Yeni Bir Veritabanı Oluşturun

Yeni bir veritabanı oluşturmak için ana sayfadan "Yeni DB" düğmesine tıklayın.

Yeni bir veritabanı oluşturmak için aşağıdaki bilgiler gereklidir -

  • Veri tabanı ismi
  • Veritabanı türü (Belge / Grafik)
  • Depolama türü (yerel / bellek)
  • Sunucu kullanıcısı
  • Sunucu şifresi

Sunucu kimlik bilgilerini şurada bulabilirsiniz: $ORIENTDB_HOME/config/orientdbserver-config.xml dosya.

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

Studio oluşturulduktan sonra otomatik olarak yeni veritabanına giriş yapacaktır.

Bir Sorgu Yürütme

Studio, desteklenenler arasında kullandığınız dilin otomatik olarak tanınmasını destekler: SQL ve Gremlin. Yazarken, tuşuna basarak otomatik tamamlama özelliğini kullanın.Ctrl + Space.

Sorgu düzenleyicide aşağıdaki kısayollar mevcuttur -

  • Ctrl + Return - Sorguyu yürütmek için veya sadece Run buton.

  • Ctrl/Cmd + Z - Değişiklikleri geri almak için.

  • Ctrl/Cmd + Shift + Z - Değişiklikleri yeniden yapmak için.

  • Ctrl/Cmd + F - Düzenleyicide aramak için.

  • Ctrl/Cmd + / - Bir yorumu değiştirmek için.

Aşağıdaki ekran görüntüsü bir sorgunun nasıl yürütüleceğini gösterir.

Herhangi birine tıklayarak @rid sonuç kümesindeki değeri girerseniz, kayıt bir Belge ise belge düzenleme moduna geçersiniz, aksi takdirde köşe düzenlemesine geçersiniz.

Sonuç kümesindeki veya düzenleyicideki yıldız simgesine tıklayarak sorgularınıza yer işareti koyabilirsiniz. Yer işaretli sorgulara göz atmak için,Bookmarksbuton. Studio, sorguları düzenleyebileceğiniz / silebileceğiniz veya yeniden çalıştırabileceğiniz soldaki yer imleri listesini açacaktır.

Studio, yürütülen sorguları tarayıcının Yerel Depolamasına kaydeder. Sorgu ayarlarında, stüdyonun geçmişte kaç tane sorgu tutacağını yapılandırabilirsiniz. Ayrıca daha önce yürütülen bir sorguyu arayabilir, tüm sorguları geçmişten silebilir veya tek bir sorguyu silebilirsiniz.

Köşeyi Düzenle

Grafiğin tepe noktasını düzenlemek için Grafik bölümüne gidin. Ardından aşağıdaki sorguyu çalıştırın.

Select From Customer

Sorguyu başarıyla çalıştırdığınızda, aşağıdaki çıktı ekran görüntüsü alın. Düzenlemek için grafik tuvalinde belirli tepe noktasını seçin.

Belirli tepe noktasındaki düzenleme sembolünü seçin. Köşeyi düzenleme seçeneklerini içeren aşağıdaki ekranı göreceksiniz.

Şema Yöneticisi

OrientDB, şemasız modda, şema modunda veya her ikisinin karışımında çalışabilir. Burada şema modunu tartışacağız. Web kullanıcı arayüzünün üst kısmındaki Şema bölümünü tıklayın. Aşağıdaki ekran görüntüsünü alacaksınız.

Yeni Bir Sınıf Oluşturun

Yeni bir Sınıf oluşturmak için, New Classbuton. Aşağıdaki ekran görüntüsü görünecektir. Yeni sınıfı oluşturmak için ekran görüntüsünde gösterildiği gibi aşağıdaki bilgileri sağlamanız gerekecektir.

Tüm Dizinleri Görüntüle

Veritabanınızda oluşturulan tüm dizinlere genel bir bakış almak istediğinizde, Şema kullanıcı arayüzündeki tüm dizinler düğmesine tıklamanız yeterlidir. Bu, dizinlerle ilgili bazı bilgilere (ad, tür, özellikler, vb.) Hızlı erişim sağlayacaktır ve buradan onları bırakabilir veya yeniden oluşturabilirsiniz.

Sınıfı Düzenle

Şema bölümündeki herhangi bir sınıfa tıklayın, aşağıdaki ekran görüntüsünü alacaksınız.

Bir sınıfı düzenlerken, bir özellik veya yeni bir dizin ekleyebilirsiniz.

Mülk Ekleyin

Mülk eklemek için Yeni Mülk düğmesini tıklayın. Aşağıdaki ekran görüntüsünü alacaksınız.

Mülk eklemek için ekran görüntüsünde gösterildiği gibi aşağıdaki ayrıntıları sağlamanız gerekir.

Bir Dizin Ekle

Yeni Dizin düğmesini tıklayın. Aşağıdaki ekran görüntüsünü alacaksınız. Bir dizin eklemek için ekran görüntüsünde gösterildiği gibi aşağıdaki ayrıntıları sağlamanız gerekir.

Grafik Düzenleyici

Grafik bölümünü tıklayın. Verilerinizi yalnızca bir grafik stilinde görselleştirmekle kalmaz, aynı zamanda grafikle etkileşime girebilir ve onu değiştirebilirsiniz.

Grafik alanını doldurmak için, sorgu düzenleyicisine bir sorgu yazın veya Göz Atma Kullanıcı Arabiriminden Grafiğe Gönder işlevini kullanın.

Köşeler Ekle

Grafik Veritabanınıza ve Grafik Tuval alanına yeni bir Köşe eklemek için, düğmesine basmanız gerekir. Add Vertex. Bu işlem iki adımda yapılır.

İlk adımda, yeni Vertex için sınıfı seçmeniz ve ardından İleri'yi tıklamanız gerekir.

İkinci adımda, yeni tepe noktasının alan değerlerini girmelisiniz. OrientDB şemasız modu desteklediği için özel alanlar da ekleyebilirsiniz. Yeni köşe noktasını kalıcı hale getirmek için, 'Değişiklikleri kaydet'i tıklayın; köşe, veritabanına kaydedilecek ve tuval alanına eklenecektir.

Tepe Noktalarını Sil

Silmek istediğiniz Köşeye tıklayarak dairesel menüyü açın. Fareyi menü girişine daha fazla (...) getirerek alt menüyü açın ve ardından çöp kutusu simgesine tıklayın.

Dikeyleri Tuvalden Kaldır

Dairesel menüyü açın, fareyi menü girişine daha fazla (...) getirerek alt menüyü açın ve ardından silgi simgesine tıklayın.

Tepe Noktalarını İnceleyin

Vertex özelliğine hızlı bir şekilde göz atmak istiyorsanız, göz simgesine tıklayın.

Güvenlik

Studio 2.0, Kullanıcıları ve Rolleri grafiksel bir şekilde yönetebileceğiniz yeni Güvenlik Yönetimini içerir.

Kullanıcılar

Veritabanı kullanıcılarını yönetmek için aşağıdaki eylemleri gerçekleştirebilirsiniz -

  • Kullanıcı Ara
  • Kullanıcı Ekle
  • Kullanıcıları Sil
  • Kullanıcıyı Düzenle: roller sıralı olarak düzenlenebilir; ad, durum ve şifre için Edit buton

Kullanıcı Ekle

Yeni bir Kullanıcı eklemek için, Add User düğmesi, yeni kullanıcı için bilgileri (ad, parola, durum, roller) tamamlayın ve ardından yeni kullanıcıyı veritabanına eklemek için kaydedin.

Roller

Veritabanı rollerini yönetmek için aşağıdaki eylemleri gerçekleştirebilirsiniz -

  • Rol Ara
  • Rol Ekle
  • Rolü Sil
  • Rolü Düzenle

Rol Ekle

Yeni bir Kullanıcı eklemek için, Add Role düğmesini tıklayın, yeni rol için bilgileri tamamlayın (ad, ana rol, mod) ve ardından yeni rolü veritabanına eklemek için kaydedin.

Bir Role Kural Ekleme

Seçilen role yeni bir güvenlik kuralı eklemek için, Add Rulebuton. Bu size güvenliğini sağlamak istediğiniz kaynağın dizesini soracaktır. Ardından, yeni oluşturulan kaynakta CRUD izinlerini yapılandırabilirsiniz.

RDBMS'ye benzer şekilde OrientDB, JDBC'yi destekler. Bunun için öncelikle JDBC programlaması için ortamı yapılandırmamız gerekiyor. Aşağıda, uygulamanız ve veritabanı arasında bir bağlantı oluşturma prosedürü açıklanmaktadır.

Öncelikle, JDBC Sürücüsünü indirmemiz gerekiyor. Aşağıdaki bağlantıyı ziyaret edinhttps://code.google.com/archive/p/orient/downloads OrientDB-JDBC'yi indirmek için.

Aşağıda, OrientDB-jdbc bağlantısını elde etmek için temel beş adım verilmiştir.

  • JDBC sürücüsünü yükle
  • Bağlantı Oluştur
  • İfade oluştur
  • İfadeyi yürüt
  • Yakın bağlantı

Misal

OrientDB-JDBC bağlantısını anlamak için aşağıdaki örneği deneyin. Aşağıdaki alanları ve türlerini içeren bir çalışan tablomuz olduğunu düşünelim.

Sr.No. Alan adı Tür
1 İD Tamsayı
2 İsim Dize
3 Maaş Tamsayı
4 Katılma tarihi Tarih

Aşağıdaki komutları uygulayarak bir Şema (tablo) oluşturabilirsiniz.

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

Tüm komutları yürüttükten sonra, aşağıdaki alanlara sahip Çalışan tablosunu, id ile çalışan adı, yaş ve join_date alanlarını alacaksınız.

Aşağıdaki kodu içine kaydedin OrientJdbcDemo.java dosya.

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(); 
   } 
}

Aşağıdaki komut, yukarıdaki programı derlemek için kullanılır.

$ javac –classpath:.:orientdb-jdbc-1.0-SNAPSHOT.jar OrientJdbcDemo.java $ java –classpath:.:orientdb-jdbc-1.0-SNAPSHOT.jar OrientJdbcDemo

Yukarıdaki komut başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Records Successfully Inserted

Python için OrientDB sürücüsü ikili protokolü kullanır. PyOrient, OrientDB ile Python arasında bağlantı kurmaya yardımcı olan git hub proje adıdır. OrientDB sürüm 1.7 ve üzeri ile çalışır.

PyOrient'i kurmak için aşağıdaki komut kullanılır.

pip install pyorient

Adlı komut dosyasını kullanabilirsiniz. demo.py aşağıdaki görevleri yapmak için -

  • İstemci örneği oluşturmak, bağlantı oluşturmak anlamına gelir.

  • Adlı DB oluştur DB_Demo.

  • DB_Demo adlı DB'yi açın.

  • Sınıf my_class oluşturun.

  • Özellikler kimliği ve adı oluşturun.

  • Sınıfıma kayıt ekle.

//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')")

Aşağıdaki komutu kullanarak yukarıdaki komut dosyasını çalıştırın.

$ python demo.py