ฐานข้อมูล NoSQL และการแลกเปลี่ยนระหว่างความสอดคล้องและประสิทธิภาพ

เผยแพร่แล้ว: 2022-11-22

ใน ฐานข้อมูลเชิงสัมพันธ์ แบบดั้งเดิม ธุรกรรมถูกใช้เพื่อรักษาความสมบูรณ์ของข้อมูลโดยการจัดกลุ่มคำสั่ง SQL ที่เกี่ยวข้องให้เป็นหน่วยงานเดียว ธุรกรรมมีความสำคัญต่อการรับรองความสอดคล้องของข้อมูลในฐานข้อมูล แต่ธุรกรรมเหล่านี้มาพร้อมกับต้นทุนด้านประสิทธิภาพ ฐานข้อมูล NoSQL ไม่ใช้ธุรกรรมประเภทเดียวกับฐานข้อมูลเชิงสัมพันธ์ แต่มีกลไกที่แตกต่างกันเพื่อให้มั่นใจว่าข้อมูลมีความสอดคล้องกัน ฐานข้อมูล NoSQL ใช้เทคนิคที่เรียกว่า “ความสอดคล้องในท้ายที่สุด” ด้วยความสอดคล้องในท้ายที่สุด ข้อมูลจะไม่สอดคล้องกันทันทีในทุกแบบจำลอง อย่างไรก็ตาม ในที่สุดระบบจะไปถึงสถานะที่แบบจำลองทั้งหมดมีข้อมูลเดียวกัน ซึ่งหมายความว่ามีการแลกเปลี่ยนระหว่างความสอดคล้องและประสิทธิภาพในฐานข้อมูล NoSQL

การดำเนินการกับข้อมูลในฐานข้อมูล Oracle NoSQL จะดำเนินการในธุรกรรมเดียว ความหมายของธุรกรรมมักจะถูกอธิบายโดยใช้คุณสมบัติของกรด แม้ว่านโยบายสำหรับ atomicity และ isolation จะไม่สามารถกำหนดค่าได้ แต่ผู้ใช้สามารถเข้าถึงนโยบายความสอดคล้องและความทนทานได้ โซลูชันทางธุรกิจสามารถสร้างขึ้นได้ด้วยนโยบายความสอดคล้องที่ยืดหยุ่น ช่วยให้นักพัฒนาสามารถสร้างการรับประกันข้อมูลได้ในขณะเดียวกันก็เป็นไปตามข้อกำหนดด้านเวลาแฝงและความสามารถในการปรับขนาดของแอปพลิเคชัน

การดำเนินการเข้าถึงฐานข้อมูลหนึ่งรายการสำหรับ ธุรกรรม Oracle NoSQL Database ประกอบด้วยหนึ่งหน่วยการทำงานเชิงตรรกะระดับปรมาณู การดำเนินการกับข้อมูลทุกอย่างใน Oracle NoSQL Database ดำเนินการไปพร้อมกับการจัดการของระบบ

ธุรกรรมฐานข้อมูลคือชุดของการดำเนินการที่ดำเนินการบนฐานข้อมูล และดำเนินการทั้งหมดพร้อมกันหรือไม่ดำเนินการเลย – หรือดำเนินการแยกกัน เป็นผลให้ดำเนินการเพียงครึ่งเดียวและบันทึกผลลัพธ์

ธุรกรรมใน MongoDB เช่นเดียวกับธุรกรรมในฐานข้อมูลอื่นๆ จะถูกดำเนินการใน ฐานข้อมูล MongoDB สามารถใช้ไดรเวอร์เพื่อเริ่มเซสชัน MongoDB และทำธุรกรรมให้เสร็จสมบูรณ์ หลังจากนั้น ใช้เซสชันนั้นเพื่อดำเนินการชุดของการดำเนินการฐานข้อมูล

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

ฐานข้อมูล Nosql รองรับการทำธุรกรรมหรือไม่

เครดิตรูปภาพ: wordpress.com

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

