OrientDB - Hướng dẫn nhanh

OrientDB là một hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở. NoSQL Databasecung cấp cơ chế lưu trữ và truy xuất dữ liệu KHÔNG quan hệ hoặc KHÔNG quan hệ đề cập đến dữ liệu không phải dữ liệu dạng bảng như dữ liệu tài liệu hoặc dữ liệu biểu đồ. Cơ sở dữ liệu NoSQL ngày càng được sử dụng nhiều trong Dữ liệu lớn và các ứng dụng web thời gian thực. Hệ thống NoSQL đôi khi còn được gọi là "Không chỉ SQL" để nhấn mạnh rằng chúng có thể hỗ trợ các ngôn ngữ truy vấn giống SQL.

OrientDB cũng thuộc họ NoSQL. OrientDB là Cơ sở dữ liệu đồ thị phân tán thế hệ thứ hai với tính linh hoạt của Tài liệu trong một sản phẩm với nguồn mở của giấy phép Apache 2. Có một số cơ sở dữ liệu NoSQL trên thị trường trước OrientDB, một trong số đó là MongoDB.

MongoDB vs OrientDB

MongoDB và OrientDB có nhiều tính năng chung nhưng động cơ khác nhau về cơ bản. MongoDB là cơ sở dữ liệu Tài liệu thuần túy và OrientDB là một Tài liệu kết hợp với công cụ đồ thị.

Đặc trưng MongoDB OrientDB
Relationships Sử dụng RDBMS JOINS để tạo mối quan hệ giữa các thực thể. Nó có chi phí thời gian chạy cao và không mở rộng khi quy mô cơ sở dữ liệu tăng lên. Nhúng và kết nối các tài liệu như cơ sở dữ liệu quan hệ. Nó sử dụng các liên kết trực tiếp, siêu nhanh lấy từ thế giới cơ sở dữ liệu đồ thị.
Fetch Plan THAM GIA hoạt động tốn kém. Dễ dàng trả về đồ thị hoàn chỉnh với các tài liệu được kết nối với nhau.
Transactions Không hỗ trợ các giao dịch ACID, nhưng nó hỗ trợ các hoạt động nguyên tử. Hỗ trợ các giao dịch ACID cũng như các hoạt động nguyên tử.
Query language Có ngôn ngữ riêng dựa trên JSON. Ngôn ngữ truy vấn được xây dựng trên SQL.
Indexes Sử dụng thuật toán B-Tree cho tất cả các chỉ mục. Hỗ trợ ba thuật toán lập chỉ mục khác nhau để người dùng có thể đạt được hiệu suất tốt nhất.
Storage engine Sử dụng kỹ thuật ánh xạ bộ nhớ. Sử dụng tên công cụ lưu trữ LOCAL và PLOCAL.

OrientDB là NoSQL DBMS mã nguồn mở đa mô hình đầu tiên tập hợp sức mạnh của đồ thị và tính linh hoạt của tài liệu vào một cơ sở dữ liệu hoạt động hiệu suất cao có thể mở rộng.

Tệp cài đặt OrientDB có sẵn trong hai phiên bản -

  • Community Edition - Phiên bản cộng đồng OrientDB được Apache phát hành theo giấy phép 0.2 dưới dạng mã nguồn mở

  • Enterprise Edition- Phiên bản doanh nghiệp OrientDB được phát hành dưới dạng phần mềm độc quyền, được xây dựng trên phiên bản cộng đồng. Nó phục vụ như một phần mở rộng của phiên bản cộng đồng.

Chương này giải thích quy trình cài đặt của phiên bản cộng đồng OrientDB vì nó là mã nguồn mở.

Điều kiện tiên quyết

Cả phiên bản Community và Enterprise đều có thể chạy trên bất kỳ Hệ điều hành nào triển khai Máy ảo Java (JVM). OrientDB yêu cầu Java với phiên bản 1.7 trở lên.

Sử dụng các bước sau để tải xuống và cài đặt OrientDB vào hệ thống của bạn.

Bước 1 - Tải xuống tệp thiết lập nhị phân OrientDB

OrientDB đi kèm với tệp thiết lập tích hợp để cài đặt cơ sở dữ liệu trên hệ thống của bạn. Nó cung cấp các gói nhị phân được biên dịch trước khác nhau (gói tarred hoặc zip) cho các hệ điều hành khác nhau. Bạn có thể tải xuống các tệp OrientDB từ liên kết Tải xuống OrientDB .

Ảnh chụp màn hình sau đây cho thấy trang tải xuống của OrientDB. Bạn có thể tải xuống tệp nén hoặc tarred bằng cách nhấp vào biểu tượng hệ điều hành phù hợp.

Khi tải xuống, bạn sẽ nhận được gói nhị phân trong Downloads thư mục.

Bước 2 - Giải nén và cài đặt OrientDB

Sau đây là quy trình giải nén và cài đặt OrientDB cho các hệ điều hành khác nhau.

Trong Linux

Sau khi tải xuống, bạn sẽ nhận được orientdb-community-2.1.9.tar.gz hồ sơ trong của bạn Downloadsthư mục. Bạn có thể sử dụng lệnh sau để giải nén tệp tarred.

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

Bạn có thể sử dụng lệnh sau để di chuyển tất cả các tệp thư viện OrientDB từ orientdbcommunity-2.1.9 to /opt/orientdb/danh mục. Ở đây chúng tôi đang sử dụng lệnh super user (sudo) do đó bạn phải cung cấp mật khẩu super user để thực hiện lệnh sau.

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

Bạn có thể sử dụng các lệnh sau để đăng ký orientdb lệnh và máy chủ Phương Đông.

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

Trong Windows

  • Sau khi tải xuống, bạn sẽ nhận được orientdb-community-2.1.9.zip hồ sơ trong của bạn Downloadsthư mục. Giải nén tệp zip bằng trình giải nén zip.

  • Di chuyển thư mục đã giải nén vào C:\ danh mục.

  • Tạo hai biến môi trường ORIENTDB_HOME và biến PATH với các giá trị đã cho sau.

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

Bước 3 - Định cấu hình Máy chủ OrientDB làm Dịch vụ

Bằng cách làm theo các bước trên, bạn có thể sử dụng phiên bản Máy tính để bàn của OrientDB. Bạn có thể khởi động máy chủ cơ sở dữ liệu OrientDB như một dịch vụ bằng cách sử dụng các bước sau. Quy trình này khác nhau, tùy thuộc vào hệ điều hành của bạn.

Trong Linux

OrientDB cung cấp một tệp kịch bản có tên orientdb.shđể chạy cơ sở dữ liệu dưới dạng daemon. Bạn có thể tìm thấy nó trong thư mục bin / của thư mục cài đặt OrientDB là $ ORIENTDB_HOME / bin / orientdb.sh.

Trước khi chạy tệp script, bạn phải chỉnh sửa orientdb.shtệp để xác định hai biến. Một làORIENTDB_DIR xác định đường dẫn đến thư mục cài đặt (/opt/orientdb) và thứ hai là ORIENTDB_USER xác định tên người dùng bạn muốn chạy OrientDB như sau.

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

Sử dụng lệnh sau để sao chép orientdb.sh nộp vào /etc/init.d/thư mục để khởi tạo và chạy tập lệnh. Ở đây chúng tôi đang sử dụng lệnh super user (sudo) do đó bạn phải cung cấp mật khẩu super user để thực hiện lệnh sau.

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

Sử dụng lệnh sau để sao chép tệp console.sh từ thư mục cài đặt OrientDB $ORIENTDB_HOME/bin vào thư mục bin hệ thống đó là /usr/bin để truy cập bảng điều khiển của Orient DB.

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

Sử dụng lệnh sau để khởi động máy chủ cơ sở dữ liệu ORIENTDB dưới dạng dịch vụ. Ở đây bạn phải cung cấp mật khẩu của người dùng tương ứng mà bạn đề cập trong tệp orientdb.sh để khởi động máy chủ.

$ service orientdb start

Sử dụng lệnh sau để biết trình nền máy chủ OrientDB đang chạy trên PID nào.

$ service orientdb status

Sử dụng lệnh sau để dừng trình nền máy chủ OrientDB. Tại đây, bạn phải cung cấp mật khẩu của người dùng tương ứng mà bạn đề cập trong tệp orientdb.sh để dừng máy chủ.

$ service orientdb stop

Trong Windows

OrientDB là một ứng dụng máy chủ do đó nó phải thực hiện một số tác vụ trước khi bắt đầu tắt quy trình máy ảo Java. Nếu bạn muốn tắt máy chủ OrientDB theo cách thủ công thì bạn phải thực hiệnshutdown.battập tin. Nhưng các trường hợp máy chủ không dừng đúng cách, khi hệ thống tắt đột ngột mà không thực hiện tập lệnh trên. Các chương trình được điều khiển bởi hệ điều hành với một tập hợp các tín hiệu cụ thể được gọi làservices trong Windows.

Chúng ta phải sử dụng Apache Common Daemoncho phép người dùng Windows gói các ứng dụng Java dưới dạng dịch vụ Windows. Sau đây là quy trình tải xuống và đăng ký trình nền chung Apache.

  • Nhấp vào liên kết sau cho Apache Common Daemons dành cho windows .

  • Bấm vào common-daemon-1.0.15-bin-windows Tải về.

  • Giải nén common-daemon-1.0.15-bin-windowsdanh mục. Sau khi giải nén bạn sẽ tìm thấyprunsrv.exeprunmgr.execác tệp bên trong thư mục. Trong những -

    • prunsrv.exe tệp là một ứng dụng dịch vụ để chạy các ứng dụng dưới dạng dịch vụ.

    • prunmgr.exe tệp là một ứng dụng được sử dụng để giám sát và cấu hình các dịch vụ windows.

  • Vào thư mục cài đặt OrientDB → tạo một thư mục mới và đặt tên là dịch vụ.

  • Sao chép prunsrv.exeprunmgr .exe dán nó vào thư mục dịch vụ.

  • Để định cấu hình OrientDB làm dịch vụ Windows, bạn phải thực thi một tập lệnh ngắn sử dụng prusrv.exe làm dịch vụ Windows.

  • Trước khi xác định Dịch vụ Windows, bạn phải đổi tên prunmgr và prunmgr theo tên của dịch vụ. Ví dụ: OrientDBGraph và OrientDBGraphw tương ứng. Ở đây OrientDBGraph là tên của dịch vụ.

  • Sao chép tập lệnh sau vào tệp có tên installService.bat và đặt nó vào %ORIENTDB_HOME%\service\ danh mục.

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

Tập lệnh yêu cầu hai tham số -

  • Vị trí của jvm.dll, ví dụ: C: \ ProgramFiles \ java \ jdk1.8.0_66 \ jre \ bin \ server \ jvm.dll

  • Vị trí cài đặt OrientDB cho ví dụ C: \ orientdb-community-2.1.9

  • Dịch vụ được cài đặt khi bạn thực thi tệp OrientDBGraph.exe (Bản gốc prv) và nhấp đúp vào nó.

  • Sử dụng lệnh sau để cài đặt các dịch vụ vào Windows.

> Cd %ORIENTDB_HOME%\service 
> installService.bat "C:\Program Files\Java\jdk1.8.0_66\jre\bin\server
   \jvm.dll" C:\orientdb-community-2.1.9

Mở dịch vụ Task Manager, bạn sẽ thấy ảnh chụp màn hình sau với tên dịch vụ đã đăng ký trong đó.

Bước 4 - Xác minh cài đặt OrientDB

Bước này xác minh cài đặt máy chủ cơ sở dữ liệu OrientDB bằng các bước sau.

  • Chạy máy chủ.
  • Chạy bảng điều khiển.
  • Điều hành studio.

Điều này là duy nhất theo hệ điều hành.

Trong Linux

Làm theo quy trình đã cho để xác minh cài đặt OrientDB trong Linux.

Running the server - Bạn có thể sử dụng lệnh sau để khởi động máy chủ.

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

Hoặc bạn có thể sử dụng lệnh sau để khởi động máy chủ OrientDB dưới dạng daemon UNIX.

$ service orientdb start

Nếu nó được cài đặt thành công, bạn sẽ nhận được kết quả sau.

.                                           
          .`        `                                  
          ,      `:.                                   
         `,`    ,:`                                    
         .,.   :,,                                     
         .,,  ,,,                                      
    .    .,.:::::  ````                                 :::::::::     :::::::::    
    ,`   .::,,,,::.,,,,,,`;;                      .:    ::::::::::    :::    :::   
    `,.  ::,,,,,,,:.,,.`  `                       .:    :::      :::  :::     :::  
     ,,:,:,,,,,,,,::.   `        `         ``     .:    :::      :::  :::     :::  
      ,,:.,,,,,,,,,: `::, ,,   ::,::`   : :,::`  ::::   :::      :::  :::    :::   
       ,:,,,,,,,,,,::,:   ,,  :.    :   ::    :   .:    :::      :::  :::::::      
        :,,,,,,,,,,:,::   ,,  :      :  :     :   .:    :::      :::  :::::::::    
  `     :,,,,,,,,,,:,::,  ,, .::::::::  :     :   .:    :::      :::  :::     :::  
  `,...,,:,,,,,,,,,: .:,. ,, ,,         :     :   .:    :::      :::  :::     ::: 
    .,,,,::,,,,,,,:  `: , ,,  :     `   :     :   .:    :::      :::  :::     :::  
      ...,::,,,,::.. `:  .,,  :,    :   :     :   .:    :::::::::::   :::     :::  
           ,::::,,,. `:   ,,   :::::    :     :   .:    :::::::::     ::::::::::   
           ,,:` `,,.                                   
          ,,,    .,`                                   
         ,,.     `,                                          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 - Bạn có thể sử dụng lệnh sau để chạy OrientDB dưới bàn điều khiển.

$ orientdb

