OrientDB - ธุรกรรม

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

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

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

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

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

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

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

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

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

กระทำ

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

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

COMMIT

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

ตัวอย่าง

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

ก่อนอื่นคุณต้องเริ่มต้นธุรกรรมโดยใช้คำสั่ง BEGIN ต่อไปนี้

orientdb {db = demo}> BEGIN

แทรกระเบียนลงในตารางพนักงานด้วยค่า id = 12 และ name = satish.P โดยใช้คำสั่งต่อไปนี้

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

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

orientdb> commit

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

Transaction 2 has been committed in 4ms

ย้อนกลับ

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

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

ROLLBACK

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

ตัวอย่าง

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

ก่อนอื่นคุณต้องเริ่มต้นธุรกรรมโดยใช้คำสั่ง BEGIN ต่อไปนี้

orientdb {db = demo}> BEGIN

แทรกระเบียนลงในตารางพนักงานด้วยค่า id = 12 และ name = satish.P โดยใช้คำสั่งต่อไปนี้

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

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

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

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

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

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

orientdb> ROLLBACK

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

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

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

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