นักพัฒนาได้เรียนรู้วิธีการแยกความแตกต่างระหว่างแบบจำลองข้อมูลเชิงวัตถุและเชิงสัมพันธ์ในช่วงไม่กี่ปีที่ผ่านมา ฐานข้อมูลเชิงเอกสาร เช่น MarkLogic, MongoDB และ CouchDB ได้แก้ไขอิมพีแดนซ์ที่ไม่ตรงกันทั้งหมดแล้ว ตามความเห็นของบางคน ฐานข้อมูล NoSQL บางส่วนไม่มีความสามารถดังกล่าวเนื่องจากการแลกเปลี่ยนระหว่างความคล่องตัวและความสามารถในการปรับขนาด อย่างไรก็ตาม ในทางปฏิบัติ คุณสมบัติของ ACID มีความสำคัญมากพอที่ตลาดจะนำไปใช้หรือกำลังถูกแก้ไข บทความนี้มีวัตถุประสงค์เพื่อแสดงให้เห็นว่า MarkLogic ซึ่งเป็นฐานข้อมูล NoSQL สามารถใช้งานโดยนักพัฒนา Java เพื่อทำธุรกรรมแบบหลายคำสั่งได้อย่างไร ฐานข้อมูล NoSQL เชิงเอกสาร เช่น MarkLogic ใช้เพื่อบรรลุสิ่งนี้ ด้วยออบเจกต์ที่เป็นอนุกรม ทำให้สามารถเขียนรูปแบบเอกสารหรือออบเจกต์ได้โดยไม่ต้องจัดการกับการแมปที่ซับซ้อน ซึ่งช่วยประหยัดเวลาและความพยายามได้

JAXB ซึ่งย่อมาจาก “Java Object J1939” เป็นวิธีหนึ่งในการนำเสนอ POJO ไปยัง MarkLogic เพื่อความคงอยู่ คุณสมบัติ ACID ของ MarkLogic ช่วยให้มั่นใจได้ว่าสินค้าที่ซื้อจะสะท้อนให้เห็นในสินค้าคงคลัง (ตรงข้ามกับสินค้าที่ลดราคา) สิ่งนี้ทำในมุมมองของฐานข้อมูลเนื่องจากเป็นการดำเนินการทั้งหมดหรือไม่มีเลย เนื่องจากนี่เป็นธุรกรรมแบบหลายคำสั่ง MarkLogic จึงใช้วิธีการอื่นนอกเหนือจากการอ่าน ซึ่งโดยปกติแล้วจะไม่เกิดขึ้นกับการดำเนินการอ่าน ในโปรแกรมต่อไปนี้ เราจะสร้างคำสั่งซื้อที่มีรายการโฆษณาสามรายการ รวมถึงการเปลี่ยนแปลงรายการสินค้าคงคลังเพื่อลดจำนวนรายการ ทั้งหมดนี้ในขณะที่เรียกใช้โปรแกรมได้สำเร็จ หากเราต้องการแก้ไขปัญหา เราสามารถบังคับข้อยกเว้น (แม้ว่าจะมีประโยชน์อยู่บ้าง) ในการ ทำธุรกรรม โดยเรียกใช้โปรแกรมเดิมอีกครั้งและบ่นว่าไม่มีสินค้าคงคลัง ในกรณีนี้ เราจะต้องยกเลิกธุรกรรมทั้งหมด ส่งผลให้เกิดข้อผิดพลาดดังต่อไปนี้

เราต้องการให้แน่ใจว่าเธรดที่ได้รับการตั้งค่าเพื่ออัปเดตอื่นจะไม่เปลี่ยนแปลงก่อนที่จะดำเนินการอัปเดต เมื่อเราอ่านวัตถุด้วยความตั้งใจที่จะอัปเดต เราต้องการให้แน่ใจว่าไม่มีอะไรเปลี่ยนแปลง ด้วยเหตุนี้ เราจึงใช้การดำเนินการอ่านนอก บริบทของธุรกรรม เพื่อหลีกเลี่ยงการล็อกโดยปริยาย ขั้นตอนที่สองคือการสร้างวัตถุ DocumentDescriptor ความเชื่อในการล็อกในแง่ดีคือการไม่ล็อกระหว่างการอ่าน เนื่องจากเรามั่นใจว่าการเปลี่ยนแปลงจะไม่เกิดขึ้นหลังจากออกการอัปเดตครั้งต่อไป เรามักจะไม่เห็นการละเมิดการแยกตัว อย่างไรก็ตาม ในกรณีที่เกิดปัญหา คุณควรจับตาดูสิ่งต่างๆ อยู่เสมอ เราจะแจ้งให้คุณทราบด้วยเวอร์ชันล่าสุด และคุณจะสามารถบอกได้ว่ามีคนอื่นแซงหน้าเราหรือไม่