Nếu nó được cài đặt thành công, bạn sẽ nhận được kết quả sau.

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 - Sau khi khởi động máy chủ, bạn có thể sử dụng URL sau (http://localhost:2480/) trên trình duyệt của bạn. Bạn sẽ nhận được ảnh chụp màn hình sau.

Trong Windows

Làm theo quy trình đã cho để xác minh cài đặt OrientDB trong Windows.

Running the server - Bạn có thể sử dụng lệnh sau để khởi động máy chủ.

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

Nếu nó được cài đặt thành công, bạn sẽ nhận được kết quả sau.

.                                           
          .`        `                                  
          ,      `:.                                   
         `,`    ,:`                                    
         .,.   :,,    
		 .,,  ,,,                                      
    .    .,.:::::  ````                                 :::::::::     :::::::::    
    ,`   .::,,,,::.,,,,,,`;;                      .:    ::::::::::    :::    :::   
    `,.  ::,,,,,,,:.,,.`  `                       .:    :::      :::  :::     :::  
     ,,:,:,,,,,,,,::.   `        `         ``     .:    :::      :::  :::     :::  
      ,,:.,,,,,,,,,: `::, ,,   ::,::`   : :,::`  ::::   :::      :::  :::    :::   
       ,:,,,,,,,,,,::,:   ,,  :.    :   ::    :   .:    :::      :::  :::::::      
        :,,,,,,,,,,:,::   ,,  :      :  :     :   .:    :::      :::  :::::::::    
  `     :,,,,,,,,,,:,::,  ,, .::::::::  :     :   .:    :::      :::  :::     :::  
  `,...,,:,,,,,,,,,: .:,. ,, ,,         :     :   .:    :::      :::  :::     :::  
    .,,,,::,,,,,,,:  `: , ,,  :     `   :     :   .:    :::      :::  :::     :::  
      ...,::,,,,::.. `:  .,,  :,    :   :     :   .:    :::::::::::   :::     :::  
           ,::::,,,. `:   ,,   :::::    :     :   .:    :::::::::     ::::::::::   
           ,,:` `,,.                                   
          ,,,    .,`                                   
         ,,.     `,                                          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 - Bạn có thể sử dụng lệnh sau để chạy OrientDB dưới bàn điều khiển.

> %ORIENTDB_HOME%\bin\console.bat

Nếu nó được cài đặt thành công, bạn sẽ nhận được kết quả sau.

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 - Sau khi khởi động máy chủ, bạn có thể sử dụng URL sau (http://localhost:2480/) trên trình duyệt của bạn. Bạn sẽ nhận được ảnh chụp màn hình sau.

Tính năng chính của OrientDB là hỗ trợ các đối tượng đa mô hình, tức là nó hỗ trợ các mô hình khác nhau như Document, Graph, Key / Value và Real Object. Nó chứa một API riêng biệt để hỗ trợ tất cả bốn mô hình này.

Mô hình tài liệu

Mô hình tài liệu thuật ngữ thuộc về cơ sở dữ liệu NoSQL. Nó có nghĩa là dữ liệu được lưu trữ trong Tài liệu và nhóm Tài liệu được gọi làCollection. Về mặt kỹ thuật, tài liệu có nghĩa là một tập hợp các cặp khóa / giá trị hoặc còn được gọi là trường hoặc thuộc tính.

OrientDB sử dụng các khái niệm như lớp, cụm và liên kết để lưu trữ, nhóm và phân tích tài liệu.

Bảng sau minh họa sự so sánh giữa mô hình quan hệ, mô hình tài liệu và mô hình tài liệu OrientDB -

Mô hình quan hệ Mô hình tài liệu Mô hình tài liệu OrientDB
Bàn Bộ sưu tập Lớp hoặc Cụm
Hàng Tài liệu Tài liệu
Cột Cặp khóa / giá trị Trường tài liệu
Mối quan hệ Không có sẵn Liên kết

Mô hình đồ thị

Cấu trúc dữ liệu đồ thị là một mô hình dữ liệu có thể lưu trữ dữ liệu dưới dạng các Dọc (Nút) được kết nối với nhau bằng các Cạnh (Arcs). Ý tưởng về cơ sở dữ liệu đồ thị OrientDB đến từ đồ thị thuộc tính. Đỉnh và cạnh là các tạo tác chính của mô hình Đồ thị. Chúng chứa các thuộc tính, có thể làm cho chúng xuất hiện tương tự như các tài liệu.

Bảng sau đây cho thấy sự so sánh giữa mô hình đồ thị, mô hình dữ liệu quan hệ và mô hình đồ thị OrientDB.

Mô hình quan hệ Mô hình đồ thị Mô hình đồ thị OrientDB
Bàn Lớp Vertex và Edge Lớp mở rộng "V" (cho Vertex) và "E" (cho Edges)
Hàng Đỉnh Đỉnh
Cột Thuộc tính Vertex và Edge Thuộc tính Vertex và Edge
Mối quan hệ Cạnh Cạnh

Mô hình Khóa / Giá trị

Mô hình Khóa / Giá trị có nghĩa là dữ liệu có thể được lưu trữ dưới dạng cặp khóa / giá trị trong đó các giá trị có thể thuộc loại đơn giản và phức tạp. Nó có thể hỗ trợ các tài liệu và phần tử đồ thị dưới dạng giá trị.

Bảng sau minh họa sự so sánh giữa mô hình quan hệ, mô hình khóa / giá trị và mô hình khóa / giá trị OrientDB.

Mô hình quan hệ Mô hình khóa / giá trị Mô hình khóa / giá trị OrientDB
Bàn Gầu múc Lớp hoặc Cụm
Hàng Cặp khóa / giá trị Tài liệu
Cột Không có sẵn Trường tài liệu hoặc thuộc tính Vertex / Edge
Mối quan hệ Không có sẵn Liên kết

Mô hình đối tượng

Mô hình này đã được kế thừa bởi lập trình Hướng đối tượng và hỗ trợ Inheritance giữa các loại (loại phụ mở rộng các loại siêu cấp), Polymorphism khi bạn tham chiếu đến một lớp cơ sở và Direct binding from / to Các đối tượng được sử dụng trong ngôn ngữ lập trình.

Bảng sau minh họa sự so sánh giữa mô hình quan hệ, mô hình Đối tượng và mô hình Đối tượng OrientDB.

Mô hình quan hệ Mô hình đối tượng Mô hình đối tượng OrientDB
Bàn Lớp học Lớp hoặc Cụm
Hàng Vật Tài liệu hoặc Đỉnh
Cột Thuộc tính đối tượng Trường tài liệu hoặc thuộc tính Vertex / Edge
Mối quan hệ Con trỏ Liên kết

Trước khi đi vào chi tiết, tốt hơn là nên biết các thuật ngữ cơ bản liên quan đến OrientDB. Sau đây là một số thuật ngữ quan trọng.

Ghi lại

Đơn vị nhỏ nhất mà bạn có thể tải và lưu trữ trong cơ sở dữ liệu. Hồ sơ có thể được lưu trữ trong bốn loại.

  • Document
  • Ghi các byte
  • Vertex
  • Edge

Ghi lại ID

Khi OrientDB tạo một bản ghi, máy chủ cơ sở dữ liệu sẽ tự động gán một mã định danh đơn vị cho bản ghi, được gọi là RecordID (RID). RID trông giống như # <cluster>: <position>. <cluster> có nghĩa là số nhận dạng cụm và <position> có nghĩa là vị trí tuyệt đối của bản ghi trong cụm.

Các tài liệu

Tài liệu là loại bản ghi linh hoạt nhất hiện có trong OrientDB. Tài liệu được gõ nhẹ nhàng và được xác định bởi các lớp lược đồ với ràng buộc xác định, nhưng bạn cũng có thể chèn tài liệu mà không cần bất kỳ lược đồ nào, tức là nó cũng hỗ trợ chế độ lược đồ.

Các tài liệu có thể dễ dàng được xử lý bằng cách xuất và nhập ở định dạng JSON. Ví dụ: hãy xem tài liệu mẫu JSON sau. Nó xác định các chi tiết tài liệu.

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

RecordBytes

Loại bản ghi giống như loại BLOB trong RDBMS. OrientDB có thể tải và lưu trữ tài liệu Loại bản ghi cùng với dữ liệu nhị phân.

Đỉnh

Cơ sở dữ liệu OrientDB không chỉ là cơ sở dữ liệu Tài liệu mà còn là cơ sở dữ liệu Đồ thị. Các khái niệm mới như Vertex và Edge được sử dụng để lưu trữ dữ liệu dưới dạng đồ thị. Trong cơ sở dữ liệu đồ thị, đơn vị dữ liệu cơ bản nhất là nút, trong OrientDB được gọi là đỉnh. Vertex lưu trữ thông tin cho cơ sở dữ liệu.

Cạnh

Có một loại bản ghi riêng biệt được gọi là Cạnh kết nối đỉnh này với đỉnh khác. Các cạnh là hai chiều và chỉ có thể nối hai đỉnh. Có hai loại gờ trong OrientDB, một loại thường và một loại khác nhẹ.

Lớp học

Lớp là một kiểu mô hình dữ liệu và là khái niệm được rút ra từ mô hình lập trình hướng đối tượng. Dựa trên mô hình cơ sở dữ liệu tài liệu truyền thống, dữ liệu được lưu trữ dưới dạng tập hợp, trong khi trong mô hình cơ sở dữ liệu quan hệ dữ liệu được lưu trữ trong các bảng. OrientDB tuân theo API tài liệu cùng với mô hình OPPS. Theo một khái niệm, lớp trong OrientDB có mối quan hệ gần nhất với bảng trong cơ sở dữ liệu quan hệ, nhưng (không giống như bảng) các lớp có thể là lược đồ ít hơn, lược đồ đầy đủ hoặc hỗn hợp. Các lớp có thể kế thừa từ các lớp khác, tạo cây của các lớp. Mỗi lớp có cụm hoặc cụm riêng, (được tạo theo mặc định, nếu không có cụm nào được định nghĩa).

Cụm

Cluster là một khái niệm quan trọng được sử dụng để lưu trữ các bản ghi, tài liệu hoặc các đỉnh. Nói một cách dễ hiểu, Cluster là nơi lưu trữ một nhóm các bản ghi. Theo mặc định, OrientDB sẽ tạo một cụm cho mỗi lớp. Tất cả các bản ghi của một lớp được lưu trữ trong cùng một cụm có cùng tên với lớp. Bạn có thể tạo tối đa 32.767 (2 ^ 15-1) cụm trong cơ sở dữ liệu.

Lớp CREATE là một lệnh được sử dụng để tạo một cụm với tên cụ thể. Khi cụm được tạo, bạn có thể sử dụng cụm để lưu bản ghi bằng cách chỉ định tên trong quá trình tạo bất kỳ mô hình dữ liệu nào.

Các mối quan hệ

OrientDB hỗ trợ hai loại mối quan hệ: tham chiếu và nhúng. Referenced relationships có nghĩa là nó lưu trữ liên kết trực tiếp đến các đối tượng mục tiêu của các mối quan hệ. Embedded relationshipscó nghĩa là nó lưu trữ mối quan hệ trong bản ghi nhúng nó. Mối quan hệ này mạnh hơn mối quan hệ tham chiếu.

Cơ sở dữ liệu

Cơ sở dữ liệu là một giao diện để truy cập vào bộ nhớ thực. CNTT hiểu các khái niệm cấp cao như truy vấn, lược đồ, siêu dữ liệu, chỉ số, v.v. OrientDB cũng cung cấp nhiều loại cơ sở dữ liệu. Để biết thêm thông tin về các loại này, hãy xem Loại cơ sở dữ liệu.

OrientDB hỗ trợ một số kiểu dữ liệu nguyên bản. Sau đây là bảng hoàn chỉnh trên cùng.

Sơ không. Kiểu Sự miêu tả
1 Boolean

Chỉ xử lý các giá trị Đúng hoặc Sai.

Java types: java.lang.Boolean

Min: 0

Max: 1

2 Số nguyên

Số nguyên có dấu 32 bit.

Java types: java.lang.Interger

Min: -2,147,483,648

Max: +2,147,483,647

3 Ngắn

Số nguyên có dấu 16 bit nhỏ.

Java types: java.lang.short

Min: -32,768

Max: 32,767

4 Dài

Số nguyên có dấu 64 bit lớn.

Java types: java.lang.Long

Min: -2 63

Max: +2 63 -1

5 Phao nổi

Số thập phân.

Java types: java.lang.Float

: 2 -149

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

6 Gấp đôi

Số thập phân với độ chính xác cao.

Java types: Java.lang.Double.

Min: 2 -1074

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

7 Ngày giờ

Bất kỳ ngày nào có độ chính xác lên đến mili giây.

Java types: java.util.Date

số 8 Chuỗi

Bất kỳ chuỗi nào dưới dạng chuỗi ký tự chữ và số.

Java types: java.lang.String

9 Nhị phân

Có thể chứa bất kỳ giá trị nào dưới dạng mảng byte.

Java types: byte []

Min: 0

Max: 2.147.483.647

10 Nhúng

Bản ghi được chứa bên trong chủ sở hữu. Bản ghi được chứa không có RecordId.

Java types: ORecord

11 Danh sách được nhúng

Các bản ghi được chứa bên trong chủ sở hữu. Các bản ghi được chứa không có RecordIds và chỉ có thể truy cập được bằng cách điều hướng bản ghi của chủ sở hữu.

Java types: Danh sách <đối tượng>

Min: 0

Max: 41.000.000 mặt hàng

12 Tập hợp được nhúng

Các bản ghi được chứa bên trong chủ sở hữu. Các bản ghi được chứa không có RecordId và chỉ có thể truy cập được bằng cách điều hướng bản ghi của chủ sở hữu.

Java types: set <objects>

Min: 0

Max: 41.000.000 mặt hàng

13 Bản đồ được nhúng

Các bản ghi được chứa bên trong chủ sở hữu dưới dạng giá trị của các mục nhập, trong khi các khóa chỉ có thể là chuỗi. Các bản ghi được chứa không có RecordId và chỉ có thể truy cập được bằng cách điều hướng Hồ sơ của chủ sở hữu.

Java types: Bản đồ <Chuỗi, ORecord>

Min: 0

Max: 41.000.000 mặt hàng

14 Liên kết

Liên kết với Bản ghi khác. Đó là một mối quan hệ 1-1 phổ biến

Java Types: ORID, <? mở rộng ORecord>

Min: 1

Max: 32767: 2 ^ 63-1

15 Danh sách liên kết

Liên kết đến các Bản ghi khác. Đó là một mối quan hệ phổ biến một-nhiều nơi chỉ các RecordIds được lưu trữ.

Java types: Danh sách <? Mở rộng ORecord>

Min: 0

Max: 41.000.000 mặt hàng

16 Liên kết đặt

Liên kết đến các bản ghi khác. Đó là một mối quan hệ một-nhiều.

Java types: Đặt <? mở rộng ORecord>

Min: 0

Max: 41.000.000 mặt hàng

17 Liên kết bản đồ

Liên kết đến các bản ghi khác như giá trị của các mục nhập, trong khi các khóa chỉ có thể là chuỗi. Đó là một mối quan hệ một-nhiều. Chỉ các RecordIds được lưu trữ.

Java types: Bản đồ <Chuỗi,? mở rộng Bản ghi>

Min: 0

Max: 41.000.000 mặt hàng

18 Byte

Một byte. Hữu ích để lưu trữ các số nguyên có dấu 8 bit nhỏ.

Java types: java.lang.Byte

Min: -128

Max: +127

19 Tạm thời Bất kỳ giá trị nào không được lưu trữ trên cơ sở dữ liệu.
20 Ngày

Bất kỳ ngày nào như năm, tháng và ngày.

Java Types: java.util.Date

21 Tập quán

Được sử dụng để lưu trữ một loại tùy chỉnh cung cấp phương pháp Marshall và Unmarshall.

Java types: OSerializableStream

Min: 0

Max: x

22 Thập phân

Số thập phân không làm tròn số.

Java types: java.math.BigDecimal

23 LinkBag

Danh sách các RecordIds dưới dạng RidBag cụ thể.

Java types: ORidBag

24 Bất kì

Loại không xác định, được sử dụng để chỉ định các bộ sưu tập có kiểu hỗn hợp và null.

Trong các chương sau, cách sử dụng các kiểu dữ liệu này trong OrientDB sẽ được thảo luận.

Bảng điều khiển OrientDB là một Ứng dụng Java được tạo ra để hoạt động dựa trên cơ sở dữ liệu OrientDB và các phiên bản Máy chủ. Có một số chế độ giao diện điều khiển mà OrientDB hỗ trợ.

Chế độ tương tác

Đây là chế độ mặc định. Chỉ cần khởi chạy bảng điều khiển bằng cách thực thi tập lệnh saubin/console.sh (hoặc là bin/console.battrong hệ thống MS Windows). Đảm bảo có quyền thực thi trên đó.

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

Sau khi hoàn tất, bàn điều khiển đã sẵn sàng để chấp nhận các lệnh.

Chế độ hàng loạt

Để thực hiện các lệnh ở chế độ hàng loạt, hãy chạy như sau bin/console.sh (hoặc là bin/console.bat trong hệ thống MS Windows) tập lệnh chuyển tất cả các lệnh được phân tách bằng dấu chấm phẩy ";".

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

Hoặc gọi lệnh console truyền tên của tệp ở định dạng văn bản chứa danh sách các lệnh cần thực thi. Các lệnh phải được phân tách bằng dấu chấm phẩy ";".

Thí dụ

Command.txt chứa danh sách các lệnh mà bạn muốn thực hiện thông qua bảng điều khiển OrientDB. Lệnh sau chấp nhận một loạt lệnh từ tệp command.txt.

orientdb> console.bat commands.txt

Trong chế độ hàng loạt, bạn có thể bỏ qua lỗi để cho tập lệnh tiếp tục thực thi bằng cách đặt biến "ignoreErrors" thành true.

orientdb> set ignoreErrors true

Bật Echo

Khi bạn chạy các lệnh bảng điều khiển trong đường dẫn, bạn sẽ cần hiển thị chúng. Bật "tiếng vọng" của các lệnh bằng cách đặt nó làm thuộc tính ở đầu. Sau đây là cú pháp để kích hoạt thuộc tính echo trong bảng điều khiển OrientDB.

orientdb> set echo true

Tham chiếu SQL của cơ sở dữ liệu OrientDB cung cấp một số lệnh để tạo, thay đổi và thả cơ sở dữ liệu.

Câu lệnh sau là cú pháp cơ bản của lệnh Create Database.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<database-url>- Xác định URL của cơ sở dữ liệu. URL chứa hai phần, một phần là <mode> và phần thứ hai là <đường dẫn>.

<mode> - Xác định chế độ, tức là chế độ cục bộ hoặc chế độ từ xa.

<path> - Xác định đường dẫn đến cơ sở dữ liệu.

<user> - Xác định người dùng bạn muốn kết nối với cơ sở dữ liệu.

<password> - Xác định mật khẩu để kết nối với cơ sở dữ liệu.

<storage-type>- Xác định các loại lưu trữ. Bạn có thể chọn giữa PLOCAL và MEMORY.

Thí dụ

Bạn có thể sử dụng lệnh sau để tạo cơ sở dữ liệu cục bộ có tên demo.

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

Nếu cơ sở dữ liệu được tạo thành công, bạn sẽ nhận được kết quả sau.

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

orientdb {db = demo}>

Cơ sở dữ liệu là một trong những mô hình dữ liệu quan trọng với các thuộc tính khác nhau mà bạn có thể sửa đổi theo yêu cầu của mình.

Câu lệnh sau là cú pháp cơ bản của lệnh Alter Database.

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

Ở đâu <attribute-name> xác định thuộc tính mà bạn muốn sửa đổi và <attributevalue> xác định giá trị bạn muốn đặt cho thuộc tính đó.

Bảng sau xác định danh sách các thuộc tính được hỗ trợ để thay đổi cơ sở dữ liệu.

Sr.No. Tên thuộc tính Sự miêu tả
1 TRẠNG THÁI Xác định trạng thái của cơ sở dữ liệu giữa các thuộc tính khác nhau.
2 NHẬP KHẨU Đặt trạng thái nhập.
3 DEFAULTCLUSTERID Đặt cụm mặc định bằng ID. Theo mặc định, nó là 2.
4 ĐỊNH DẠNG NGÀY THÁNG Đặt định dạng ngày cụ thể làm mặc định. Theo mặc định, nó là "yyyy-MM-dd".
5 DATETIMEFORMAT Đặt định dạng ngày giờ cụ thể làm mặc định. Theo mặc định, nó là "yyyy-MM-dd HH: mm: ss".
6 MÚI GIỜ Đặt múi giờ cụ thể. Theo mặc định, đó là múi giờ mặc định của Máy ảo Java (JVM).
7 LOCALECOUNTRY Đặt quốc gia bản địa mặc định. Theo mặc định, nó là quốc gia bản địa mặc định của JVM. Ví dụ: "GB".
số 8 LOCALELANGUAGE Đặt ngôn ngữ địa phương mặc định. Theo mặc định, nó là ngôn ngữ địa phương mặc định của JVM. Ví dụ: "en".
9 CHARSET Đặt loại bộ ký tự. Theo mặc định, nó là bộ ký tự mặc định của JVM. Ví dụ: "utf8".
10 CLUSTERSELECTION Đặt chiến lược mặc định được sử dụng để chọn cụm. Các chiến lược này được tạo ra cùng với việc tạo lớp. Các chiến lược được hỗ trợ là mặc định, roundrobin và cân bằng.
11 CÔNG TÁC TỐI THIỂU Đặt số lượng cụm tối thiểu để tạo tự động khi một lớp mới được tạo. Theo mặc định, nó là 1.
12 TẬP QUÁN Đặt thuộc tính tùy chỉnh.
13 THẨM ĐỊNH Tắt hoặc bật xác thực cho toàn bộ cơ sở dữ liệu.

Thí dụ

Từ phiên bản OrientDB-2.2, trình phân tích cú pháp SQL mới được thêm vào sẽ không cho phép cú pháp thông thường trong một số trường hợp. Do đó, chúng tôi phải vô hiệu hóa trình phân tích cú pháp SQL mới (ngặt nghèo) trong một số trường hợp. Bạn có thể sử dụng lệnh cơ sở dữ liệu Alter sau đây để vô hiệu hóa trình phân tích cú pháp Nghiêm ngặt.

orientdb> ALTER DATABASE custom strictSQL = false

Nếu lệnh được thực hiện thành công, bạn sẽ nhận được kết quả sau.

Database updated successfully

Giống như RDBMS, OrientDB cũng hỗ trợ các hoạt động sao lưu và khôi phục. Trong khi thực hiện thao tác sao lưu, nó sẽ đưa tất cả các tệp của cơ sở dữ liệu hiện tại sang định dạng zip được nén bằng thuật toán ZIP. Tính năng này (Sao lưu) có thể được sử dụng tự động bằng cách bật plugin máy chủ Tự động sao lưu.

Việc sao lưu cơ sở dữ liệu hoặc xuất cơ sở dữ liệu đều giống nhau, tuy nhiên, dựa trên quy trình, chúng ta phải biết khi nào sử dụng sao lưu và khi nào sử dụng xuất.

Trong khi sao lưu, nó sẽ tạo một bản sao nhất quán của cơ sở dữ liệu, tất cả các thao tác ghi thêm đều bị khóa và chờ kết thúc quá trình sao lưu. Trong thao tác này, nó sẽ tạo một tệp sao lưu chỉ đọc.

Nếu bạn cần thao tác đọc và ghi đồng thời trong khi sao lưu, bạn phải chọn xuất cơ sở dữ liệu thay vì sao lưu cơ sở dữ liệu. Xuất không khóa cơ sở dữ liệu và cho phép ghi đồng thời trong quá trình xuất.

Câu lệnh sau đây là cú pháp cơ bản của sao lưu cơ sở dữ liệu.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<dburl> - URL cơ sở dữ liệu nơi cơ sở dữ liệu được đặt tại địa phương hoặc ở vị trí từ xa.

<user> - Chỉ định tên người dùng để chạy sao lưu.

<password> - Cung cấp mật khẩu cho người dùng cụ thể.

<destination> - Vị trí tệp đích nêu rõ nơi lưu tệp zip sao lưu.

<type>- Loại sao lưu tùy chọn. Nó có một trong hai tùy chọn.

  • Mặc định - khóa cơ sở dữ liệu trong quá trình sao lưu.

  • LVM - sử dụng ảnh chụp nhanh sao chép vào ghi LVM trong nền.

Thí dụ

Sao lưu bản demo cơ sở dữ liệu nằm trong hệ thống tệp cục bộ / opt / orientdb / databases / demo thành tệp có tên sample-demo.zip và nằm trong thư mục hiện tại.

Bạn có thể sử dụng lệnh sau để sao lưu bản demo cơ sở dữ liệu.

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

Sử dụng bảng điều khiển

Bạn có thể làm tương tự khi sử dụng bảng điều khiển OrientDB. Trước khi sao lưu một cơ sở dữ liệu cụ thể, trước tiên bạn phải kết nối với cơ sở dữ liệu đó. Bạn có thể sử dụng lệnh sau để kết nối với cơ sở dữ liệu có tên demo.

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

Sau khi kết nối, bạn có thể sử dụng lệnh sau để sao lưu cơ sở dữ liệu vào một tệp có tên 'backup-demo.zip' trong thư mục hiện tại.

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

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được một số thông báo thành công cùng với thông báo sau.

Backup executed in 0.30 seconds

Giống như RDBMS, OrientDB cũng hỗ trợ khôi phục hoạt động. Chỉ từ chế độ giao diện điều khiển, bạn có thể thực hiện thao tác này thành công.

Câu lệnh sau là cú pháp cơ bản để khôi phục hoạt động.

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

Thí dụ

Bạn chỉ phải thực hiện thao tác này từ chế độ bảng điều khiển. Do đó, trước tiên bạn phải khởi động bảng điều khiển OrientDB bằng lệnh OrientDB sau.

$ orientdb

Sau đó, kết nối với cơ sở dữ liệu tương ứng để khôi phục bản sao lưu. Bạn có thể sử dụng lệnh sau để kết nối với cơ sở dữ liệu có tên demo.

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

Sau khi kết nối thành công, bạn có thể sử dụng lệnh sau để khôi phục bản sao lưu từ tệp 'backup-demo.zip'. Trước khi thực thi, hãy đảm bảo rằng tệp backup-demo.zip được đặt trong thư mục hiện tại.

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

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được một số thông báo thành công cùng với thông báo sau.

Database restored in 0.26 seconds

Chương này giải thích cách kết nối với một cơ sở dữ liệu cụ thể từ dòng lệnh OrientDB. Nó mở ra một cơ sở dữ liệu.

Câu lệnh sau là cú pháp cơ bản của lệnh Connect.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<database-url>- Xác định URL của cơ sở dữ liệu. URL chứa hai phần một là <mode> và phần thứ hai là <path>.

<mode> - Xác định chế độ, tức là chế độ cục bộ hoặc chế độ từ xa.

<path> - Xác định đường dẫn đến cơ sở dữ liệu.

<user> - Xác định người dùng bạn muốn kết nối với cơ sở dữ liệu.

<password> - Xác định mật khẩu để kết nối với cơ sở dữ liệu.

Thí dụ

Chúng tôi đã tạo một cơ sở dữ liệu có tên là 'demo' trong các chương trước. Trong ví dụ này, chúng tôi sẽ kết nối với điều đó bằng quản trị viên người dùng.

Bạn có thể sử dụng lệnh sau để kết nối với cơ sở dữ liệu demo.

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

Nếu nó được kết nối thành công, bạn sẽ nhận được kết quả sau:

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

Chương này giải thích cách ngắt kết nối với một cơ sở dữ liệu cụ thể từ dòng lệnh OrientDB. Nó đóng cơ sở dữ liệu hiện đang mở.

Câu lệnh sau là cú pháp cơ bản của lệnh Disconnect.

DISCONNECT

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể và nó sẽ chỉ đóng cơ sở dữ liệu hiện đang chạy.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Chúng tôi sẽ ngắt kết nối khỏi cơ sở dữ liệu demo.

Bạn có thể sử dụng lệnh sau để ngắt kết nối cơ sở dữ liệu.

orientdb {db = demo}> DISCONNECT

Nếu nó được ngắt kết nối thành công, bạn sẽ nhận được kết quả sau:

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

Chương này giải thích cách lấy thông tin của một cơ sở dữ liệu cụ thể từ dòng lệnh OrientDB.

Câu lệnh sau là cú pháp cơ bản của lệnh Info.

info

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể và nó sẽ lấy thông tin của chỉ cơ sở dữ liệu hiện đang chạy.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Chúng tôi sẽ lấy thông tin cơ bản từ cơ sở dữ liệu demo.

Bạn có thể sử dụng lệnh sau để ngắt kết nối cơ sở dữ liệu.

orientdb {db = demo}> info

Nếu nó được ngắt kết nối thành công, bạn sẽ nhận được kết quả sau.

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

Chương này giải thích cách lấy danh sách tất cả cơ sở dữ liệu trong một phiên bản từ dòng lệnh OrientDB.

Câu lệnh sau đây là cú pháp cơ bản của lệnh info.

LIST DATABASES

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với máy chủ cục bộ hoặc từ xa.

Thí dụ

Trước khi truy xuất danh sách cơ sở dữ liệu, chúng ta phải kết nối với máy chủ localhost thông qua máy chủ từ xa. Cần phải nhắc rằng tên người dùng và mật khẩu để kết nối với phiên bản localhost tương ứng là khách và khách, được định cấu hình trongorintdb/config/orientdb-server-config.xml tập tin.

Bạn có thể sử dụng lệnh sau để kết nối với phiên bản máy chủ cơ sở dữ liệu localhost.

orientdb> connect remote:localhost guest

Nó sẽ hỏi mật khẩu. Theo mật khẩu tệp cấu hình cho khách cũng là khách. Nếu nó được kết nối thành công, bạn sẽ nhận được kết quả sau.

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

Sau khi kết nối với máy chủ cơ sở dữ liệu localhost, bạn có thể sử dụng lệnh sau để liệt kê các cơ sở dữ liệu.

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

Nếu nó được thực thi thành công, bạn sẽ nhận được kết quả sau:

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

Bất cứ khi nào bạn muốn đặt trạng thái cơ sở dữ liệu là tĩnh, nó có nghĩa là trạng thái mà cơ sở dữ liệu không phản hồi với bất kỳ hoạt động đọc và ghi nào. Nói một cách đơn giản, cơ sở dữ liệu đang ở trạng thái đóng băng.

Trong chương này, bạn có thể tìm hiểu cách đóng băng cơ sở dữ liệu từ dòng lệnh OrientDB.

Câu lệnh sau là cú pháp cơ bản của lệnh đóng băng cơ sở dữ liệu.

FREEZE DATABASE

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể trong cơ sở dữ liệu từ xa hoặc cục bộ.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Chúng tôi sẽ đóng băng cơ sở dữ liệu này khỏi CLI.

Bạn có thể sử dụng lệnh sau để đóng băng cơ sở dữ liệu.

Orientdb {db = demo}> FREEZE DATABASE

Nếu nó được thực thi thành công, bạn sẽ nhận được kết quả sau.

Database 'demo' was frozen successfully

Trong chương này, bạn có thể học cách giải phóng cơ sở dữ liệu khỏi trạng thái đóng băng thông qua dòng lệnh OrientDB.

Câu lệnh sau là cú pháp cơ bản của lệnh Release database.

RELEASE DATABASE

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể đang ở trạng thái đóng băng.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Chúng tôi sẽ phát hành cơ sở dữ liệu đã bị đóng băng trong chương trước.

Bạn có thể sử dụng lệnh sau để giải phóng cơ sở dữ liệu.

Orientdb {db = demo}> RELEASE DATABASE

Nếu nó được thực thi thành công, bạn sẽ nhận được kết quả sau.

Database 'demo' was release successfully

Trong chương này, bạn có thể tìm hiểu cách hiển thị cấu hình của một cơ sở dữ liệu cụ thể thông qua dòng lệnh OrientDB. Lệnh này có thể áp dụng cho cả cơ sở dữ liệu cục bộ và cơ sở dữ liệu từ xa.

Thông tin cấu hình chứa bộ đệm ẩn mặc định được bật hoặc không, kích thước của bộ đệm đó, giá trị hệ số tải, bộ nhớ tối đa cho bản đồ, kích thước trang nút, kích thước tối thiểu và tối đa của nhóm, v.v.

Câu lệnh sau là cú pháp cơ bản của lệnh cấu hình cơ sở dữ liệu.

CONFIG

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước.

Bạn có thể sử dụng lệnh sau để hiển thị cấu hình của cơ sở dữ liệu demo.

Orientdb {db = demo}> CONFIG

Nếu nó được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Trong danh sách các tham số cấu hình ở trên, nếu bạn muốn thay đổi bất kỳ giá trị tham số nào thì bạn có thể thực hiện từ dòng lệnh một cách dễ dàng bằng lệnh config set and get.

Bộ cấu hình

Bạn có thể cập nhật giá trị biến cấu hình bằng cách sử dụng CONFIG SET chỉ huy.

Câu lệnh sau đây là cú pháp cơ bản của lệnh config set.

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

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Chúng tôi sẽ sửa đổi giá trị biến 'tx.autoRetry' thành 5.

Bạn có thể sử dụng lệnh sau để thiết lập cấu hình của cơ sở dữ liệu demo.

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

Nếu nó được thực thi thành công, bạn sẽ nhận được kết quả sau.

Local configuration value changed correctly

Cấu hình Nhận

Bạn có thể hiển thị giá trị biến cấu hình bằng cách sử dụng CONFIG GET chỉ huy.

Câu lệnh sau là cú pháp cơ bản của lệnh config get.

CONFIG GET <config-variable>

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Chúng tôi sẽ cố gắng truy xuất giá trị biến 'tx.autoRetry'.

Bạn có thể sử dụng lệnh sau để hiển thị cấu hình của cơ sở dữ liệu demo.

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

Nếu nó được thực thi thành công, bạn sẽ nhận được kết quả sau.

Local configuration: tx.autoRetry = 5

Giống như RDBMS, OrientDB cũng cung cấp các tính năng như Xuất và Nhập cơ sở dữ liệu. OrientDB sử dụng định dạng JSON để xuất dữ liệu. Theo mặc định, lệnh xuất đang sử dụng thuật toán GZIP để nén các tệp.

Trong khi xuất cơ sở dữ liệu, nó không khóa cơ sở dữ liệu, có nghĩa là bạn có thể thực hiện đồng thời các thao tác đọc và ghi trên đó. Điều đó cũng có nghĩa là bạn có thể tạo một bản sao chính xác của dữ liệu đó nhờ các thao tác đọc và ghi đồng thời.

Trong chương này, bạn có thể học cách xuất cơ sở dữ liệu từ dòng lệnh OrientDB.

Câu lệnh sau là cú pháp cơ bản của lệnh Export database.

EXPORT DATABASE <output file>

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Bạn có thể sử dụng lệnh sau để xuất cơ sở dữ liệu sang tệp có tên 'export-demo'.

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

Nếu nó được thực thi thành công, nó sẽ tạo một tệp có tên 'export-demo.zip' hoặc 'exportdemo.gz' dựa trên hệ điều hành và bạn sẽ nhận được kết quả sau.

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

Bất cứ khi nào bạn muốn nhập cơ sở dữ liệu, bạn phải sử dụng tệp đã xuất định dạng JSON, tệp này được tạo bằng lệnh xuất.

Trong chương này, bạn có thể tìm hiểu cách nhập cơ sở dữ liệu từ dòng lệnh OrientDB.

Câu lệnh sau là cú pháp cơ bản của lệnh Nhập cơ sở dữ liệu.

IMPORT DATABASE <input file>

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Bạn có thể sử dụng lệnh sau để nhập cơ sở dữ liệu vào tệp có tên 'export-demo.gz'.

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

Nếu nó được thực thi thành công, bạn sẽ nhận được kết quả sau cùng với thông báo thành công.

Database import completed in 11612ms

Tương tự như RDBMS, OrientDB cũng cung cấp các khái niệm giao dịch như Cam kết và Khôi phục. Commit đề cập đến việc đóng giao dịch bằng cách lưu tất cả các thay đổi vào cơ sở dữ liệu. Rollback đề cập đến việc khôi phục trạng thái cơ sở dữ liệu đến thời điểm bạn đã mở giao dịch.

Câu lệnh sau là cú pháp cơ bản của lệnh cơ sở dữ liệu Cam kết.

COMMIT

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể và sau khi bắt đầu giao dịch.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Chúng ta sẽ thấy hoạt động của giao dịch cam kết và lưu trữ bản ghi sử dụng các giao dịch.

Trước tiên, hãy bắt đầu giao dịch bằng cách sử dụng BEGIN chỉ huy.

orientdb {db = demo}> BEGIN

Sau đó, chèn một bản ghi vào bảng nhân viên với các giá trị id = 12 và name = thoả mãn bằng lệnh sau.

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

Bạn có thể sử dụng lệnh sau để thực hiện giao dịch.

orientdb> commit

Nếu giao dịch này được cam kết thành công, bạn sẽ nhận được kết quả sau.

Transaction 2 has been committed in 4ms

Trong chương này, bạn sẽ học cách khôi phục giao dịch chưa được cam kết thông qua giao diện dòng lệnh OrientDB.

Câu lệnh sau là cú pháp cơ bản của lệnh Rollback database.

ROLLBACK

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể và sau khi bắt đầu giao dịch.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Chúng ta sẽ thấy hoạt động của giao dịch khôi phục và lưu trữ bản ghi sử dụng các giao dịch.

Trước tiên, hãy bắt đầu giao dịch bằng cách sử dụng BEGIN chỉ huy.

orientdb {db = demo}> BEGIN

Sau đó, chèn một bản ghi vào bảng nhân viên với các giá trị id = 12 và name = thoả mãn bằng lệnh sau.

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

Bạn có thể sử dụng lệnh sau để lấy các bản ghi từ bảng Nhân viên.

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

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Bây giờ bạn có thể sử dụng lệnh sau để khôi phục giao dịch này.

orientdb> ROLLBACK

Kiểm tra lại truy vấn chọn để truy xuất bản ghi tương tự từ bảng nhân viên.

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

Nếu quá trình khôi phục được thực hiện thành công, bạn sẽ nhận được 0 bản ghi được tìm thấy trong đầu ra.

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

Theo thuật ngữ kỹ thuật Optimizationcó nghĩa là "Đạt được hiệu suất tốt hơn có thể trong khoảng thời gian nhanh nhất." Với tham chiếu đến cơ sở dữ liệu, tối ưu hóa liên quan đến việc tối đa hóa tốc độ và hiệu quả mà dữ liệu được truy xuất.

OrientDB hỗ trợ các cạnh nhẹ, có nghĩa là mối quan hệ trực tiếp giữa các thực thể dữ liệu. Nói một cách dễ hiểu, nó là một mối quan hệ giữa trường với trường. OrientDB cung cấp các cách khác nhau để tối ưu hóa cơ sở dữ liệu. Nó hỗ trợ chuyển đổi các cạnh thông thường sang các cạnh nhẹ.

Câu lệnh sau là cú pháp cơ bản của lệnh Optimize database.

OPTMIZE DATABASE [-lwedges] [-noverbose]

Ở đâu lwedges chuyển đổi các cạnh thông thường thành các cạnh nhẹ và noverbose vô hiệu hóa đầu ra.

Thí dụ

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên là 'demo' mà chúng ta đã tạo trong chương trước. Bạn có thể sử dụng lệnh tối ưu hóa cơ sở dữ liệu sau.

OPTIMIZE DATABASE -lwedges

Nếu nó được thực hiện thành công, bạn sẽ nhận được một số thông báo thành công cùng với thông báo hoàn thành.

Database Optimization completed in 35ms

Tương tự như RDBMS, OrientDB cung cấp tính năng thả cơ sở dữ liệu. Drop database đề cập đến việc loại bỏ hoàn toàn một cơ sở dữ liệu.

Câu lệnh sau đây là cú pháp cơ bản của lệnh Drop database.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<database-name> - Tên cơ sở dữ liệu bạn muốn bỏ.

<server-username> - Tên người dùng của cơ sở dữ liệu người có đặc quyền thả cơ sở dữ liệu.

<server-user-password> - Mật khẩu của người dùng cụ thể.

Thí dụ

Có hai cách để loại bỏ cơ sở dữ liệu, một là thả một cơ sở dữ liệu hiện đang mở và thứ hai là thả một cơ sở dữ liệu cụ thể bằng cách cung cấp tên cụ thể.

Trong ví dụ này, chúng ta sẽ sử dụng cùng một cơ sở dữ liệu có tên 'demo' mà chúng ta đã tạo trong chương trước. Bạn có thể sử dụng lệnh sau để thả cơ sở dữ liệudemo.

orientdb {db = demo}> DROP DATABASE

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

Database 'demo' deleted successfully

OR

Bạn có thể sử dụng một lệnh khác để thả một cơ sở dữ liệu như sau.

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

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

Database 'demo' deleted successfully

OrientDB là một cơ sở dữ liệu NoSQL có thể lưu trữ các tài liệu và dữ liệu hướng đồ thị. Cơ sở dữ liệu NoSQL không chứa bất kỳ bảng nào, vậy làm thế nào bạn có thể chèn dữ liệu dưới dạng bản ghi. Ở đây bạn có thể thấy dữ liệu bảng ở dạng lớp, thuộc tính, đỉnh và cạnh nghĩa là các lớp giống như bảng và thuộc tính giống như tệp trong bảng.

Chúng tôi có thể xác định tất cả các thực thể này bằng cách sử dụng schematrong OrientDB. Dữ liệu thuộc tính có thể được chèn vào một lớp. Lệnh Insert tạo một bản ghi mới trong lược đồ cơ sở dữ liệu. Bản ghi có thể ít giản đồ hơn hoặc tuân theo một số quy tắc cụ thể.

Câu lệnh sau là cú pháp cơ bản của lệnh Insert Record.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

SET - Xác định từng trường cùng với giá trị.

CONTENT- Định nghĩa dữ liệu JSON để đặt giá trị trường. Đây là tùy chọn.

RETURN- Định nghĩa biểu thức trả về thay vì số lượng bản ghi được chèn vào. Các trường hợp sử dụng phổ biến nhất là -

  • @rid - Trả về ID bản ghi của bản ghi mới.

  • @this - Trả về toàn bộ bản ghi mới.

FROM - Nơi bạn muốn chèn bản ghi hoặc tập hợp kết quả.

Thí dụ

Chúng ta hãy xem xét một bảng Khách hàng với các trường và loại sau.

Sr.No. Tên trường Kiểu
1 Tôi Số nguyên
2 Tên Chuỗi
3 Tuổi tác Số nguyên

Bạn có thể tạo Lược đồ (bảng) bằng cách thực hiện các lệnh sau.

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

Sau khi thực hiện tất cả các lệnh, bạn sẽ nhận được tên bảng Khách hàng với các trường id, name và age. Bạn có thể kiểm tra bảng bằng cách thực hiện truy vấn chọn vào bảng Khách hàng.

OrientDB cung cấp các cách khác nhau để chèn bản ghi. Hãy xem xét bảng Khách hàng sau có chứa các bản ghi mẫu.

Sr.No. Tên Tuổi tác
1 Hài lòng 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Lệnh sau để chèn bản ghi đầu tiên vào bảng Khách hàng.

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

Nếu lệnh trên được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Lệnh sau để chèn bản ghi thứ hai vào bảng Khách hàng.

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

Nếu lệnh trên được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Lệnh sau để chèn bản ghi thứ ba vào bảng Khách hàng.

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

Nếu lệnh trên được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Lệnh sau để chèn hai bản ghi tiếp theo vào bảng Khách hàng.

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

Nếu lệnh trên được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Bạn có thể kiểm tra xem tất cả các bản ghi này đã được chèn hay chưa bằng cách thực hiện lệnh sau.

SELECT FROM Customer

Nếu lệnh trên được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Tương tự như RDBMS, OrientDB hỗ trợ các loại truy vấn SQL khác nhau để lấy các bản ghi từ cơ sở dữ liệu. Trong khi truy xuất các bản ghi, chúng tôi có các biến thể hoặc tùy chọn truy vấn khác nhau cùng với câu lệnh select.

Câu lệnh sau là cú pháp cơ bản của lệnh SELECT.

SELECT [ <Projections> ] [ FROM <Target> [ LET <Assignment>* ] ] 
   [ WHERE <Condition>* ] 
   [ GROUP BY <Field>* ] 
   [ ORDER BY <Fields>* [ ASC|DESC ] * ] 
   [ UNWIND <Field>* ] 
   [ SKIP <SkipRecords> ] 
   [ LIMIT <MaxRecords> ] 
   [ FETCHPLAN <FetchPlan> ] 
   [ TIMEOUT <Timeout> [ <STRATEGY> ] ]
   [ LOCK default|record ] 
   [ PARALLEL ] 
   [ NOCACHE ]

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<Projections> - Cho biết dữ liệu bạn muốn trích xuất từ ​​truy vấn dưới dạng tập hợp các bản ghi kết quả.

FROM- Chỉ ra đối tượng cần truy vấn. Đây có thể là một lớp, cụm, ID bản ghi duy nhất, tập hợp các ID bản ghi. Bạn có thể chỉ định tất cả các đối tượng này làm mục tiêu.

WHERE - Chỉ định điều kiện để lọc tập kết quả.

LET - Cho biết biến ngữ cảnh được sử dụng trong các phép chiếu, điều kiện hoặc truy vấn phụ.

GROUP BY - Chỉ ra trường để nhóm các bản ghi.

ORDER BY - Cho biết người đã nộp để sắp xếp một bản ghi theo thứ tự.

UNWIND - Chỉ định trường để giải nén bộ sưu tập các bản ghi.

SKIP - Xác định số lượng bản ghi bạn muốn bỏ qua từ khi bắt đầu tập kết quả.

LIMIT - Cho biết số lượng bản ghi tối đa trong tập kết quả.

FETCHPLAN - Chỉ định chiến lược xác định cách bạn muốn tìm nạp kết quả.

TIMEOUT - Xác định thời gian tối đa tính bằng mili giây cho truy vấn.

LOCK- Xác định chiến lược khóa. DEFAULT và RECORD là các chiến lược khóa có sẵn.

PARALLEL - Thực hiện truy vấn đối với các luồng đồng thời 'x'.

NOCACHE - Xác định xem bạn có muốn sử dụng bộ nhớ cache hay không.

Thí dụ

Chúng ta hãy xem xét bảng Khách hàng sau đây được tạo trong chương trước.

Sr.No. Tên Tuổi tác
1 Hài lòng 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Thử các truy vấn chọn lọc khác nhau để lấy các bản ghi dữ liệu từ bảng Khách hàng.

Method 1 - Bạn có thể sử dụng truy vấn sau để chọn tất cả các bản ghi từ bảng Khách hàng.

orientdb {db = demo}> SELECT FROM Customer

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

----+-----+--------+----+-------+---- 
#   |@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 - Chọn tất cả các bản ghi có tên bắt đầu bằng chữ cái 'k'.

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

HOẶC bạn có thể sử dụng truy vấn sau cho ví dụ trên.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Method 3 - Chọn id, đặt tên cho các bản ghi từ bảng Khách hàng có tên bằng chữ in hoa.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

----+--------+----+------- 
#   |@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 - Chọn tất cả các bản ghi từ bảng Khách hàng có độ tuổi nằm trong khoảng từ 25 đến 29.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

----+-----+--------+----+-------+---- 
#   |@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 - Chọn tất cả các bản ghi từ bảng Khách hàng nơi bất kỳ trường nào có chứa từ 'sh'.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Method 6 - Chọn tất cả các bản ghi từ bảng Khách hàng, sắp xếp theo độ tuổi theo thứ tự giảm dần.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

----+-----+--------+----+-------+---- 
#   |@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được sử dụng để tải một bản ghi cụ thể từ lược đồ. Tải bản ghi sẽ tải bản ghi với sự trợ giúp của ID bản ghi. Nó được đại diện với@rid biểu tượng trong tập kết quả.

Câu lệnh sau đây là cú pháp cơ bản của lệnh LOAD Record.

LOAD RECORD <record-id>

Ở đâu <record-id> xác định id bản ghi của bản ghi bạn muốn tải.

Nếu bạn không biết ID Bản ghi của một bản ghi cụ thể, thì bạn có thể thực hiện bất kỳ truy vấn nào đối với bảng. Trong tập kết quả, bạn sẽ tìm thấy ID bản ghi (@rid) của bản ghi tương ứng.

Thí dụ

Chúng ta hãy xem xét cùng một bảng Khách hàng mà chúng ta đã sử dụng trong các chương trước.

Sr.No. Tên Tuổi tác
1 Hài lòng 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Hãy thử truy vấn sau để truy xuất bản ghi có ID bản ghi @rid: #11:0.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Reload Recordcũng hoạt động tương tự như lệnh Load Record và cũng được sử dụng để tải một bản ghi cụ thể từ lược đồ. Tải bản ghi sẽ tải bản ghi với sự trợ giúp của ID bản ghi. Nó được đại diện với@ridký hiệu trong tập kết quả. Sự khác biệt chính là bản ghi Tải lại bỏ qua bộ đệm, điều này rất hữu ích khi các giao dịch đồng thời bên ngoài được áp dụng để thay đổi bản ghi. Nó sẽ đưa ra bản cập nhật mới nhất.

Câu lệnh sau là cú pháp cơ bản của lệnh RELOAD Record.

RELOAD RECORD <record-id>

Ở đâu <record-id> xác định id bản ghi của bản ghi mà bạn muốn tải lại.

Nếu bạn không biết ID Bản ghi của một bản ghi cụ thể, thì bạn có thể thực hiện bất kỳ truy vấn nào đối với bảng. Trong tập kết quả, bạn sẽ tìm thấy ID bản ghi (@rid) của bản ghi tương ứng.

Thí dụ

Chúng ta hãy xem xét cùng một bảng Khách hàng mà chúng ta đã sử dụng trong chương trước.

Sr.No. Tên Tuổi tác
1 Hài lòng 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Hãy thử truy vấn sau để truy xuất bản ghi có ID bản ghi @rid: #11:0.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Export Recordlà lệnh dùng để xuất bản ghi đã tải sang định dạng được yêu cầu và hỗ trợ. Nếu bạn đang thực hiện bất kỳ cú pháp sai nào, nó sẽ đưa ra danh sách các định dạng được hỗ trợ. OrientDB là một họ cơ sở dữ liệu Tài liệu, do đó JSON là định dạng được hỗ trợ mặc định.

Câu lệnh sau là cú pháp cơ bản của lệnh Export Record.

EXPORT RECORD <format>

Ở đâu <Format> xác định định dạng bạn muốn lấy bản ghi.

Note - Lệnh Export sẽ xuất bản ghi đã tải dựa trên ID bản ghi.

Thí dụ

Chúng ta hãy xem xét cùng một bảng Khách hàng mà chúng ta đã sử dụng trong chương trước.

Sr.No. Tên Tuổi tác
1 Hài lòng 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Hãy thử truy vấn sau để truy xuất bản ghi có ID bản ghi @rid: #11:0.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Sử dụng truy vấn sau để xuất bản ghi mà anh ấy đã tải (# 11: 0) sang định dạng JSON.

orientdb {db = demo}> EXPORT RECORD json

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Update Recordlệnh được sử dụng để sửa đổi giá trị của một bản ghi cụ thể. SET là lệnh cơ bản để cập nhật một giá trị trường cụ thể.

Câu lệnh sau đây là cú pháp cơ bản của lệnh Update.

UPDATE <class>|cluster:<cluster>|<recordID> 
   [SET|INCREMENT|ADD|REMOVE|PUT <field-name> = <field-value>[,]*] |[CONTENT| MERGE <JSON>] 
   [UPSERT] 
   [RETURN <returning> [<returning-expression>]] 
   [WHERE <conditions>] 
   [LOCK default|record] 
   [LIMIT <max-records>] [TIMEOUT <timeout>]

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

SET - Xác định trường để cập nhật.

INCREMENT - Tăng giá trị trường được chỉ định bằng giá trị đã cho.

ADD - Thêm mục mới vào các trường bộ sưu tập.

REMOVE - Xóa một mục khỏi trường bộ sưu tập.

PUT - Đặt mục nhập vào trường bản đồ.

CONTENT - Thay thế nội dung bản ghi bằng nội dung tài liệu JSON.

MERGE - Hợp nhất nội dung bản ghi với một tài liệu JSON.

LOCK- Chỉ định cách khóa các bản ghi giữa tải và cập nhật. Chúng tôi có hai tùy chọn để chỉ địnhDefaultRecord.

UPSERT- Cập nhật bản ghi nếu nó tồn tại hoặc chèn một bản ghi mới nếu nó không tồn tại. Nó giúp thực hiện một truy vấn thay vì thực hiện hai truy vấn.

RETURN - Chỉ định một biểu thức để trả về thay vì số lượng bản ghi.

LIMIT - Xác định số lượng bản ghi tối đa để cập nhật.

TIMEOUT - Xác định thời gian bạn muốn cho phép bản cập nhật chạy trước khi hết thời gian.

Thí dụ

Chúng ta hãy xem xét cùng một bảng Khách hàng mà chúng ta đã sử dụng trong chương trước.

Sr.No. Tên Tuổi tác
1 Hài lòng 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 29

Hãy thử truy vấn sau để cập nhật tuổi của khách hàng 'Raja'.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Để kiểm tra bản ghi của bảng Khách hàng, bạn có thể sử dụng truy vấn sau.

orientdb {db = demo}> SELECT FROM Customer

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

----+-----+--------+----+-------+---- 
#   |@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 lệnh được sử dụng để xóa các giá trị của một bản ghi cụ thể.

Câu lệnh sau là cú pháp cơ bản của lệnh Truncate.

TRUNCATE RECORD <rid>*

Ở đâu <rid>* cho biết ID bản ghi để cắt bớt. Bạn có thể sử dụng nhiều Rids được phân tách bằng dấu phẩy để cắt bớt nhiều bản ghi. Nó trả về số lượng bản ghi bị cắt bớt.

Thí dụ

Chúng ta hãy xem xét cùng một bảng Khách hàng mà chúng ta đã sử dụng trong chương trước.

Sr.No. Tên Tuổi tác
1 Hài lòng 25
2 Krishna 26
3 Kiran 29
4 Javeed 21
5 Raja 28

Hãy thử truy vấn sau để cắt ngắn bản ghi có ID bản ghi # 11: 4.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Để kiểm tra bản ghi của bảng Khách hàng, bạn có thể sử dụng truy vấn sau.

Orientdb {db = demo}> SELECT FROM Customer

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

----+-----+--------+----+-------+---- 
#   |@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 lệnh được sử dụng để xóa một hoặc nhiều bản ghi hoàn toàn khỏi cơ sở dữ liệu.

Câu lệnh sau là cú pháp cơ bản của lệnh Delete.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

LOCK- Chỉ định cách khóa các bản ghi giữa tải và cập nhật. Chúng tôi có hai tùy chọn để chỉ địnhDefaultRecord.

RETURN - Chỉ định một biểu thức để trả về thay vì số lượng bản ghi.

LIMIT - Xác định số lượng bản ghi tối đa để cập nhật.

TIMEOUT - Xác định thời gian bạn muốn cho phép bản cập nhật chạy trước khi hết thời gian.

Note - Không sử dụng DELETE để loại bỏ các Dọc hoặc Cạnh vì nó ảnh hưởng đến tính toàn vẹn của biểu đồ.

Thí dụ

Hãy để chúng tôi xem xét bảng Khách hàng.

Sr.No. Tên Tuổi tác
1 Hài lòng 25
2 Krishna 26
3 Kiran 29
4 Javeed 21

Hãy thử truy vấn sau để xóa bản ghi có id = 4.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Để kiểm tra bản ghi của bảng Khách hàng, bạn có thể sử dụng truy vấn sau.

Orientdb {db = demo}> SELECT FROM Customer

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

----+-----+--------+----+-------+---- 
#   |@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 hỗ trợ tính năng đa mô hình và cung cấp các cách khác nhau để tiếp cận và hiểu các khái niệm cơ bản của cơ sở dữ liệu. Tuy nhiên, chúng ta có thể dễ dàng truy cập các mô hình này từ quan điểm của API cơ sở dữ liệu tài liệu. Giống như RDBMS, OrientDB cũng sử dụng Bản ghi như một phần tử lưu trữ nhưng nó sử dụng kiểu Tài liệu. Tài liệu được lưu trữ dưới dạng các cặp Khóa / Giá trị. Chúng tôi đang lưu trữ các trường và thuộc tính dưới dạng các cặp khóa / giá trị thuộc về một lớp khái niệm.

Classlà một loại mô hình dữ liệu và khái niệm này được rút ra từ mô hình lập trình hướng đối tượng. Dựa trên mô hình cơ sở dữ liệu tài liệu truyền thống, dữ liệu được lưu trữ dưới dạng tập hợp, trong khi trong mô hình cơ sở dữ liệu quan hệ dữ liệu được lưu trữ trong các bảng. OrientDB tuân theo API tài liệu cùng với mô hình OPPS. Theo một khái niệm, lớp trong OrientDB có mối quan hệ gần nhất với bảng trong cơ sở dữ liệu quan hệ, nhưng các lớp (không giống như bảng) có thể là lược đồ ít hơn, lược đồ đầy đủ hoặc hỗn hợp. Các lớp có thể kế thừa từ các lớp khác, tạo cây của các lớp. Mỗi lớp có cụm hoặc cụm riêng, (được tạo theo mặc định, nếu không có cụm nào được định nghĩa).

Câu lệnh sau đây là cú pháp cơ bản của Lệnh Tạo Lớp.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<class> - Xác định tên của lớp bạn muốn tạo.

<super-class> - Xác định siêu lớp bạn muốn mở rộng với lớp này.

<total-cluster-number>- Xác định tổng số cụm được sử dụng trong lớp này. Mặc định là 1.

ABSTARCT- Định nghĩa lớp là trừu tượng. Đây là tùy chọn.

Thí dụ

Như đã thảo luận, lớp là một khái niệm liên quan đến bảng. Do đó ở đây chúng ta sẽ tạo một Tài khoản bảng. Tuy nhiên, trong khi tạo lớp, chúng ta không thể xác định các trường, tức là các thuộc tính dựa trên mô hình OOPS.

Lệnh sau là để tạo một lớp có tên là Tài khoản.

orientdb> CREATE CLASS Account

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Class created successfully

Bạn có thể sử dụng lệnh sau để tạo một lớp Car mở rộng đến lớp Vehicle.

orientdb> CREATE CLASS Car EXTENDS Vehicle

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Class created successfully

Bạn có thể sử dụng lệnh sau để tạo một lớp Person dưới dạng trừu tượng.

orientdb> CREATE CLASS Person ABSTRACT

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Class created successfully

Note- Nếu không có thuộc tính, lớp vô dụng và không thể xây dựng đối tượng thực. Trong các chương tiếp theo, bạn có thể tìm hiểu cách tạo thuộc tính cho một lớp cụ thể.

Lớp và Thuộc tính trong OrientDB được sử dụng để xây dựng một lược đồ với các thuộc tính tương ứng như tên lớp, siêu lớp, cụm, số cụm, Tóm tắt, v.v. Nếu bạn muốn sửa đổi hoặc cập nhật bất kỳ thuộc tính nào của các lớp hiện có trong lược đồ thì bạn phải sử dụng Alter Class chỉ huy.

Câu lệnh sau là cú pháp cơ bản của Lệnh lớp Alter.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<class> - Xác định tên lớp.

<attribute-name> - Xác định thuộc tính bạn muốn thay đổi.

<attribute-value> - Xác định giá trị bạn muốn đặt cho thuộc tính.

Bảng sau xác định danh sách các thuộc tính hỗ trợ lệnh Alter Class.

Thuộc tính Kiểu Sự miêu tả
TÊN Chuỗi Thay đổi tên lớp.
TÊN NGẮN Chuỗi Xác định tên ngắn, (nghĩa là, bí danh), cho lớp. Sử dụng NULL để xóa chỉ định tên ngắn.
SUPERCLASS Chuỗi Định nghĩa một siêu lớp cho lớp. Để thêm một lớp mới, bạn có thể sử dụng cú pháp + <lớp>, để xóa nó, hãy sử dụng - <lớp>.
QUÁ KHỔ Số thập phân Xác định hệ số quá khổ.
BỘ ĐIỀU CHỈNH Chuỗi Thêm một cụm vào lớp. Nếu cụm không tồn tại, nó tạo ra một cụm vật lý. Việc thêm các cụm vào một lớp cũng hữu ích trong việc lưu trữ các bản ghi trong các máy chủ phân tán.
LOẠI BỎ Chuỗi Xóa một cụm khỏi một lớp. Nó không xóa cụm, chỉ xóa nó khỏi lớp.
CHẾ ĐỘ NGHIÊM NGẶT - Bật hoặc tắt chế độ nghiêm ngặt. Khi ở chế độ nghiêm ngặt, bạn làm việc ở chế độ toàn lược đồ và không thể thêm thuộc tính mới vào bản ghi nếu chúng là một phần của định nghĩa lược đồ của lớp.
CLUSTERSELECTION - Xác định chiến lược lựa chọn trong việc chọn cụm mà nó sử dụng cho các bản ghi mới.
TẬP QUÁN - Xác định thuộc tính tùy chỉnh. Tên và giá trị thuộc tính phải tuân theo cú pháp <propertyname> = <value> không có khoảng trắng giữa tên và giá trị.
TRỪU TƯỢNG Boolean Chuyển đổi lớp thành một lớp trừu tượng hoặc ngược lại.

Thí dụ

Hãy để chúng tôi thử một số ví dụ sẽ cập nhật hoặc sửa đổi các thuộc tính của lớp hiện có.

Truy vấn sau được sử dụng để xác định một "Người" siêu cấp cho một lớp hiện có "Nhân viên".

orientdb> ALTER CLASS Employee SUPERCLASS Person

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Class altered successfully

Truy vấn sau được sử dụng để thêm một "Người" siêu cấp cho một lớp hiện có "Nhân viên".

orientdb> ALTER CLASS Employee SUPERCLASS +Person

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Class altered successfully

Truncate classsẽ xóa tất cả các bản ghi của các cụm được xác định là một phần của lớp. Trong OrientDB, mọi lớp đều có một cụm liên kết có cùng tên. Nếu bạn cũng muốn xóa tất cả các bản ghi khỏi hệ thống phân cấp lớp, bạn cần sử dụng từ khóa POLYMORPHIC.

Câu lệnh sau đây là cú pháp cơ bản của Truncate Class Command.

TRUNCATE CLASS <class> [ POLYMORPHIC ] [ UNSAFE ]

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<class> - Xác định lớp bạn muốn cắt bớt.

POLYMORPHIC - Xác định xem lệnh có cắt bớt phân cấp hay không.

UNSAFE - Định nghĩa các lực lượng lệnh cắt ngắn trên đỉnh hoặc lớp cạnh.

Thí dụ

Truy vấn sau đây để cắt bớt một lớp Profile.

orientdb> TRUNCATE CLASS Profile

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Class truncated successfully

Các Drop Classlệnh xóa một lớp khỏi lược đồ. Điều quan trọng là phải chú ý và duy trì một lược đồ nhất quán. Ví dụ, tránh để loại bỏ các lớp là siêu lớp của những người khác. Cụm được liên kết sẽ không bị xóa.

Câu lệnh sau là cú pháp cơ bản của lệnh Drop Class.

DROP CLASS <class>

Bỏ một lớp với tên lớp.

Thí dụ

Hãy thử truy vấn sau đây để Bỏ một nhân viên trong lớp.

Orientdb> DROP CLASS Employee

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Class dropped successfully

Clusterlà một khái niệm quan trọng trong OrientDB được sử dụng để lưu trữ hồ sơ, tài liệu hoặc các đỉnh. Nói một cách dễ hiểu, cluster là nơi lưu trữ một nhóm các bản ghi. Theo mặc định, OrientDB sẽ tạo một cụm cho mỗi lớp. Tất cả các bản ghi của một lớp được lưu trữ trong cùng một cụm, có cùng tên với lớp. Bạn có thể tạo tối đa 32.767 (2 ^ 15-1) cụm trong cơ sở dữ liệu.

Lớp CREATE là một lệnh được sử dụng để tạo một cụm với một tên cụ thể. Khi cụm được tạo, bạn có thể sử dụng cụm để lưu bản ghi bằng cách chỉ định tên trong quá trình tạo bất kỳ mô hình dữ liệu nào. Nếu bạn muốn thêm một cụm mới vào một lớp, hãy sử dụng lệnh Alter Class và lệnh ADDCLUSTER.

Câu lệnh sau đây là cú pháp cơ bản của lệnh Create Cluster.

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

Ở đâu <cluster> xác định tên của cụm bạn muốn tạo và <cluster-id> xác định ID số bạn muốn sử dụng cho cụm.

Bảng sau đây cung cấp danh sách các chiến lược lựa chọn cụm.

Sr.No. Chiến lược & Mô tả
1

Default

Chọn cụm bằng cách sử dụng thuộc tính lớp ClusterId mặc định.

2

Round-robin

Chọn cụm tiếp theo theo thứ tự vòng tròn. Nó sẽ khởi động lại sau khi hoàn tất.

3

Balanced

Chọn cụm nhỏ nhất. Cho phép lớp có tất cả các cụm bên dưới cân bằng về kích thước. Khi thêm một cụm mới vào một lớp hiện có, nó sẽ lấp đầy cụm mới trước.

Thí dụ

Hãy để chúng tôi lấy một ví dụ để tạo một cụm có tên là bán hàng.

orientdb> CREATE CLUSTER sales

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Cluster created correctly with id #12

Alter Clusterlà cập nhật các thuộc tính trên một cụm hiện có. Trong chương này, bạn có thể tìm hiểu cách thêm hoặc sửa đổi các thuộc tính của một cụm.

Câu lệnh sau là cú pháp cơ bản của lệnh Alter Cluster.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<cluster> - Xác định tên cụm.

<attribute-name> - Xác định thuộc tính bạn muốn thay đổi.

<attribute-value> - Xác định giá trị bạn muốn đặt cho thuộc tính này.

Định dạng bảng sau cung cấp danh sách các thuộc tính được hỗ trợ mà bạn có thể sử dụng cùng với lệnh cụm Alter.

Tên Kiểu Sự miêu tả
TÊN Chuỗi Thay đổi tên cụm.
TRẠNG THÁI Chuỗi Thay đổi trạng thái cụm. Các giá trị được phép là ONLINE và OFFLINE. Theo mặc định, các cụm đang trực tuyến.
NÉN Chuỗi Xác định kiểu nén để sử dụng. Các giá trị được phép là NOTHING, SNAPPY, GZIP và bất kỳ kiểu nén nào khác được đăng ký trong lớp OCompressionFactory.
USE_WAL Boolean Xác định xem nó có sử dụng Journal khi OrientDB hoạt động với cụm hay không
RECORD_GROW_FACTO R Số nguyên Xác định hệ số tăng trưởng để tiết kiệm nhiều không gian hơn khi tạo bản ghi. Bạn có thể thấy điều này hữu ích khi cập nhật hồ sơ với thông tin bổ sung.
RECORD_OVERFLOW_GR OW_FACTOR Số nguyên Xác định yếu tố tăng trưởng trên các bản cập nhật. Khi nó đạt đến giới hạn kích thước, sử dụng cài đặt này để có thêm không gian, (hệ số> 1).
CONFLICTSTRATEGY Chuỗi Xác định chiến lược mà nó sử dụng để xử lý xung đột trong trường hợp OrientDB MVCC tìm thấy bản cập nhật hoặc thao tác xóa mà nó thực hiện so với bản ghi cũ.

Bảng sau cung cấp danh sách các chiến lược Xung đột.

Sr.No. Chiến lược & Mô tả
1

Version

Đưa ra một ngoại lệ khi các phiên bản khác nhau. Đây là thiết lập mặc định.

2

Content

Trong trường hợp các phiên bản khác nhau, nó sẽ kiểm tra những thay đổi trong nội dung, nếu không nó sẽ sử dụng phiên bản cao nhất để tránh trường hợp ngoại lệ.

3

Automerge

Hợp nhất các thay đổi.

Thí dụ

Hãy thử các truy vấn ví dụ sau để tìm hiểu lệnh cụm Alter.

Thực hiện lệnh sau để thay đổi tên của một cụm từ Nhân viên thành Nhân viên2.

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

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Cluster updated successfully

Thực hiện lệnh sau để thay đổi tên của một cụm từ Employee2 thành Employee bằng cách sử dụng ID cụm.

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

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Cluster updated successfully

Thực hiện lệnh sau để thay đổi chiến lược xung đột cụm để tự động hóa.

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

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Cluster updated successfully

Các Truncate Cluster lệnh xóa tất cả các bản ghi của một cụm.

Câu lệnh sau là cú pháp cơ bản của Truncate Cluster Command.

TRUNCATE CLUSTER <cluster-name>

Ở đâu <cluster-name> là tên của cụm.

Thí dụ

Hãy thử truy vấn sau để cắt ngắn cụm có tên là bán hàng.

Orientdb {db = demo}> TRUNCATE CLUSTER Profile

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Cluster truncated successfully.

Các Drop Clusterlệnh loại bỏ cụm và tất cả nội dung liên quan của nó. Hoạt động này là vĩnh viễn và hoàn nguyên.

Câu lệnh sau là cú pháp cơ bản của lệnh Drop Cluster.

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

Ở đâu <cluster-name> xác định tên của cụm bạn muốn xóa và <cluster-id> xác định ID của cụm mà bạn muốn loại bỏ.

Thí dụ

Hãy thử lệnh sau để loại bỏ cụm Bán hàng.

orientdb> DROP CLUSTER Sales

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Cluster dropped successfully

Propertytrong OrientDB hoạt động giống như một trường của lớp và cột trong bảng cơ sở dữ liệu. Create Property là một lệnh được sử dụng để tạo một thuộc tính cho một lớp cụ thể. Tên lớp mà bạn đã sử dụng trong lệnh phải tồn tại.

Câu lệnh sau là cú pháp cơ bản của lệnh Create Property.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<class-name> - Xác định lớp bạn muốn tạo thuộc tính.

<property-name> - Xác định tên logic của thuộc tính.

<property-type> - Xác định loại thuộc tính bạn muốn tạo.

<linked-type> - Xác định kiểu vùng chứa, được sử dụng trong kiểu thuộc tính vùng chứa.

<linked-class> - Định nghĩa lớp vùng chứa, được sử dụng trong kiểu thuộc tính vùng chứa.

Bảng sau cung cấp kiểu dữ liệu cho thuộc tính để OrientDB biết kiểu dữ liệu cần lưu trữ.

BOOLEAN INTEGER NGẮN DÀI
PHAO NỔI NGÀY CHUỖI ĐÃ KẾT HỢP
LIÊN KẾT BYTE BINARY GẤP ĐÔI

Ngoài những loại này, có một số loại thuộc tính khác hoạt động như các thùng chứa.

EMBEDDEDLIST EMBEDDEDSET EMBEDDEDMAP
LIÊN KẾT LIÊN KẾT LINKMAP

Thí dụ

Hãy thử ví dụ sau để tạo tên thuộc tính trên lớp Employee, thuộc loại Chuỗi.

orientdb> CREATE PROPERTY Employee.name STRING

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Property created successfully with id = 1

Alter Propertylà một lệnh được sử dụng để sửa đổi hoặc cập nhật Thuộc tính của một lớp cụ thể. Thay đổi thuộc tính có nghĩa là sửa đổi các trường của bảng. Trong chương này, bạn có thể tìm hiểu cách cập nhật thuộc tính.

Câu lệnh sau là cú pháp cơ bản của Lệnh thuộc tính Alter.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<class> - Xác định lớp mà thuộc tính thuộc về.

<property> - Xác định thuộc tính bạn muốn cập nhật.

<attribute-name> - Xác định thuộc tính của thuộc tính bạn muốn cập nhật.

<attribute-value> - Xác định giá trị bạn muốn đặt trên thuộc tính.

Bảng sau đây xác định danh sách các thuộc tính để thay đổi thuộc tính.

Thuộc tính Kiểu Sự miêu tả
LIÊN KẾT Chuỗi Xác định tên lớp được liên kết. Sử dụng NULL để loại bỏ một giá trị hiện có.
LOẠI LIÊN KẾT Chuỗi Xác định loại liên kết. Sử dụng NULL để loại bỏ một giá trị hiện có.
MIN Số nguyên Xác định giá trị nhỏ nhất như một ràng buộc. Sử dụng NULL để loại bỏ một ràng buộc hiện có.
BẮT BUỘC Boolean Xác định xem thuộc tính có yêu cầu giá trị hay không.
TỐI ĐA Số nguyên Xác định giá trị lớn nhất dưới dạng một ràng buộc. Sử dụng NULL để loại bỏ một ràng buộc hiện có.
TÊN Chuỗi Xác định tên thuộc tính.
CÓ GIÁ TRỊ Boolean Xác định xem thuộc tính có thể có giá trị NULL hay không.
REGEX Chuỗi Định nghĩa Biểu thức chính quy làm ràng buộc. Sử dụng NULL để loại bỏ một ràng buộc hiện có.
KIỂU Chuỗi Xác định một loại thuộc tính.
COLLATE Chuỗi Đặt đối chiếu với một trong các chiến lược so sánh đã xác định. Theo mặc định, nó được đặt thành phân biệt chữ hoa chữ thường (cs). Bạn cũng có thể đặt nó thành không phân biệt chữ hoa chữ thường (ci).
CHỈ ĐỌC Boolean Xác định xem giá trị thuộc tính là không thay đổi. Tức là, nếu có thể thay đổi nó sau lần gán đầu tiên. Sử dụng với DEFAULT để có các giá trị bất biến khi tạo.
TẬP QUÁN Chuỗi Xác định thuộc tính tùy chỉnh. Cú pháp cho thuộc tính tùy chỉnh là <custom-name> = <custom-value>, chẳng hạn như stereotype = icon.
MẶC ĐỊNH   Xác định giá trị hoặc chức năng mặc định.

Note - nếu bạn đang thay đổi TÊN hoặc LOẠI, lệnh này sẽ mất một khoảng thời gian để cập nhật tùy thuộc vào lượng dữ liệu.

Thí dụ

Hãy thử một số truy vấn được đưa ra bên dưới để hiểu thuộc tính Alter.

Thực hiện truy vấn sau để thay đổi tên của thuộc tính từ 'tuổi' thành 'sinh' trong lớp Khách hàng.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Property altered successfully

Thực hiện truy vấn sau để đặt 'name' làm thuộc tính bắt buộc của lớp 'Customer'.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Property altered successfully

Các Drop propertylệnh xóa thuộc tính khỏi lược đồ. Nó không xóa các giá trị thuộc tính khỏi bản ghi, nó chỉ thay đổi lược đồ.

Câu lệnh sau là cú pháp cơ bản của Drop Property Command.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<class> - Định nghĩa lớp mà thuộc tính tồn tại.

<property> - Xác định thuộc tính bạn muốn loại bỏ.

[Force] - Trong trường hợp một hoặc nhiều chỉ mục được xác định trên thuộc tính.

Thí dụ

Hãy thử lệnh sau để xóa thuộc tính 'tuổi' khỏi lớp 'Khách hàng'.

orientdb> DROP PROPERTY Customer.age

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Property dropped successfully

Cơ sở dữ liệu OrientDB không chỉ là cơ sở dữ liệu Tài liệu mà còn là cơ sở dữ liệu Đồ thị. Các khái niệm mới như Vertex và Edge được sử dụng để lưu trữ dữ liệu dưới dạng đồ thị. Nó áp dụng tính đa hình trên các đỉnh. Lớp cơ sở cho Vertex là V.

Trong chương này, bạn có thể học cách tạo đỉnh để lưu trữ dữ liệu đồ thị.

Câu lệnh sau là cú pháp cơ bản của lệnh Create Vertex.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<class> - Xác định lớp mà đỉnh thuộc về.

<cluster> - Xác định cụm mà nó lưu giữ đỉnh.

<field> - Xác định trường bạn muốn đặt.

<expression> - Xác định thể hiện để đặt cho trường.

Thí dụ

Hãy thử ví dụ sau để hiểu cách tạo đỉnh.

Thực hiện truy vấn sau để tạo một đỉnh không có 'tên' và trên lớp cơ sở V.

orientdb> CREATE VERTEX

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Thực hiện truy vấn sau để tạo một lớp đỉnh mới có tên v1, sau đó tạo đỉnh trong lớp đó.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Thực thi truy vấn sau đây để tạo một đỉnh mới của lớp có tên v1, xác định các thuộc tính của nó như brand = 'Maruti' và name = 'Swift'.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Lệnh Move Vertex trong OrientDB là để di chuyển một hoặc nhiều đỉnh từ vị trí hiện tại sang lớp hoặc cụm khác nhau. Nếu bạn đang áp dụng lệnh di chuyển trên một đỉnh cụ thể, thì nó sẽ cập nhật tất cả các cạnh được kết nối với đỉnh này. Nếu bạn đang chỉ định một cụm để di chuyển đỉnh, thì nó sẽ di chuyển các đỉnh đến chủ sở hữu máy chủ của cụm mục tiêu.

Câu lệnh sau là cú pháp cơ bản của Lệnh Move Vertex.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<source>- Xác định đỉnh bạn muốn di chuyển. Nó chấp nhận ID Bản ghi của một đỉnh cụ thể hoặc một mảng ID Bản ghi cho các đỉnh.

<destination>- Xác định nơi bạn muốn di chuyển đỉnh. Nó hỗ trợ lớp hoặc một cụm làm đích.

SET - Đặt giá trị cho các trường.

MERGE - Đặt giá trị cho các trường thông qua JSON.

BATCH - Xác định kích thước lô.

Note- Lệnh này cập nhật tất cả các cạnh được kết nối, nhưng không cập nhật liên kết. Khi sử dụng API Đồ thị, nên sử dụng cạnh được kết nối với các đỉnh.

Thí dụ

Hãy thử các ví dụ sau để biết cách di chuyển các đỉnh.

Thực hiện truy vấn sau để di chuyển một đỉnh duy nhất có ID Bản ghi # 11: 2 từ vị trí hiện tại của nó đến Nhân viên Lớp.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau:

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

Thực hiện truy vấn sau để di chuyển tập hợp các đỉnh từ lớp 'Khách hàng' sang lớp 'Nhân viên'.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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 Vertexlệnh được sử dụng để loại bỏ các đỉnh khỏi cơ sở dữ liệu. Trong khi xóa, nó kiểm tra và duy trì tính nhất quán với các cạnh và loại bỏ tất cả các tham chiếu chéo (với các cạnh) đến đỉnh đã xóa.

Câu lệnh sau là cú pháp cơ bản của lệnh Delete Vertex.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<vertex> - Xác định đỉnh mà bạn muốn loại bỏ, sử dụng Lớp, ID Bản ghi của nó, hoặc thông qua một truy vấn phụ.

WHERE - Bộ lọc điều kiện để xác định bản ghi mà lệnh loại bỏ.

LIMIT - Xác định số lượng bản ghi tối đa được xóa.

BATCH - Xác định số lượng bản ghi mà lệnh xóa tại một thời điểm, cho phép bạn chia các giao dịch lớn thành các khối nhỏ hơn để tiết kiệm sử dụng bộ nhớ.

Thí dụ

Hãy thử lệnh sau để biết cách xóa một đỉnh hoặc nhiều đỉnh.

Thực hiện lệnh sau để loại bỏ đỉnh '# 14: 1'.

orientdb> DELETE VERTEX #14:1

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Thực hiện lệnh sau để xóa tất cả các đỉnh khỏi lớp 'Khách hàng' được đánh dấu bằng thuộc tính 'isSpam'.

orientdb> DELETE VERTEX Customer WHERE isSpam = TRUE

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Trong OrientDB, khái niệm Edgehoạt động giống như một quan hệ giữa các đỉnh với sự trợ giúp của một số thuộc tính. Các cạnh và đỉnh là các thành phần chính của cơ sở dữ liệu đồ thị. Nó áp dụng tính đa hình trên các Edges. Lớp cơ sở cho một Edge là E. Trong khi triển khai các cạnh, nếu đỉnh nguồn hoặc đỉnh đích bị thiếu hoặc không tồn tại, thì giao dịch sẽ được khôi phục.

Câu lệnh sau là cú pháp cơ bản của Create Edge Command.

CREATE EDGE <class> [CLUSTER <cluster>] FROM <rid>|(<query>)|[<rid>]* TO <rid>|(<query>)|[<rid>]* 
     [SET <field> = <expression>[,]*]|CONTENT {<JSON>} 
     [RETRY <retry> [WAIT <pauseBetweenRetriesInMs]] [BATCH <batch-size>]

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<class> - Xác định tên lớp cho cạnh.

<cluster> - Xác định cụm mà bạn muốn lưu trữ cạnh.

JSON - Cung cấp nội dung JSON để thiết lập làm bản ghi.

RETRY - Xác định số lần thử lại để thử trong trường hợp có xung đột.

WAIT - Xác định thời gian trì hoãn giữa các lần thử lại tính bằng mili giây.

BATCH - Xác định xem nó có chia nhỏ lệnh thành các khối nhỏ hơn hay không và kích thước của các lô.

Thí dụ

Thực hiện truy vấn sau để tạo một cạnh E giữa hai đỉnh # 9: 0 và # 14: 0.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Thực hiện truy vấn sau để tạo một kiểu cạnh mới và một cạnh kiểu mới.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Update edgelệnh được sử dụng để cập nhật các bản ghi cạnh trong cơ sở dữ liệu hiện tại. Điều này tương đương với lệnh cập nhật thực tế ngoài việc kiểm tra và duy trì tính nhất quán của đồ thị với các đỉnh, trong trường hợp bạn cập nhậtoutin tính chất.

Câu lệnh sau là cú pháp cơ bản của Update Edge Command.

UPDATE EDGE <edge>  
   [SET|INCREMENT|ADD|REMOVE|PUT <field-name> = <field-value> [,]*]|[CONTENT|MERGE <JSON>] 
   [RETURN <returning> [<returning-expression>]] 
   [WHERE <conditions>] 
   [LOCK default|record] 
   [LIMIT <max-records>] [TIMEOUT <timeout>]

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<edge>- Xác định cạnh mà bạn muốn cập nhật. Bạn có thể chọn giữaClass cập nhật các cạnh theo lớp, Cluster cập nhật các cạnh theo cụm, sử dụng tiền tố CLUSTER hoặc Record ID cập nhật các cạnh bằng ID bản ghi.

SET - Cập nhật trường thành các giá trị đã cho.

INCREMENT - Tăng giá trị của trường đã cho.

ADD - Xác định một mục để thêm vào tập hợp các trường.

REMOVE - Xác định một mục để xóa khỏi tập hợp các trường.

PUT - Xác định một mục nhập để đưa vào các trường bản đồ.

RETURN - Xác định biểu thức bạn muốn trả về sau khi chạy cập nhật.

WHERE - Xác định điều kiện lọc.

LOCK - Xác định cách bản ghi khóa giữa tải và cập nhật.

LIMIT - Xác định số lượng bản ghi tối đa.

Thí dụ

Chúng ta hãy xem xét một ví dụ về việc cập nhật cạnh có tên 'địa chỉ' trong lớp người bằng cách lấy dữ liệu từ bảng địa chỉ có vùng Id = 001 và tên người = Krishna.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Delete edgeđược sử dụng để loại bỏ cơ sở dữ liệu. Điều này tương đương với lệnh xóa, với việc bổ sung kiểm tra và duy trì tính nhất quán với các đỉnh bằng cách loại bỏ tất cả các tham chiếu chéo tới cạnh từ cả thuộc tính đỉnh 'vào' và 'ra'.

Câu lệnh sau là cú pháp cơ bản của lệnh Delete Edge.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

FROM - Xác định đỉnh điểm bắt đầu của cạnh cần xóa.

To - Xác định đỉnh điểm kết thúc của cạnh cần xóa.

WHERE - Xác định các điều kiện lọc.

LIMIT - Xác định số cạnh tối đa để xóa.

BATCH - Xác định kích thước khối cho hoạt động.

Thí dụ

Hãy thử các ví dụ sau để tìm hiểu cách xóa các cạnh.

Thực hiện truy vấn sau để xóa cạnh giữa hai đỉnh (# 11: 2, # 11: 10). Nhưng có thể có một cơ hội tồn tại một hoặc nhiều cạnh giữa hai đỉnh. Vì vậy, chúng tôi đang sử dụng thuộc tính ngày cho chức năng thích hợp. Truy vấn này sẽ xóa các cạnh được tạo trên '2015-01-15' và sau đó.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Thực hiện truy vấn sau để xóa các cạnh bắt đầu từ đỉnh '# 11: 5' đến đỉnh '# 11: 10' và có liên quan đến 'class = Customer'.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Chương này giải thích sự tham khảo đầy đủ về các loại chức năng khác nhau trong OrientDB. Bảng sau đây xác định danh sách các chức năng, được phân loại theo chức năng của chúng.

Hàm đồ thị

Sr.No. Tên & Mô tả chức năng
1

Out():

Nhận các đỉnh đi liền kề bắt đầu từ bản ghi hiện tại là Vertex.

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

2

In():

Nhận các đỉnh đến liền kề bắt đầu từ bản ghi hiện tại là Vertex.

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

3

Both():

Nhận các đỉnh đi và đến liền kề bắt đầu từ bản ghi hiện tại là Vertex.

Syntax - cả hai ([<label1>] [, <label-n>] *)

4

outE():

Nhận các cạnh đi liền kề bắt đầu từ bản ghi hiện tại là Vertex.

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

5

inE():

Nhận các cạnh đến liền kề bắt đầu từ bản ghi hiện tại là Vertex.

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

6

bothE():

Nhận các cạnh đi và đến liền kề bắt đầu từ bản ghi hiện tại là Vertex.

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

7

outV():

Nhận các đỉnh đi ra bắt đầu từ bản ghi hiện tại là Edge.

Syntax - outV ()

số 8

inV():

Lấy các đỉnh đến từ bản ghi hiện tại làm Edge.

Syntax - inV ()

9

traversedElement():

Trả về (các) phần tử được duyệt trong các lệnh Traverse.

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

10

traversedVertex():

Trả lại (các) đỉnh đã duyệt trong các lệnh Traverse.

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

11

traversedEdge():

Trả về (các) cạnh được duyệt trong các lệnh Traverse.

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

12

shortestPath():

Trả về đường đi ngắn nhất giữa hai đỉnh. Hướng có thể là OUT (mặc định), IN hoặc BOTH.

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

13

dijkstra():

Trả về đường đi rẻ nhất giữa hai đỉnh bằng cách sử dụng thuật toán Dijkstra.

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

Hãy thử một số hàm đồ thị cùng với các truy vấn sau.

Thực hiện truy vấn sau để lấy tất cả các đỉnh đi từ tất cả các đỉnh của xe.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Thực hiện truy vấn sau để lấy cả đỉnh đến và đỉnh đi từ đỉnh # 11: 3.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Các hàm toán học

Sr.No. Tên & Mô tả chức năng
1

eval():

Đánh giá biểu thức giữa các dấu ngoặc kép (hoặc dấu ngoặc kép).

Syntax - eval ('<biểu thức>')

2

min():

Trả về giá trị nhỏ nhất. Nếu được gọi với nhiều hơn một tham số, thì nó sẽ trả về giá trị đối số tối thiểu giữa tất cả các đối số.

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

3

max():

Trả về giá trị lớn nhất. Nếu được gọi với nhiều hơn một tham số, thì trả về giá trị lớn nhất giữa tất cả các đối số.

Syntax - max (<trường> [, <trường-n>] *)

4

sum()

Trả về tổng của tất cả các giá trị được trả về.

Syntax - sum (<trường>)

5

abs():

Trả về giá trị tuyệt đối. Nó hoạt động với Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null.

Syntax - abs (<trường>)

6

avg():

Trả về giá trị trung bình.

Syntax - avg (<trường>)

7

count():

Đếm bản ghi phù hợp với điều kiện truy vấn. Nếu * không được sử dụng làm trường, thì bản ghi sẽ chỉ được tính nếu nội dung không rỗng.

Syntax - count (<trường>)

số 8

mode():

Trả về giá trị xuất hiện với tần suất lớn nhất. Các giá trị rỗng được bỏ qua trong phép tính.

Syntax - mode (<trường>)

9

median():

Trả về giá trị giữa hoặc giá trị nội suy đại diện cho giá trị giữa sau khi các giá trị được sắp xếp. Các giá trị rỗng được bỏ qua trong phép tính.

Syntax - trung vị (<trường>)

10

percentile():

Trả về phân vị thứ n. Null được bỏ qua trong tính toán.

Syntax - phân vị (<trường> [, <quantile-n>] *)

11

variance()

Trả về phương sai giữa: Giá trị trung bình của chênh lệch bình phương so với giá trị trung bình.

Syntax - phương sai (<trường>)

12

stddev()

Trả về độ lệch chuẩn: Thước đo mức độ dàn trải của các giá trị. Các giá trị rỗng được bỏ qua trong phép tính.

Syntax - stddev (<trường>)

Hãy thử một số hàm toán học bằng cách sử dụng các truy vấn sau.

Thực hiện truy vấn sau để lấy tổng tiền lương của tất cả nhân viên.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Thực hiện truy vấn sau để lấy mức lương trung bình của tất cả nhân viên.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Chức năng Bộ sưu tập

Sr.No. Tên & Mô tả chức năng
1

set():

Thêm một giá trị vào một tập hợp. Nếu giá trị là một tập hợp, thì nó được hợp nhất với tập hợp, nếu không thì <giá trị> sẽ được thêm vào.

Syntax - set (<trường>)

2

map():

Thêm một giá trị vào bản đồ lần đầu tiên bản đồ được tạo. Nếu <giá trị> là một bản đồ, thì nó được hợp nhất với bản đồ, nếu không cặp <khóa> và <giá trị> được thêm vào bản đồ dưới dạng mục nhập mới.

Syntax - bản đồ (<khóa>, <giá trị>)

3

ist():

Thêm giá trị vào danh sách lần đầu tiên danh sách được tạo. Nếu <giá trị> là một tập hợp, thì nó được hợp nhất với danh sách, nếu không thì <giá trị> sẽ được thêm vào danh sách.

Syntax - danh sách (<trường>)

4

difference():

Hoạt động dưới dạng tổng hợp hoặc nội tuyến. Nếu chỉ một đối số được truyền thì tổng hợp, ngược lại sẽ thực thi và trả về SỰ KHÁC BIỆT giữa các tập hợp nhận được dưới dạng tham số.

Syntax - khác biệt (<trường> [, <trường-n>] *)

5

first():

Chỉ truy xuất mục đầu tiên của các trường đa giá trị (mảng, tập hợp và bản đồ). Đối với các loại không có nhiều giá trị, chỉ cần trả về giá trị.

Syntax - đầu tiên (<trường>)

6

intersect():

Hoạt động dưới dạng tổng hợp hoặc nội tuyến. Nếu chỉ một đối số được truyền thì tổng hợp, ngược lại sẽ thực thi và trả về, TƯƠNG TÁC của các tập hợp nhận được dưới dạng tham số.

Syntax - giao nhau (<trường> [, <trường-n>] *)

7

distinct():

Chỉ truy xuất các mục dữ liệu duy nhất tùy thuộc vào trường bạn đã chỉ định làm đối số. Sự khác biệt chính so với SQL DISTINCT tiêu chuẩn là với OrientDB, một hàm có dấu ngoặc đơn và chỉ một trường có thể được chỉ định.

Syntax - khác biệt (<trường>)

số 8

expand():

Hàm này có hai nghĩa−

  • Khi được sử dụng trên một trường bộ sưu tập, nó sẽ giải nén bộ sưu tập trong trường đó và sử dụng nó.

  • Khi được sử dụng trên trường liên kết (RID), nó sẽ mở rộng tài liệu được trỏ bởi liên kết đó.

Syntax - mở rộng (<trường>)

9

unionall():

Hoạt động dưới dạng tổng hợp hoặc nội tuyến. Nếu chỉ một đối số được truyền thì sẽ tổng hợp, nếu không sẽ thực thi và trả về một UNION của tất cả các tập hợp nhận được dưới dạng tham số. Cũng hoạt động với không có giá trị bộ sưu tập.

Syntax - unionall (<trường> [, <trường-n>] *)

10

flatten():

Trích xuất bộ sưu tập trong trường và sử dụng nó. Nó không được dùng nữa, hãy sử dụng expand () để thay thế.

Syntax - làm phẳng (<trường>)

11

last():

Chỉ truy xuất mục cuối cùng của các trường đa giá trị (mảng, bộ sưu tập và bản đồ). Đối với các loại không có nhiều giá trị, chỉ cần trả về giá trị.

Syntax - cuối cùng (<trường>)

12

symmetricDifference():

Hoạt động dưới dạng tổng hợp hoặc nội tuyến. Nếu chỉ một đối số được truyền thì tổng hợp, nếu không sẽ thực thi và trả về, SỰ KHÁC BIỆT ĐỒNG BỘ giữa các tập hợp nhận được dưới dạng tham số.

Syntax --MetricDifference (<trường> [, <trường-n>] *)

Hãy thử một số hàm thu thập bằng các truy vấn sau.

Thực hiện câu truy vấn sau để lấy bộ giáo viên, dạy lớp 9.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Các chức năng khác

Sr.No. Tên & Mô tả chức năng
1

date():

Trả về định dạng ngày tháng cho một chuỗi. <date-as-string> là ngày ở định dạng chuỗi và <format> là định dạng ngày tuân theo các quy tắc này.

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

2

sysdate():

Trả về ngày và giờ hiện tại.

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

3

format():

Định dạng một giá trị bằng cách sử dụng quy ước String.format ().

Syntax - định dạng (<định dạng> [, <arg1>] (, <arg-n>] *. Md)

4

distance():

Trả về khoảng cách giữa hai điểm trên hình ảnh địa cầu bằng thuật toán Haversine. Tọa độ phải là độ.

Syntax - khoảng cách (<x-field>, <y-field>, <x-value>, <y-value>)

5

ifnull():

Trả về trường / giá trị đã truyền (hoặc tham số tùy chọn return_value_if_not_null). Nếu trường / giá trị không phải là null, nó trả về giá trị return_value_if_null.

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

6

coalesce():

Trả về trường / giá trị đầu tiên không phải tham số null. Nếu không có trường / giá trị nào không phải là null, trả về null.

Syntax - Coalesce (<field | value> [, <field-n | value-n>] *)

7

uuid():

Tạo UUID dưới dạng giá trị 128 bit bằng cách sử dụng biến thể Leach-Salz.

Syntax - uuid ()

số 8

if():

Đánh giá một điều kiện (tham số đầu tiên) và trả về tham số thứ hai nếu điều kiện là đúng, tham số thứ ba nếu không.

Syntax - if (<biểu thức>, <result-if-true>, <result-if-false>)

Hãy thử một số hàm khác bằng các truy vấn sau.

Thực thi truy vấn sau để tìm hiểu cách thực thi biểu thức if.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Thực hiện truy vấn sau để lấy ngày hệ thống.

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

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

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

Bằng cách sử dụng triệt để chức năng này, bạn có thể dễ dàng thao tác với dữ liệu OrientDB.

Sequenceslà một khái niệm được sử dụng trong cơ chế tăng tự động và nó được giới thiệu trong OrientDB v2.2. Trong thuật ngữ cơ sở dữ liệu, trình tự là một cấu trúc quản lý trường bộ đếm. Nói một cách đơn giản, dãy số chủ yếu được sử dụng khi bạn cần một số luôn tăng. Nó hỗ trợ hai loại

ORDERED - Mỗi lần con trỏ gọi phương thức .next trả về một giá trị mới.

CACHED- Chuỗi sẽ lưu vào bộ nhớ cache các mục 'N' trên mỗi nút. Để gọi từng món chúng tôi sử dụng.next(), được ưu tiên khi bộ nhớ đệm chứa nhiều hơn một mục.

Tạo trình tự

Chuỗi thường được sử dụng để tự động tăng giá trị id của một người. Giống như các khái niệm SQL khác của OrientDB, nó cũng tạo sẵn các hoạt động tương tự như Trình tự trong RDBMS.

Câu lệnh sau đây là cú pháp cơ bản để tạo chuỗi.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<Sequence> - Tên địa phương cho trình tự.

TYPE - Xác định kiểu trình tự ORDERED hoặc CACHED.

START - Xác định giá trị ban đầu.

INCREMENT - Xác định gia số cho mỗi cuộc gọi phương thức .next.

CACHE - Xác định số lượng giá trị để lưu vào bộ nhớ cache trước, trong trường hợp bạn đã sử dụng loại trình tự bộ nhớ cache.

Hãy để chúng tôi tạo một chuỗi có tên 'seqid' bắt đầu bằng số 1201. Hãy thử các truy vấn sau để triển khai ví dụ này với chuỗi.

CREATE SEQUENCE seqid START 1201

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Sequence created successfully

Hãy thử truy vấn sau để sử dụng trình tự 'seqid' để chèn giá trị id của bảng Tài khoản.

INSERT INTO Account SET id = sequence('seqid').next()

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Insert 1 record(s) in 0.001000 sec(s)

Trình tự thay thế

Trình tự thay thế là lệnh dùng để thay đổi các thuộc tính của trình tự. Nó sẽ sửa đổi tất cả các tùy chọn trình tự ngoại trừ loại trình tự.

Câu lệnh sau là cú pháp cơ bản để thay đổi trình tự.

ALTER SEQUENCE <sequence> [START <start-point>] 
[INCREMENT <increment>] [CACHE <cache>]

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<Sequence> - Xác định trình tự bạn muốn thay đổi.

START - Xác định giá trị ban đầu.

INCREMENT - Xác định gia số cho mỗi cuộc gọi phương thức .next.

CACHE - Xác định số lượng giá trị để lưu vào bộ nhớ cache trước trong trường hợp bạn đã sử dụng loại trình tự bộ nhớ cache.

Hãy thử truy vấn sau để thay đổi giá trị bắt đầu từ '1201 thành 1000' của một chuỗi có tên seqid.

ALTER SEQUENCE seqid START 1000

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Altered sequence successfully

Thả trình tự

Lệnh thả là một lệnh được sử dụng để thả một chuỗi.

Câu lệnh sau đây là cú pháp cơ bản để bỏ một chuỗi.

DROP SEQUENCE <sequence>

Ở đâu <Sequence> xác định trình tự bạn muốn giảm.

Hãy thử truy vấn sau để thả một chuỗi có tên 'seqid'.

DROP SEQUENCE seqid

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Sequence dropped successfully

Index là một con trỏ trỏ đến một vị trí của dữ liệu trong cơ sở dữ liệu. Indexinglà một khái niệm được sử dụng để nhanh chóng xác định vị trí dữ liệu mà không cần phải tìm kiếm mọi bản ghi trong cơ sở dữ liệu. OrientDB hỗ trợ bốn thuật toán chỉ mục và một số loại trong mỗi thuật toán.

Bốn loại chỉ mục là -

Chỉ số SB-Tree

Nó cung cấp một kết hợp tốt các tính năng có sẵn từ các loại chỉ mục khác. Tốt hơn nên sử dụng điều này cho tiện ích chung. Nó bền, có thể giao dịch và hỗ trợ các truy vấn phạm vi. Đây là loại chỉ mục mặc định. Các loại plugin khác nhau hỗ trợ thuật toán này là:

  • UNIQUE- Các chỉ mục này không cho phép các khóa trùng lặp. Đối với các chỉ mục tổng hợp, điều này đề cập đến tính duy nhất của các khóa tổng hợp.

  • NOTUNIQUE - Các chỉ mục này cho phép các khóa trùng lặp.

  • FULLTEXT- Các chỉ mục này dựa trên bất kỳ từ nào của văn bản. Bạn có thể sử dụng chúng trong các truy vấn thông quaCONTAINSTEXT nhà điều hành.

  • DICTIONARY - Các chỉ mục này tương tự như các chỉ mục sử dụng UNIQUE, nhưng trong trường hợp các khóa trùng lặp, chúng thay thế bản ghi hiện có bằng bản ghi mới.

Chỉ số băm

Nó hoạt động nhanh hơn và sử dụng đĩa rất nhẹ. Nó bền, mang tính giao dịch, nhưng không hỗ trợ các truy vấn phạm vi. Nó hoạt động giống như HASHMAP, giúp tra cứu đúng giờ nhanh hơn và tiêu tốn ít tài nguyên hơn các loại chỉ mục khác. Các loại plugin khác nhau hỗ trợ thuật toán này là:

  • UNIQUE_HASH_INDEX- Các chỉ mục này không cho phép các khóa trùng lặp. Đối với các chỉ mục tổng hợp, điều này đề cập đến tính duy nhất của các khóa tổng hợp.

  • NOTUNIQUE_HASH_INDEX - Các chỉ mục này cho phép các khóa trùng lặp.

  • FULLTEXT_HASH_INDEX- Các chỉ mục này dựa trên bất kỳ từ nào của văn bản. Bạn có thể sử dụng chúng trong các truy vấn thông qua toán tử CONTAINSTEXT.

  • DICTIONARY_HASH_INDEX - Các chỉ mục này tương tự như các chỉ mục sử dụng UNIQUE_HASH_INDEX, nhưng trong trường hợp các khóa trùng lặp, chúng sẽ thay thế bản ghi hiện có bằng bản ghi mới.

Chỉ mục văn bản đầy đủ của Lucene

Nó cung cấp các chỉ mục toàn văn tốt, nhưng không thể được sử dụng để lập chỉ mục các loại khác. Nó bền, có tính giao dịch và hỗ trợ các truy vấn phạm vi.

Chỉ số không gian Lucene

Nó cung cấp các chỉ mục không gian tốt, nhưng không thể được sử dụng để lập chỉ mục các loại khác. Nó bền, có tính giao dịch và hỗ trợ các truy vấn phạm vi.

Tạo chỉ mục

Tạo chỉ mục là lệnh tạo chỉ mục trên một lược đồ cụ thể.

Câu lệnh sau đây là cú pháp cơ bản để tạo một chỉ mục.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<name>- Xác định tên logic cho chỉ mục. Bạn cũng có thể sử dụng ký hiệu <class.property> để tạo chỉ mục tự động liên kết với một thuộc tính lược đồ. <class> sử dụng lớp của lược đồ và <property> sử dụng thuộc tính được tạo trong lớp.

<class-name>- Cung cấp tên của lớp mà bạn đang tạo chỉ mục tự động để lập chỉ mục. Lớp này phải tồn tại trong cơ sở dữ liệu.

<prop-names>- Cung cấp danh sách các thuộc tính mà bạn muốn chỉ mục tự động lập chỉ mục. Các thuộc tính này phải đã tồn tại trong lược đồ.

<type> - Cung cấp thuật toán và loại chỉ mục mà bạn muốn tạo.

<key-type> - Cung cấp loại khóa tùy chọn với các chỉ mục tự động.

<metadata> - Cung cấp đại diện JSON.

Thí dụ

Hãy thử truy vấn sau để tạo chỉ mục tự động liên kết với thuộc tính 'ID' của người dùng sales_user.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Creating index... 
Index created successfully with 4 entries in 0.021000 sec(s)

Chỉ mục truy vấn

Bạn có thể sử dụng truy vấn chọn để lấy các bản ghi trong chỉ mục.

Hãy thử truy vấn sau để truy xuất các khóa của chỉ mục có tên 'indexforId'.

SELECT FROM INDEX:indexforId

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

----+------+----+----- 
#   |@CLASS|key |rid   
----+------+----+----- 
0   |null  |1   |#11:7 
1   |null  |2   |#11:6 
2   |null  |3   |#11:5 
3   |null  |4   |#11:8 
----+------+----+-----

Thả chỉ mục

Nếu bạn muốn giảm một chỉ mục cụ thể, bạn có thể sử dụng lệnh này. Thao tác này không xóa các bản ghi được liên kết.

Câu lệnh sau đây là cú pháp cơ bản để bỏ một chỉ mục.

DROP INDEX <name>

Ở đâu <name> cung cấp tên của chỉ mục bạn muốn giảm xuống.

Hãy thử truy vấn sau để thả một chỉ mục có tên là 'ID' của người dùng sales_user.

DROP INDEX sales_users.Id

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Index dropped successfully

Giống như RDBMS, OrientDB hỗ trợ các thuộc tính ACID giao dịch. Atransactionbao gồm một đơn vị công việc được thực hiện trong một hệ quản trị cơ sở dữ liệu. Có hai lý do chính để duy trì các giao dịch trong môi trường cơ sở dữ liệu.

  • Để cho phép khôi phục đồng thời từ các lỗi và giữ cho cơ sở dữ liệu nhất quán ngay cả trong trường hợp hệ thống bị lỗi.

  • Để cung cấp sự cô lập giữa các chương trình truy cập đồng thời vào cơ sở dữ liệu.

Theo mặc định, giao dịch cơ sở dữ liệu phải tuân theo các thuộc tính ACID như thuộc tính Nguyên tử, Nhất quán, Cô lập và Bền. Nhưng OrientDB là một cơ sở dữ liệu tuân thủ ACID, có nghĩa là nó không mâu thuẫn hoặc phủ định khái niệm ACID, nhưng nó thay đổi nhận thức trong khi xử lý cơ sở dữ liệu NoSQL. Hãy xem cách các thuộc tính ACID hoạt động cùng với cơ sở dữ liệu NoSQL.

Atomic - Khi bạn làm điều gì đó để thay đổi cơ sở dữ liệu, thay đổi sẽ hoạt động hoặc thất bại nói chung.

Consistent - Cơ sở dữ liệu phải nhất quán.

Isolated - Nếu các thực thi giao dịch khác đang thực hiện cùng một lúc, thì người dùng sẽ không thể xem các bản ghi đang thực hiện đồng thời.

Durable - Nếu hệ thống gặp sự cố (phần cứng hoặc phần mềm), bản thân cơ sở dữ liệu sẽ có thể sao lưu.

Giao dịch cơ sở dữ liệu có thể đạt được bằng cách sử dụng các lệnh Cam kết và Khôi phục.

Cam kết

Cam kết có nghĩa là đóng giao dịch bằng cách lưu tất cả các thay đổi vào cơ sở dữ liệu. Rollback có nghĩa là khôi phục trạng thái cơ sở dữ liệu đến thời điểm bạn đã mở giao dịch.

Câu lệnh sau đây là cú pháp cơ bản của lệnh cơ sở dữ liệu COMMIT.

COMMIT

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể và sau khi bắt đầu giao dịch.

Thí dụ

Trong ví dụ này, chúng tôi sẽ sử dụng cùng một cơ sở dữ liệu có tên 'demo' mà chúng tôi đã tạo trong chương trước của hướng dẫn này. Chúng ta sẽ thấy hoạt động của giao dịch cam kết và lưu trữ bản ghi sử dụng các giao dịch.

Trước tiên, bạn cần bắt đầu giao dịch bằng lệnh BEGIN sau đây.

orientdb {db = demo}> BEGIN

Chèn bản ghi vào bảng nhân viên với các giá trị id = 12 và name = thoả mãn bằng lệnh sau.

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

Bạn có thể sử dụng lệnh sau để thực hiện giao dịch.

orientdb> commit

Nếu giao dịch này được cam kết thành công, bạn sẽ nhận được kết quả sau.

Transaction 2 has been committed in 4ms

Khôi phục

Rollback có nghĩa là khôi phục trạng thái cơ sở dữ liệu đến thời điểm bạn đã mở giao dịch.

Câu lệnh sau là cú pháp cơ bản của lệnh cơ sở dữ liệu ROLLBACK.

ROLLBACK

Note - Bạn chỉ có thể sử dụng lệnh này sau khi kết nối với một cơ sở dữ liệu cụ thể và sau khi bắt đầu giao dịch.

Thí dụ

Trong ví dụ này, chúng tôi sẽ sử dụng cùng một cơ sở dữ liệu có tên 'demo' mà chúng tôi đã tạo trong chương trước của hướng dẫn. Chúng ta sẽ thấy hoạt động của giao dịch khôi phục và lưu trữ bản ghi sử dụng các giao dịch.

Trước tiên, bạn phải bắt đầu giao dịch bằng lệnh BEGIN sau đây.

orientdb {db = demo}> BEGIN

Chèn bản ghi vào bảng nhân viên với các giá trị id = 12 và name = thoả mãn bằng lệnh sau.

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

Bạn có thể sử dụng lệnh sau để truy xuất các bản ghi của nhân viên bảng.

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

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Bạn có thể sử dụng lệnh sau để khôi phục giao dịch này.

orientdb> ROLLBACK

Kiểm tra lại truy vấn chọn để truy xuất bản ghi tương tự từ bảng Nhân viên.

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

Nếu Rollback được thực thi thành công, bạn sẽ nhận được 0 bản ghi được tìm thấy trong đầu ra.

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

OrientDB Hookskhông là gì ngoài các kích hoạt trong thuật ngữ cơ sở dữ liệu cho phép các sự kiện nội bộ trước và sau mỗi hoạt động CRUD trong các ứng dụng người dùng. Bạn có thể sử dụng hook để viết các quy tắc xác thực tùy chỉnh, để thực thi bảo mật hoặc để sắp xếp các sự kiện bên ngoài như sao chép lại với một DBMS quan hệ.

OrientDB hỗ trợ hai loại móc -

Dynamic Hook - Trình kích hoạt, có thể được xây dựng ở cấp độ lớp và / hoặc cấp độ Tài liệu.

Java (Native) Hook - Trình kích hoạt, có thể được xây dựng bằng các lớp Java.

Móc động

Các móc động linh hoạt hơn các móc Java, vì chúng có thể được thay đổi trong thời gian chạy và có thể chạy trên mỗi tài liệu nếu cần, nhưng chậm hơn các móc Java.

Để thực thi các hook đối với tài liệu của bạn, trước tiên hãy cho phép các lớp của bạn mở rộng OTriggeredlớp cơ sở. Sau đó, xác định thuộc tính tùy chỉnh cho sự kiện quan tâm. Sau đây là các sự kiện có sẵn.

  • onBeforeCreate - Đã gọi before tạo một tài liệu mới.

  • onAfterCreate - Đã gọi after tạo một tài liệu mới.

  • onBeforeRead - Đã gọi before đọc một tài liệu.

  • onAfterRead - Đã gọi after đọc một tài liệu.

  • onBeforeUpdate - Đã gọi before cập nhật tài liệu.

  • onAfterUpdate - Đã gọi after cập nhật tài liệu.

  • onBeforeDelete - Đã gọi before xóa một tài liệu.

  • onAfterDelete - Đã gọi after xóa một tài liệu.

Dynamic Hooks có thể gọi -

  • Các hàm, được viết bằng SQL, Javascript hoặc bất kỳ ngôn ngữ nào được OrientDB và JVM hỗ trợ.

  • Các phương thức tĩnh trong Java.

Móc cấp độ lớp

Các móc mức lớp được định nghĩa cho tất cả các tài liệu liên quan đến một lớp. Sau đây là một ví dụ để thiết lập một hook hoạt động ở cấp độ đối với các chứng từ Hóa đơn.

CREATE CLASS Invoice EXTENDS OTriggered 
ALTER CLASS Invoice CUSTOM onAfterCreate = invoiceCreated

Hãy tạo hàm invoiceCreated trong Javascript để in trong bảng điều khiển máy chủ số hóa đơn đã tạo.

CREATE FUNCTION invoiceCreated "print('\\nInvoice created: ' + doc.field ('number'));"
LANGUAGE Javascript

Bây giờ hãy thử hook bằng cách tạo Invoice tài liệu.

INSERT INTO Invoice CONTENT {number: 100, notes: 'This is a test}

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

Invoice created: 100

Móc cấp tài liệu

Bạn chỉ có thể xác định một hành động đặc biệt đối với một hoặc nhiều tài liệu. Để làm điều này, hãy cho phép lớp học của bạn mở rộngOTriggered lớp học.

Ví dụ: hãy để chúng tôi thực thi một trình kích hoạt, dưới dạng hàm Javascript, chống lại một lớp Hồ sơ tồn tại, cho tất cả các tài liệu có tài khoản thuộc tính = 'Premium'. Trình kích hoạt sẽ được gọi để ngăn việc xóa tài liệu.

ALTER CLASS Profile SUPERCLASS OTriggered UPDATE Profile 
SET onBeforeDelete = 'preventDeletion' WHERE account = 'Premium'

Hãy tạo preventDeletion() Hàm Javascript.

CREATE FUNCTION preventDeletion "throw new java.lang.RuntimeException('Cannot 
delete Premium profile ' + doc)" LANGUAGE Javascript

Và sau đó kiểm tra hook bằng cách xóa tài khoản 'Premium'.

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

JAVA Hooks

Một trường hợp sử dụng phổ biến cho OrientDB Hooks (trình kích hoạt) là quản lý ngày đã tạo và cập nhật cho bất kỳ hoặc tất cả các lớp. Ví dụ: bạn có thể đặtCreatedDate bất cứ khi nào bản ghi được tạo và đặt một UpdatedDate bất cứ khi nào một bản ghi được cập nhật, và thực hiện theo cách mà bạn thực hiện logic một lần ở lớp cơ sở dữ liệu và không bao giờ phải lo lắng về nó nữa ở lớp ứng dụng.

Trước khi tạo, bạn sẽ phải tải xuống orientdb-core.jarbằng cách truy cập vào liên kết sau tải về lõi OrientDB . Và sau đó sao chép tệp jar đó vào thư mục mà bạn muốn lưu tệp nguồn Java.

Tạo tệp Hook

Tạo một tệp Java có tên HookTest.java, sẽ kiểm tra cơ chế Hook bằng ngôn ngữ Java.

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.StringReader; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.concurrent.locks.ReentrantLock; 
import com.orientechnologies.orient.core.hook.ODocumentHookAbstract; 
import com.orientechnologies.orient.core.hook.ORecordHook; 
import com.orientechnologies.orient.core.hook.ORecordHookAbstract; 
import com.orientechnologies.orient.core.db.ODatabaseLifecycleListener; 
import com.orientechnologies.orient.core.db.ODatabase; 
import com.orientechnologies.orient.core.record.ORecord; 
import com.orientechnologies.orient.core.record.impl.ODocument;
  
public class HookTest extends ODocumentHookAbstract implements ORecordHook { 
   public HookTest() {
  
   }
  
   @Override 
   public DISTRIBUTED_EXECUTION_MODE getDistributedExecutionMode() { 
      return DISTRIBUTED_EXECUTION_MODE.BOTH; 
   } 
   public RESULT onRecordBeforeCreate( ODocument iDocument ) { 
      System.out.println("Ran create hook"); 
      return ORecordHook.RESULT.RECORD_NOT_CHANGED; 
   } 
   public RESULT onRecordBeforeUpdate( ODocument iDocument ) { 
      System.out.println("Ran update hook"); 
      return ORecordHook.RESULT.RECORD_NOT_CHANGED;  
   }  
}

Mã mẫu trên sẽ in nhận xét thích hợp mỗi khi bạn tạo hoặc cập nhật bản ghi của lớp đó.

Hãy thêm một tệp hook nữa setCreatedUpdatedDates.java như sau -

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

Những gì đoạn mã trên làm là tìm kiếm bất kỳ lớp nào bắt đầu bằng các chữ cái 'r' hoặc là 't'và đặt Ngày tạo và Ngày cập nhật khi bản ghi được tạo và chỉ đặt Ngày cập nhật mỗi khi bản ghi được cập nhật.

Biên dịch Java Hooks

Biên dịch mã Java bằng cách sử dụng lệnh sau. Note: Giữ tệp jar đã tải xuống và các tệp Java này vào cùng một thư mục.

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

Di chuyển mã đã biên dịch đến nơi máy chủ OrientDB có thể tìm thấy nó

Bạn cần sao chép tệp .jar đã hoàn thành vào thư mục nơi máy chủ OrientDB của bạn sẽ tìm kiếm chúng. Điều này có nghĩa là './libthư mục 'trong thư mục gốc Máy chủ OrientDB của bạn sẽ trông như thế này -

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

Bật Móc kiểm tra trong Tệp Cấu hình Máy chủ OrientDB

Biên tập $ORIENTDB_HOME/config/orientdb-server-config.xml và thêm phần sau vào gần cuối tệp.

<hooks> 
      <hook class = "HookTest" position = "REGULAR"/> 
   </hooks> 
   ... 
</orient-server>

Khởi động lại máy chủ OrientDB

Khi bạn khởi động lại Máy chủ OrientDB, móc nối bạn đã xác định trong orientdb-server-config.xmlhiện đang hoạt động. Khởi chạy bảng điều khiển OrientDB, kết nối nó với cơ sở dữ liệu của bạn và chạy lệnh sau:

INSERT INTO V SET ID = 1;

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

Ran create hook

Bây giờ hãy chạy lệnh sau:

UPDATE V SET ID = 2 WHERE ID = 1;

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

Ran update hook

Kích hoạt Real Hook trong tệp cấu hình máy chủ OrientDB

Biên tập $ORIENTDB_HOME/config/orientdb-server-config.xml và thay đổi phần hook như sau:

<hooks> 
      <hook class="setCreatedUpdatedDates" position="REGULAR"/> 
   </hooks> 
   ... 
</orient-server>

Khởi động lại máy chủ OrientDB

Tạo một lớp mới bắt đầu bằng chữ cái 'r' hoặc là 't'-

CREATE CLASS tTest EXTENDS V;

Bây giờ hãy chèn một bản ghi -

INSERT INTO tTest SET ID = 1 
SELECT FROM tTest

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Mặc dù bạn không chỉ định các giá trị để đặt CreatedDateUpdatedDate, OrientDB đã đặt các trường này tự động cho bạn.

Tiếp theo, bạn cần cập nhật bản ghi bằng lệnh sau:

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

Nếu lệnh này được thực hiện thành công, bạn sẽ nhận được kết quả sau.

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

Bạn có thể thấy rằng OrientDB đã thay đổi UpdatedDate nhưng đã để CreatedDate vẫn không thay đổi.

OrientDB Java Hooks có thể là một công cụ cực kỳ có giá trị để giúp tự động hóa công việc mà bạn sẽ phải làm trong mã ứng dụng. Vì nhiều DBA không phải lúc nào cũng là chuyên gia Java, hy vọng thông tin có trong hướng dẫn này sẽ giúp bạn có một khởi đầu thuận lợi và khiến bạn cảm thấy thoải mái với công nghệ, cho phép bạn tạo thành công các trình kích hoạt cơ sở dữ liệu khi có nhu cầu.

Cachinglà một khái niệm sẽ tạo ra một bản sao của cấu trúc bảng cơ sở dữ liệu cung cấp một môi trường thoải mái cho các ứng dụng người dùng. OrientDB có một số cơ chế bộ nhớ đệm ở các cấp độ khác nhau.

Hình minh họa sau đây cho ta một ý tưởng về bộ nhớ đệm là gì.

Trong hình minh họa trên DB1, DB2, DB3 là ba trường hợp cơ sở dữ liệu khác nhau được sử dụng trong một ứng dụng.

Level-1 bộ nhớ cache là một Local cachenơi lưu trữ tất cả các thực thể được biết đến bởi một phiên cụ thể. Nếu bạn có ba giao dịch trong phiên này, nó sẽ giữ tất cả các thực thể được sử dụng bởi cả ba giao dịch. Bộ nhớ cache này sẽ bị xóa khi bạn đóng phiên hoặc khi bạn thực hiện phương pháp "xóa". Nó làm giảm gánh nặng của các hoạt động I / O giữa ứng dụng và cơ sở dữ liệu và do đó tăng hiệu suất.

Level-2 bộ nhớ cache là một Real cachehoạt động bằng cách sử dụng nhà cung cấp bên thứ ba. Bạn có thể có toàn quyền kiểm soát nội dung của bộ nhớ đệm, tức là bạn sẽ có thể chỉ định mục nhập nào nên được xóa, mục nhập nào nên được lưu trữ lâu hơn, v.v. Nó là một bộ nhớ cache được chia sẻ đầy đủ giữa nhiều luồng.

Storage model không là gì ngoài thiết bị lưu trữ là đĩa, bộ nhớ hoặc máy chủ từ xa.

Cache hoạt động như thế nào trong OrientDB?

Bộ nhớ đệm của OrientDB cung cấp các phương pháp khác nhau trong các môi trường khác nhau. Bộ nhớ đệm chủ yếu được sử dụng cho các giao dịch cơ sở dữ liệu nhanh hơn, giảm thời gian xử lý giao dịch và tăng hiệu suất. Các sơ đồ dòng sau đây cho thấy cách bộ nhớ đệm hoạt động ở chế độ cục bộ và chế độ máy khách-máy chủ.

Chế độ cục bộ (Cơ sở dữ liệu nhúng)

Sơ đồ dòng sau cho bạn biết cách bản ghi nằm giữa bộ nhớ và ứng dụng được sử dụng ở chế độ cục bộ, tức là khi máy chủ cơ sở dữ liệu của bạn nằm trong máy chủ cục bộ của bạn.

Khi ứng dụng khách yêu cầu một bản ghi, OrientDB sẽ kiểm tra những điều sau:

  • Nếu một giao dịch đã bắt đầu, thì nó sẽ tìm kiếm bên trong giao dịch các bản ghi đã thay đổi và trả về nếu được tìm thấy.

  • Nếu bộ đệm ẩn cục bộ được bật và chứa bản ghi được yêu cầu, thì hãy trả về nó.

  • Nếu tại thời điểm này, bản ghi không có trong bộ nhớ cache, hãy yêu cầu bản ghi đó vào Bộ nhớ (đĩa, bộ nhớ).

Chế độ Máy chủ Khách hàng (Cơ sở dữ liệu Từ xa)

Sơ đồ luồng sau đây cho bạn biết cách bản ghi ở giữa bộ nhớ và ứng dụng được sử dụng ở chế độ máy khách-máy chủ, tức là khi máy chủ cơ sở dữ liệu của bạn ở vị trí từ xa.

Khi ứng dụng khách yêu cầu ghi lại, OrientDB sẽ kiểm tra những điều sau:

  • Nếu một giao dịch đã bắt đầu, thì nó sẽ tìm kiếm bên trong giao dịch các bản ghi đã thay đổi và trả về nếu được tìm thấy.

  • Nếu bộ đệm ẩn cục bộ được bật và chứa bản ghi được yêu cầu, thì hãy trả về nó.

  • Tại thời điểm này, nếu bản ghi không có trong bộ nhớ cache, thì hãy yêu cầu nó đến Máy chủ thông qua lệnh gọi TCP / IP.

  • Trong máy chủ, nếu bộ đệm ẩn cục bộ được bật và chứa bản ghi được yêu cầu, thì hãy trả về nó.

  • Tại thời điểm này, bản ghi vẫn chưa được lưu trong bộ nhớ cache trong máy chủ, sau đó yêu cầu nó vào Bộ nhớ (đĩa, bộ nhớ).

OrientDB sử dụng khung ghi nhật ký Java đi kèm với Máy ảo Java. Định dạng nhật ký mặc định của OrientDB được quản lý bởiOLogFormatter lớp học.

Câu lệnh sau là cú pháp cơ bản của lệnh ghi nhật ký.

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

Sau đây là chi tiết về các tùy chọn trong cú pháp trên.

<date> - Đó là ngày ghi theo định dạng sau: yyyy-MM-dd HH: mm: ss: SSS.

<level> - Đây là mức ghi nhật ký dưới dạng đầu ra 5 ký tự.

<message> - Nó là văn bản của nhật ký, nó có thể có kích thước bất kỳ.

[<class>] - Đây là lớp Java được ghi (tùy chọn).

Các cấp được hỗ trợ là những cấp có trong lớp JRE java.util.logging.Level. Họ là -

  • SEVERE (giá trị cao nhất)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST (giá trị thấp nhất)

Theo mặc định, hai trình ghi nhật ký được cài đặt -

  • Console, là đầu ra của dấu nhắc lệnh / trình bao khởi động ứng dụng / máy chủ. Có thể thay đổi bằng cách đặt biến 'log.console.level'.

  • File, như là đầu ra cho các tệp nhật ký. Có thể thay đổi bằng cách đặt 'log.file.level'.

Định cấu hình ghi nhật ký

Các chiến lược và chính sách ghi nhật ký có thể được định cấu hình bằng cách sử dụng một tệp sau Java.

syntax - Cấu hình ghi nhật ký Java.

Thí dụ

Sao chép nội dung sau từ orientdb-server-log.properties tập tin và đặt nó vào $ORIENTDB_HOME/config tập tin.

# 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

Để cho JVM biết vị trí đặt tệp thuộc tính, bạn cần đặt "java.util.logging.config.file"thuộc tính hệ thống của nó. Ví dụ: sử dụng lệnh sau:

$ java -Djava.util.logging.config.file=mylog.properties ...

Đặt mức ghi nhật ký

Để thay đổi cấp độ ghi nhật ký mà không sửa đổi cấu hình ghi nhật ký, chỉ cần đặt "log.console.level"và"log.file.level"các biến hệ thống ở các mức được yêu cầu.

Ghi nhật ký khi khởi động

Sau đây là các quy trình để thiết lập ghi nhật ký ở cấp độ khởi động theo các cách khác nhau.

Trong cấu hình máy chủ

Mở tập tin orientdb-server-config.xml và thêm hoặc cập nhật những dòng này ở cuối tệp bên trong phần <properties> -

<entry value = "fine" name = "log.console.level" /> 
<entry value = "fine" name = "log.file.level" />

Trong Tập lệnh Server.sh (hoặc .bat)

Đặt thuộc tính hệ thống "log.console.level"và"log.file.level"đến mức bạn muốn bằng cách sử dụng tham số -D của java.

$ java -Dlog.console.level = FINE ...

Ghi nhật ký vào thời gian chạy

Sau đây là các quy trình để thiết lập ghi nhật ký ở cấp độ khởi động theo các cách khác nhau.

Bằng cách sử dụng mã Java

Biến hệ thống có thể được đặt khi khởi động bằng API System.setProperty (). Đoạn mã sau là cú pháp để đặt cấp độ ghi nhật ký bằng mã Java.

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

Trên máy chủ từ xa

Thực thi một HTTP POST dựa trên URL: /server/log.<type>/ <level>, trong đó -

  • <type> có thể là "bảng điều khiển" hoặc "tệp"
  • <level> là một trong những mức được hỗ trợ

Thí dụ

Ví dụ sau sử dụng cURLđể thực hiện lệnh HTTP POST đối với Máy chủ OrientDB. Người dùng và mật khẩu "gốc" của máy chủ đã được sử dụng, hãy thay thế bằng mật khẩu của riêng bạn.

Bật mức theo dõi tốt nhất cho bảng điều khiển -

curl -u root:root -X POST http://localhost:2480/server/log.console/FINEST

Kích hoạt cấp độ theo dõi tốt nhất cho tệp -

curl -u root:root -X POST http://localhost:2480/server/log.file/FINEST

Trong chương này, bạn có thể nhận được một số mẹo chung về cách tối ưu hóa ứng dụng sử dụng OrientDB của mình. Có ba cách để tăng hiệu suất cho các loại cơ sở dữ liệu khác nhau.

  • Document Database Performance Tuning - Nó sử dụng một kỹ thuật giúp tránh tạo tài liệu cho mọi tài liệu mới.

  • Object Database Performance Tuning - Nó sử dụng các kỹ thuật chung để cải thiện hiệu suất.

  • Distributed Configuration Tuning - Nó sử dụng các phương pháp luận khác nhau để cải thiện hiệu suất trong cấu hình phân tán.

Bạn có thể điều chỉnh hiệu suất chung bằng cách thay đổi cài đặt Bộ nhớ, JVM và Kết nối từ xa.

Cài đặt bộ nhớ

Có các chiến lược khác nhau trong việc thiết lập bộ nhớ để cải thiện hiệu suất.

Cài đặt Máy chủ và Nhúng

Các cài đặt này hợp lệ cho cả thành phần Máy chủ và JVM nơi ứng dụng Java được chạy bằng OrientDB ở chế độ Nhúng, bằng cách sử dụng trực tiếp plocal.

Điều quan trọng nhất khi điều chỉnh là đảm bảo cài đặt bộ nhớ là chính xác. Điều có thể tạo ra sự khác biệt thực sự là sự cân bằng phù hợp giữa heap và bộ nhớ ảo được sử dụng bởi Bản đồ bộ nhớ, đặc biệt là trên các tập dữ liệu lớn (GB, TB và hơn thế nữa) trong đó cấu trúc bộ nhớ đệm trong bộ nhớ ít hơn IO thô.

Ví dụ: nếu bạn có thể gán tối đa 8GB cho quy trình Java, thì tốt hơn nên chỉ định bộ đệm lưu trữ heap nhỏ và ổ đĩa lớn (bộ nhớ off-heap).

Hãy thử lệnh sau để tăng bộ nhớ heap.

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

Các storage.diskCache.bufferSize cài đặt (với bộ nhớ "cục bộ" cũ, nó là file.mmap.maxMemory) tính bằng MB và cho biết dung lượng bộ nhớ sử dụng cho thành phần Disk Cache. Theo mặc định, nó là 4GB.

NOTE - Nếu tổng dung lượng tối đa của heap và bộ đệm cache của ổ đĩa quá cao, nó có thể khiến hệ điều hành hoán đổi với tốc độ chậm lớn.

Cài đặt JVM

Cài đặt JVM được mã hóa trong các tệp hàng loạt server.sh (và server.bat). Bạn có thể thay đổi chúng để điều chỉnh JVM theo cách sử dụng và cài đặt hw / sw của bạn. Thêm dòng sau vào tệp server.bat.

-server -XX:+PerfDisableSharedMem

Cài đặt này sẽ vô hiệu hóa việc ghi thông tin gỡ lỗi về JVM. Trong trường hợp bạn cần lập hồ sơ JVM, chỉ cần xóa cài đặt này.

Kết nối từ xa

Có nhiều cách để cải thiện hiệu suất khi bạn truy cập cơ sở dữ liệu bằng kết nối từ xa.

Chiến lược tìm nạp

Khi bạn làm việc với cơ sở dữ liệu từ xa, bạn phải chú ý đến chiến lược tìm nạp được sử dụng. Theo mặc định, máy khách OrientDB chỉ tải bản ghi có trong tập kết quả. Ví dụ: nếu một truy vấn trả về 100 phần tử, nhưng nếu bạn vượt qua các phần tử này từ máy khách, thì máy khách OrientDB sẽ tải các phần tử một cách lười biếng với một cuộc gọi mạng tới máy chủ cho mỗi bản ghi bị bỏ lỡ.

Nhóm kết nối mạng

Mỗi máy khách, theo mặc định, chỉ sử dụng một kết nối mạng để nói chuyện với máy chủ. Nhiều luồng trên cùng một máy khách chia sẻ cùng một nhóm kết nối mạng.

Khi bạn có nhiều luồng, có thể xảy ra tắc nghẽn vì mất nhiều thời gian để chờ kết nối mạng miễn phí. Đây là lý do tại sao điều quan trọng là phải cấu hình nhóm kết nối mạng.

Cấu hình rất đơn giản, chỉ có 2 tham số -

  • minPool- Đây là kích thước ban đầu của nhóm kết nối. Giá trị mặc định được định cấu hình dưới dạng tham số chung "client.channel.minPool".

  • maxPool- Đây là kích thước tối đa mà nhóm kết nối có thể đạt được. Giá trị mặc định được định cấu hình là tham số chung "client.channel.maxPool".

Nếu tất cả các kết nối chung đều bận, thì luồng máy khách sẽ đợi kết nối miễn phí đầu tiên.

Ví dụ về lệnh cấu hình bằng cách sử dụng thuộc tính cơ sở dữ liệu.

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

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

Điều chỉnh cấu hình phân tán

Có nhiều cách để cải thiện hiệu suất trên cấu hình phân tán.

Sử dụng giao dịch

Ngay cả khi bạn cập nhật đồ thị, bạn phải luôn làm việc trong các giao dịch. OrientDB cho phép bạn làm việc bên ngoài chúng. Các trường hợp phổ biến là truy vấn chỉ đọc hoặc các hoạt động lớn và không hiện tại có thể được khôi phục trong trường hợp thất bại. Khi bạn chạy trên cấu hình phân tán, việc sử dụng các giao dịch sẽ giúp giảm độ trễ. Điều này là do hoạt động phân tán chỉ xảy ra tại thời điểm cam kết. Phân phối một hoạt động lớn sẽ hiệu quả hơn nhiều so với chuyển nhiều hoạt động nhỏ, vì độ trễ.

Nhân rộng so với Sharding

Cấu hình phân tán OrientDB được đặt thành bản sao đầy đủ. Có nhiều nút với cùng một bản sao cơ sở dữ liệu là rất quan trọng đối với việc đọc quy mô. Trên thực tế, mỗi máy chủ độc lập trong việc thực hiện các lần đọc và truy vấn. Nếu bạn có 10 nút máy chủ, thông lượng đọc là 10 lần.

Với ghi thì ngược lại: có nhiều nút với bản sao đầy đủ sẽ làm chậm các hoạt động, nếu bản sao là đồng bộ. Trong trường hợp này, việc chia nhỏ cơ sở dữ liệu trên nhiều nút cho phép bạn mở rộng quy mô ghi, vì chỉ một tập hợp con các nút tham gia vào quá trình ghi. Hơn nữa, bạn có thể có một cơ sở dữ liệu lớn hơn một nút máy chủ HD.

Mở rộng quy mô trên Viết

Nếu bạn có mạng chậm và bạn có bản sao đồng bộ (mặc định), bạn có thể phải trả giá cho độ trễ. Trên thực tế, khi OrientDB chạy đồng bộ, ít nhất nó sẽ đợiwriteQuorum. Điều này có nghĩa là nếu writeQuorum là 3 và bạn có 5 nút, thì nút máy chủ điều phối (nơi bắt đầu hoạt động phân tán) phải đợi câu trả lời từ ít nhất 3 nút để cung cấp câu trả lời cho máy khách.

Để duy trì tính nhất quán, writeQuorum nên được đặt thành phần lớn. Nếu bạn có 5 nút, phần lớn là 3. Với 4 nút, nó vẫn là 3. Đặt writeQuorum thành 3 thay vì 4 hoặc 5 cho phép giảm chi phí độ trễ và vẫn duy trì tính nhất quán.

Sao chép không đồng bộ

Để tăng tốc mọi thứ, bạn có thể thiết lập Nhân bản không đồng bộ để loại bỏ nút cổ chai về độ trễ. Trong trường hợp này, nút máy chủ điều phối thực thi hoạt động cục bộ và đưa ra câu trả lời cho máy khách. Toàn bộ bản sao sẽ ở trong nền. Trong trường hợp không đạt đến số đại biểu, các thay đổi sẽ được khôi phục một cách minh bạch.

Mở rộng quy mô trên Đọc

Nếu bạn đã đặt writeQuorum thành phần lớn các nút, bạn có thể để readQuorumthành 1 (mặc định). Điều này tăng tốc tất cả các lần đọc.

Trong khi nâng cấp, bạn phải xem xét số phiên bản và định dạng. Có ba loại định dạng - MAJOR, MINOR, PATCH.

  • MAJOR phiên bản dẫn đến các thay đổi API không tương thích.

  • MINOR phiên bản có chức năng tương thích ngược.

  • PTCH phiên bản bao gồm các bản sửa lỗi tương thích ngược.

Để đồng bộ hóa giữa các phiên bản nhỏ và chính, bạn có thể cần xuất và nhập cơ sở dữ liệu. Đôi khi nhiều bạn cần di chuyển cơ sở dữ liệu từ LOCAL sang PLOCAL và cần di chuyển biểu đồ sang RidBag.

Di chuyển từ Công cụ lưu trữ LOCAL sang PLOCAL

Bắt đầu từ phiên bản 1.5.x OrientDB đi kèm với một bộ máy lưu trữ hoàn toàn mới: PLOCAL (Paginated LOCAL). Nó liên tục giống như LOCAL, nhưng lưu trữ thông tin theo một cách khác. Các điểm sau đây cho thấy sự so sánh giữa PLOCAL và LOCAL -

  • Trong PLOCAL Bản ghi được lưu trữ trong các tệp cụm, trong khi với LOCAL được phân chia giữa cụm và phân đoạn dữ liệu.

  • PLOCAL bền hơn LOCAL vì chế độ thêm vào khi ghi.

  • PLOCAL có các khóa tranh chấp nhỏ khi ghi, có nghĩa là đồng thời hơn.

  • PLOCAL không sử dụng kỹ thuật Bản đồ bộ nhớ (MMap) nên hành vi dễ "dự đoán" hơn.

Để di chuyển bộ nhớ LOCAL của bạn sang PLOCAL mới, bạn cần xuất và nhập lại cơ sở dữ liệu bằng cách sử dụng PLOCAL làm công cụ lưu trữ. Sau đây là quy trình.

Step 1 - Mở shell mới (Linux / Mac) hoặc Command Prompt (Windows).

Step 2- Xuất cơ sở dữ liệu bằng giao diện điều khiển. Làm theo lệnh đã cho để xuất bản trình diễn cơ sở dữ liệu sangdemo.json.gzip tập tin.

$ 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 - Trên hệ thống tệp cục bộ, tạo cơ sở dữ liệu mới bằng cách sử dụng công cụ "plocal" -

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

Step 4 - Nhập cơ sở dữ liệu cũ sang cơ sở dữ liệu mới.

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

Nếu bạn truy cập cơ sở dữ liệu trong cùng một JVM, hãy nhớ thay đổi URL từ "local:" thành "plocal:"

Di chuyển đồ thị sang RidBag

Kể từ OrientDB 1.7, RidBag là một tập hợp mặc định quản lý các quan hệ kề trong biểu đồ. Mặc dù cơ sở dữ liệu cũ được quản lý bởi MVRB-Tree hoàn toàn tương thích, bạn có thể cập nhật cơ sở dữ liệu của mình lên định dạng mới hơn.

Bạn có thể nâng cấp đồ thị của mình qua bảng điều khiển hoặc sử dụng ORidBagMigration lớp học.

  • Kết nối với cơ sở dữ liệu CONNECT plocal:databases/<graphdb-name>

  • Chạy lệnh đồ thị nâng cấp

Giống như RDBMS, OrientDB cũng cung cấp bảo mật dựa trên các khái niệm, người dùng và vai trò nổi tiếng. Mỗi cơ sở dữ liệu có người dùng riêng và mỗi người dùng có một hoặc nhiều vai trò. Vai trò là sự kết hợp của các chế độ làm việc và tập hợp các quyền.

Người dùng

Theo mặc định, OrientDB duy trì ba người dùng khác nhau cho tất cả cơ sở dữ liệu trong máy chủ -

  • Admin - Người dùng này có quyền truy cập vào tất cả các chức năng trên cơ sở dữ liệu mà không bị giới hạn.

  • Reader- Người dùng này là người dùng chỉ đọc. Người đọc có thể truy vấn bất kỳ bản ghi nào trong cơ sở dữ liệu, nhưng không thể sửa đổi hoặc xóa chúng. Nó không có quyền truy cập vào thông tin nội bộ, chẳng hạn như người dùng và vai trò của chính họ.

  • Writer - Người dùng này giống như trình đọc người dùng, nhưng nó cũng có thể tạo, cập nhật và xóa bản ghi.

Làm việc với người dùng

Khi bạn được kết nối với cơ sở dữ liệu, bạn có thể truy vấn người dùng hiện tại trên cơ sở dữ liệu bằng cách sử dụng SELECT truy vấn trên OUser lớp học.

orientdb> SELECT RID, name, status FROM OUser

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

---+--------+--------+-------- 
#  | @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).

Tạo người dùng mới

Để tạo người dùng mới, hãy sử dụng lệnh INSERT. Hãy nhớ rằng, khi làm như vậy, bạn phải đặt trạng thái thành ACTIVE và cung cấp cho nó một vai trò hợp lệ.

orientdb> INSERT INTO OUser SET 
               name = 'jay', 
               password = 'JaY',
               status = 'ACTIVE',
               roles = (SELECT FROM ORole WHERE name = 'reader')

Cập nhật người dùng

Bạn có thể thay đổi tên cho người dùng bằng câu lệnh UPDATE.

orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'

Theo cách tương tự, bạn cũng có thể thay đổi mật khẩu cho người dùng.

orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'

OrientDB lưu mật khẩu ở định dạng băm. Trình kích hoạtOUserTrigger mã hóa mật khẩu một cách minh bạch trước khi lưu bản ghi.

Vô hiệu hóa người dùng

Để vô hiệu hóa người dùng, hãy sử dụng CẬP NHẬT để chuyển trạng thái của người dùng đó từ HOẠT ĐỘNG sang TẠM NGỪNG. Ví dụ: nếu bạn muốn vô hiệu hóa tất cả người dùng ngoại trừ quản trị viên, hãy sử dụng lệnh sau:

orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'

Vai trò

Một vai trò xác định những hoạt động mà người dùng có thể thực hiện đối với tài nguyên. Chủ yếu, quyết định này phụ thuộc vào chế độ làm việc và các quy tắc. Bản thân các quy tắc hoạt động khác nhau, tùy thuộc vào chế độ làm việc.

Làm việc với vai trò

Khi bạn được kết nối với cơ sở dữ liệu, bạn có thể truy vấn các vai trò hiện tại trên cơ sở dữ liệu bằng cách sử dụng SELECT truy vấn trên ORole lớp học.

orientdb> SELECT RID, mode, name, rules FROM ORole

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

--+------+----+--------+------------------------------------------------------- 
# |@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).

Tạo vai trò mới

Để tạo một vai trò mới, hãy sử dụng câu lệnh INSERT.

orientdb> INSERT INTO ORole SET name = 'developer', mode = 0

Làm việc với các chế độ

Trong đó các quy tắc xác định những gì người dùng thuộc các vai trò nhất định có thể làm trên cơ sở dữ liệu, chế độ làm việc xác định cách OrientDB diễn giải các quy tắc này. Có hai loại chế độ làm việc, được chỉ định bởi 1 và 0.

  • Allow All But (Rules)- Theo mặc định, nó là chế độ siêu người dùng. Chỉ định các ngoại lệ cho điều này bằng cách sử dụng các quy tắc. Nếu OrientDB không tìm thấy quy tắc nào cho tài nguyên được yêu cầu, thì nó sẽ cho phép người dùng thực thi hoạt động. Sử dụng chế độ này chủ yếu cho người dùng thành thạo và quản trị viên. Quản trị viên vai trò mặc định sử dụng chế độ này theo mặc định và không có quy tắc ngoại lệ. Nó được viết là 1 trong cơ sở dữ liệu.

  • Deny All But (Rules)- Theo mặc định, chế độ này không cho phép gì cả. Chỉ định các ngoại lệ cho điều này bằng cách sử dụng các quy tắc. Nếu OrientDB tìm thấy các quy tắc cho một tài nguyên được yêu cầu, thì nó sẽ cho phép người dùng thực thi hoạt động. Sử dụng chế độ này làm mặc định cho tất cả người dùng cổ điển. Các vai trò mặc định, người đọc và người viết, sử dụng chế độ này. Nó được viết là 0 trong cơ sở dữ liệu.

OrientDB cung cấp giao diện người dùng web để thực hiện các hoạt động cơ sở dữ liệu thông qua GUI. Chương này giải thích các tùy chọn khác nhau có sẵn trong OrientDB.

Trang chủ Studio

Studio là một giao diện web để quản trị OrientDB đi kèm với bản phân phối OrientDB.

Trước tiên, bạn cần khởi động máy chủ OrientDB bằng lệnh sau.

$ server.sh

Nếu bạn chạy OrientDB trong máy của mình, giao diện web có thể được truy cập qua URL -

http://localhost:2480

Nếu lệnh được thực hiện thành công, sau đây sẽ là kết quả trên màn hình.

Kết nối với Cơ sở dữ liệu hiện có

Để đăng nhập, hãy chọn một cơ sở dữ liệu từ danh sách cơ sở dữ liệu và sử dụng bất kỳ người dùng cơ sở dữ liệu nào. Theo mặc định (tên người dùng / mật khẩu)reader/reader có thể đọc các bản ghi từ cơ sở dữ liệu, writer/writer có thể đọc, tạo, cập nhật và xóa các bản ghi, trong khi admin/admin có tất cả các quyền.

Thả một cơ sở dữ liệu hiện có

Chọn cơ sở dữ liệu từ danh sách cơ sở dữ liệu và nhấp vào biểu tượng thùng rác. Studio sẽ mở một cửa sổ bật lên xác nhận nơi bạn phải chèn Người dùng máy chủ và Mật khẩu máy chủ.

Sau đó nhấp vào nút "Thả cơ sở dữ liệu". Bạn có thể tìm thấy thông tin đăng nhập máy chủ trong$ORIENTDB_HOME/config/orientdb-server-config.xml tập tin.

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

Tạo cơ sở dữ liệu mới

Để tạo cơ sở dữ liệu mới, hãy nhấp vào nút "Cơ sở dữ liệu mới" từ trang chủ.

Thông tin sau là cần thiết để tạo cơ sở dữ liệu mới -

  • Tên cơ sở dữ liệu
  • Loại cơ sở dữ liệu (Tài liệu / Đồ thị)
  • Loại lưu trữ (plocal / bộ nhớ)
  • Người dùng máy chủ
  • Mật khẩu máy chủ

Bạn có thể tìm thấy thông tin đăng nhập máy chủ trong $ORIENTDB_HOME/config/orientdbserver-config.xml tập tin.

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

Sau khi được tạo, Studio sẽ tự động đăng nhập vào cơ sở dữ liệu mới.

Thực thi một truy vấn

Studio hỗ trợ tự động nhận dạng ngôn ngữ bạn đang sử dụng giữa những ngôn ngữ được hỗ trợ: SQL và Gremlin. Trong khi viết, hãy sử dụng tính năng tự động hoàn thành bằng cách nhấnCtrl + Space.

Các phím tắt sau có sẵn trong trình chỉnh sửa truy vấn -

  • Ctrl + Return - Để thực hiện truy vấn hoặc chỉ cần nhấp vào Run cái nút.

  • Ctrl/Cmd + Z - Để hoàn tác các thay đổi.

  • Ctrl/Cmd + Shift + Z - Để thực hiện lại các thay đổi.

  • Ctrl/Cmd + F - Để tìm kiếm trong trình soạn thảo.

  • Ctrl/Cmd + / - Để chuyển đổi một bình luận.

Ảnh chụp màn hình sau đây cho thấy cách thực hiện một truy vấn.

Bằng cách nhấp vào bất kỳ @rid trong tập kết quả, bạn sẽ chuyển sang chế độ chỉnh sửa tài liệu nếu bản ghi là Tài liệu, nếu không bạn sẽ chuyển sang chế độ chỉnh sửa đỉnh.

Bạn có thể đánh dấu các truy vấn của mình bằng cách nhấp vào biểu tượng dấu sao trong tập kết quả hoặc trong trình chỉnh sửa. Để duyệt các truy vấn được đánh dấu trang, hãy nhấp vàoBookmarkscái nút. Studio sẽ mở danh sách dấu trang ở bên trái, nơi bạn có thể chỉnh sửa / xóa hoặc chạy lại các truy vấn.

Studio lưu các truy vấn đã thực thi trong Bộ nhớ cục bộ của trình duyệt. Trong cài đặt truy vấn, bạn có thể định cấu hình số lượng truy vấn mà studio sẽ lưu trong lịch sử. Bạn cũng có thể tìm kiếm một truy vấn đã thực thi trước đó, xóa tất cả các truy vấn khỏi lịch sử hoặc xóa một truy vấn.

Chỉnh sửa đỉnh

Để chỉnh sửa đỉnh của đồ thị, hãy chuyển đến phần Đồ thị. Sau đó chạy truy vấn sau.

Select From Customer

Khi chạy thành công truy vấn, sau đây là ảnh chụp màn hình đầu ra. Chọn đỉnh cụ thể trong canvas đồ thị để chỉnh sửa.

Chọn biểu tượng chỉnh sửa trên đỉnh cụ thể. Bạn sẽ nhận được màn hình sau đây chứa các tùy chọn để chỉnh sửa đỉnh.

Trình quản lý lược đồ

OrientDB có thể hoạt động ở chế độ ít giản đồ, chế độ giản đồ hoặc kết hợp cả hai. Ở đây chúng ta sẽ thảo luận về chế độ lược đồ. Nhấp vào phần Giản đồ trên đầu giao diện người dùng web. Bạn sẽ nhận được ảnh chụp màn hình sau.

Tạo một lớp học mới

Để tạo một Lớp mới, chỉ cần nhấp vào New Classcái nút. Ảnh chụp màn hình sau sẽ xuất hiện. Bạn sẽ phải cung cấp các thông tin sau như được hiển thị trong ảnh chụp màn hình để tạo lớp mới.

Xem tất cả các chỉ mục

Khi bạn muốn có tổng quan về tất cả các chỉ mục được tạo trong cơ sở dữ liệu của mình, chỉ cần nhấp vào nút tất cả các chỉ mục trong Giao diện người dùng lược đồ. Điều này sẽ cung cấp quyền truy cập nhanh vào một số thông tin về chỉ mục (tên, loại, thuộc tính, v.v.) và bạn có thể loại bỏ hoặc xây dựng lại chúng từ đây.

Chỉnh sửa lớp học

Nhấp vào bất kỳ lớp nào trên phần lược đồ, bạn sẽ nhận được ảnh chụp màn hình sau.

Trong khi chỉnh sửa một lớp, bạn có thể thêm một thuộc tính hoặc thêm một chỉ mục mới.

Thêm thuộc tính

Nhấp vào nút Thuộc tính mới để thêm thuộc tính. Bạn sẽ nhận được ảnh chụp màn hình sau.

Bạn phải cung cấp các chi tiết sau như được hiển thị trong ảnh chụp màn hình để thêm thuộc tính.

Thêm chỉ mục

Nhấp vào nút Chỉ mục mới. Bạn sẽ nhận được ảnh chụp màn hình sau. Bạn phải cung cấp các chi tiết sau như được hiển thị trong ảnh chụp màn hình để thêm chỉ mục.

Trình chỉnh sửa đồ thị

Nhấp vào phần biểu đồ. Bạn không chỉ có thể trực quan hóa dữ liệu của mình theo kiểu biểu đồ mà còn có thể tương tác với biểu đồ và sửa đổi nó.

Để điền vùng biểu đồ, hãy nhập truy vấn vào trình chỉnh sửa truy vấn hoặc sử dụng chức năng Gửi tới biểu đồ từ giao diện người dùng Duyệt.

Thêm ngành dọc

Để thêm một Vertex mới trong Cơ sở dữ liệu đồ thị của bạn và trong khu vực Canvas đồ thị, bạn phải nhấn nút Add Vertex. Thao tác này được thực hiện trong hai bước.

Trong bước đầu tiên, bạn phải chọn lớp cho Vertex mới và sau đó nhấp vào Tiếp theo.

Trong bước thứ hai, bạn phải chèn các giá trị trường của đỉnh mới. Bạn cũng có thể thêm các trường tùy chỉnh vì OrientDB hỗ trợ chế độ giản đồ. Để làm cho đỉnh mới bền vững, hãy nhấp vào 'Lưu thay đổi' và đỉnh sẽ được lưu vào cơ sở dữ liệu và được thêm vào vùng canvas.

Xóa các ngành dọc

Mở menu hình tròn bằng cách nhấp vào Đỉnh mà bạn muốn xóa. Mở menu con bằng cách di chuột đến mục menu more (...) rồi nhấp vào biểu tượng thùng rác.

Xóa các Dọc khỏi Canvas

Mở menu hình tròn, mở menu phụ bằng cách di chuột đến mục menu more (...) rồi nhấp vào biểu tượng cục tẩy.

Kiểm tra các ngành dọc

Nếu bạn muốn xem nhanh thuộc tính Vertex, hãy nhấp vào biểu tượng con mắt.

Bảo vệ

Studio 2.0 bao gồm Quản lý bảo mật mới, nơi bạn có thể quản lý Người dùng và Vai trò theo cách đồ họa.

Người dùng

Bạn có thể thực hiện các hành động sau để quản lý người dùng cơ sở dữ liệu -

  • Tìm kiếm người dùng
  • Thêm người dùng
  • Xóa người dùng
  • Chỉnh sửa Người dùng: các vai trò có thể được chỉnh sửa trong dòng, đối với tên, trạng thái và mật khẩu, hãy nhấp vào Edit cái nút

Thêm người dùng

Để thêm Người dùng mới, hãy nhấp vào Add User , điền đầy đủ thông tin cho người dùng mới (tên, mật khẩu, trạng thái, vai trò) và sau đó lưu để thêm người dùng mới vào cơ sở dữ liệu.

Vai trò

Bạn có thể thực hiện các hành động sau để quản lý các vai trò cơ sở dữ liệu:

  • Vai trò tìm kiếm
  • Thêm vai trò
  • Xóa vai trò
  • Chỉnh sửa vai trò

Thêm vai trò

Để thêm Người dùng mới, hãy nhấp vào Add Role , điền đầy đủ thông tin cho vai trò mới (tên, vai trò mẹ, chế độ) và sau đó lưu để thêm vai trò mới vào cơ sở dữ liệu.

Thêm quy tắc vào vai trò

Để thêm quy tắc bảo mật mới cho vai trò đã chọn, hãy nhấp vào Add Rulecái nút. Thao tác này sẽ hỏi bạn chuỗi tài nguyên mà bạn muốn bảo mật. Sau đó, bạn có thể cấu hình các quyền CRUD trên tài nguyên mới được tạo.

Tương tự như RDBMS, OrientDB hỗ trợ JDBC. Đối với điều này, đầu tiên chúng ta cần cấu hình môi trường cho lập trình JDBC. Sau đây là quy trình để tạo kết nối giữa ứng dụng và cơ sở dữ liệu của bạn.

Đầu tiên, chúng ta cần tải xuống Trình điều khiển JDBC. Truy cập liên kết sauhttps://code.google.com/archive/p/orient/downloads để tải xuống OrientDB-JDBC.

Sau đây là năm bước cơ bản để đạt được kết nối OrientDB-jdbc.

  • Tải trình điều khiển JDBC
  • Tạo kết nối
  • Tạo tuyên bố
  • Thực thi câu lệnh
  • Đóng kết nối

Thí dụ

Hãy thử ví dụ sau để hiểu kết nối OrientDB-JDBC. Chúng ta hãy xem xét chúng ta có một bảng nhân viên chứa các trường sau đây và các loại của nó.

Sr.No. Tên trường Kiểu
1 Tôi Số nguyên
2 Tên Chuỗi
3 Tiền lương Số nguyên
4 Ngày tham gia Ngày

Bạn có thể tạo một Lược đồ (bảng) bằng cách thực hiện các lệnh sau.

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

Sau khi thực hiện tất cả các lệnh, bạn sẽ nhận được bảng Nhân viên với các trường sau, tên nhân viên với các trường id, age và join_date.

Lưu mã sau vào OrientJdbcDemo.java tập tin.

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(); 
   } 
}

Lệnh sau được sử dụng để biên dịch chương trình trên.

$ javac –classpath:.:orientdb-jdbc-1.0-SNAPSHOT.jar OrientJdbcDemo.java $ java –classpath:.:orientdb-jdbc-1.0-SNAPSHOT.jar OrientJdbcDemo

Nếu lệnh trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

Records Successfully Inserted

Trình điều khiển OrientDB cho Python sử dụng giao thức nhị phân. PyOrient là tên dự án git hub giúp kết nối OrientDB với Python. Nó hoạt động với phiên bản OrientDB 1.7 trở lên.

Lệnh sau được sử dụng để cài đặt PyOrient.

pip install pyorient

Bạn có thể sử dụng tệp script có tên demo.py để thực hiện các tác vụ sau -

  • Tạo một cá thể máy khách có nghĩa là tạo một kết nối.

  • Tạo DB có tên DB_Demo.

  • Mở DB có tên DB_Demo.

  • Tạo lớp my_class.

  • Tạo id thuộc tính và tên.

  • Chèn bản ghi vào lớp của tôi.

//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')")

Thực thi tập lệnh trên bằng lệnh sau.

$ python demo.py