เพื่อมอบความสามารถที่ทรงพลังในลักษณะที่ง่ายสำหรับนักพัฒนาในการใช้ประโยชน์จากโดยไม่ต้องเสียสละความสามารถของตัวเอง เซิร์ฟเวอร์ MarkLogic จึงมอบคุณสมบัติที่ทรงพลังในลักษณะที่ง่ายสำหรับนักพัฒนาในการใช้ประโยชน์จาก คุณควรไปที่เว็บไซต์เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งเหล่านี้และหัวข้ออื่นๆ GitHub เป็นจุดเริ่มต้นที่ดีสำหรับตัวอย่างการทำธุรกรรมแบบหลายใบแจ้งยอด

Mongodb ดีสำหรับการทำธุรกรรมหรือไม่?

MongoDB สามารถจัดการ ธุรกรรมหลายเอกสาร ได้หากความต้องการเป็นแบบปรมาณู: อ่านและเขียนเอกสารหลายชุดจากคอลเลกชันเดียวหรือหลายชุด ธุรกรรมสามารถใช้ในการดำเนินการ คอลเล็กชัน ฐานข้อมูล เอกสาร และชาร์ดต่างๆ ในรูปแบบการกระจาย

Mongodb สำหรับธนาคาร: สิ่งที่ยิ่งใหญ่ต่อไปใน Nosql?

MongoDB เป็นตัวเลือกที่ดีสำหรับการจัดเก็บข้อมูลที่เปลี่ยนแปลงบ่อย รวมถึงข้อมูลที่มีขนาดใหญ่หรือซับซ้อนเกินกว่าจะบรรจุในฐานข้อมูลเชิงสัมพันธ์ได้ ธนาคารต่าง ๆ มองหาการรวม NoSQL เข้ากับฐานข้อมูลเชิงสัมพันธ์มากขึ้นเรื่อย ๆ เพื่อปรับปรุงประสิทธิภาพและความสามารถในการขยายขนาด

Nosql รองรับข้อมูลประเภทใด

ด้วยเหตุนี้ จึงจัดประเภทเป็น "ไม่เฉพาะ SQL" โดยมีโมเดลข้อมูลตั้งแต่แบบกว้างไปจนถึงแบบเฉพาะเจาะจง ฐานข้อมูล NoSQL มีหลายประเภท รวมถึง ฐานข้อมูลเอกสารล้วน ที่เก็บ คีย์-ค่า ฐานข้อมูลคอลัมน์กว้าง และฐานข้อมูลกราฟ ห้างสรรพสินค้าที่เก่าแก่ที่สุดในสหรัฐอเมริกาคืออะไร?

ฐานข้อมูล Nosql: ประโยชน์ของความสามารถในการปรับขนาดและความยืดหยุ่นที่มากขึ้น

สถาปัตยกรรมฐานข้อมูลมีความยืดหยุ่นมากขึ้นและช่วยให้สามารถจัดเก็บและดึงข้อมูลที่มีประสิทธิภาพมากกว่าฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม ฐานข้อมูล NoSQL เช่น ฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม สามารถให้ข้อดีหลายประการ รวมถึงความสามารถในการปรับขนาดที่มากขึ้นและความสามารถในการจัดเก็บข้อมูลได้ง่ายขึ้น ฐานข้อมูล NoSQL ไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับทุกแอปพลิเคชันเสมอไป แต่มีข้อดีหลายประการที่ทำให้เป็นตัวเลือกที่น่าสนใจสำหรับบางแอปพลิเคชัน ฐานข้อมูล NoSQL เก็บข้อมูลในเอกสารมากกว่าฐานข้อมูลเชิงสัมพันธ์