ฐานข้อมูล NoSQL: ธุรกรรมและความพร้อมใช้งาน
เผยแพร่แล้ว: 2023-03-04ฐานข้อมูล NoSQL มักถูกใช้เมื่อต้องการความพร้อมใช้งานสูงและความสามารถในการปรับขนาดในแนวนอน พวกเขายอมสละคุณสมบัติดั้งเดิมบางอย่างของฐานข้อมูลเชิงสัมพันธ์เพื่อให้บรรลุเป้าหมายเหล่านี้ หนึ่งในคุณสมบัติที่เสียสละคือการทำธุรกรรม ธุรกรรมเป็นวิธีการรับรองว่าข้อมูลสอดคล้องกันในฐานข้อมูล ธุรกรรมคือชุดของการดำเนินการที่ดำเนินการทั้งหมดพร้อมกัน หากการดำเนินการหนึ่งล้มเหลว ธุรกรรมทั้งหมดจะล้มเหลวและฐานข้อมูลจะถูกย้อนกลับเป็นสถานะก่อนหน้า ฐานข้อมูล NoSQL ไม่รองรับการทำธุรกรรมเนื่องจากได้รับการออกแบบมาให้มีความพร้อมใช้งานสูงและสามารถปรับขนาดได้ในแนวนอน ซึ่งหมายความว่าพวกเขาไม่สามารถเสียสละความสม่ำเสมอเพื่อความพร้อมใช้งานได้ มีวิธีแก้ไขการขาดธุรกรรมในฐานข้อมูล NoSQL ตัวอย่างเช่น คุณสามารถใช้ธุรกรรมระดับแอปพลิเคชัน ซึ่งหมายความว่าแอปพลิเคชันจัดการธุรกรรม ไม่ใช่ฐานข้อมูล ข้อเสียคือการดำเนินการนี้ทำได้ยากกว่าและไม่ปลอดภัยเท่ากับธุรกรรมระดับฐานข้อมูล
โดยทั่วไปแล้วฐานข้อมูล NoSQL เป็นฐานข้อมูลที่สร้างขึ้นด้วยวิธีการจัดเก็บและการดึงข้อมูลแบบไม่สัมพันธ์กัน ในส่วนต่อไปนี้ เราจะดูธุรกรรม NoSQL ข้อมูลจะถูกจัดเก็บไว้ในหน่วยความจำในกรณีที่ระบบล้มเหลวโดยพิจารณาจากความทนทานเป็นหลัก เป้าหมายหลักของการแยกส่วนคือเพื่อให้แน่ใจว่าการดำเนินการไม่รบกวนการทำงานอื่นๆ พร้อมกัน เมื่อเราใช้ ACID Transactions เรารับรองว่าข้อมูลของเราจะไม่เข้าสู่สถานะที่ไม่สอดคล้องกัน เนื่องจากการดำเนินการหรืองานเสร็จสมบูรณ์เพียงบางส่วนหรือไม่สามารถทำให้เสร็จได้ในขณะนั้น เรามีคุณสมบัติ ACID ที่รับประกันความถูกต้องและสอดคล้องกับฐานข้อมูลของเรา ในบทเรียนนี้ เราจะดูการทำงานของธุรกรรม ACID โดยใช้ตัวอย่างต่อไปนี้ จำเป็นต้องส่ง 50 จาก S1 ถึง S2
การทำธุรกรรมเป็นไปได้ใน Nosql หรือไม่
ใช่ ธุรกรรมเป็นไปได้ใน nosql ไม่เหมือนฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูล nosql ไม่มีสคีมาแบบตายตัว ซึ่งหมายความว่าข้อมูลสามารถจัดเก็บในรูปแบบใดก็ได้ ความยืดหยุ่นนี้ทำให้ง่ายต่อการเพิ่ม อัปเดต หรือลบข้อมูลโดยไม่ต้องแก้ไขข้อมูลที่มีอยู่
แม้ว่าฐานข้อมูล NoSQL จะมีความหมายเชิงธุรกรรมน้อยกว่าฐานข้อมูลเชิงสัมพันธ์ในบางจุด แต่ก็ยังคงรวมถึงการดำเนินการระดับปรมาณูในบางรูปแบบ หากคุณสะดวกใจที่จะใช้ Node.js หรือ Ruby/Rack แล้วล่ะก็ Heroku.com เป็นจุดเริ่มต้นที่ดี เนื่องจากฉันยังไม่ได้ดำเนินการฉันจะไม่อธิบายอย่างละเอียด คุณสมบัติ ACID ของธุรกรรมมีความสำคัญต่อประสิทธิภาพของการดำเนินการของผู้ใช้โดย DB เมื่อเครื่องมือ NoSQL ผ่อนปรนเกณฑ์ความสอดคล้องสำหรับการดำเนินงาน โดยปกติแล้ว เครื่องมือเหล่านี้จะสามารถปรับขนาดความทนทานต่อความผิดพลาดและความพร้อมใช้งานได้ง่ายขึ้น ฐานข้อมูล SQL/ACID ที่ดีคือ VoltDB ซึ่งอยู่ในหน่วยความจำ เป็นแบบคอลัมน์ และแบบกระจาย มี 'การทำธุรกรรมในแง่ดี' บางอย่างที่สามารถใช้เพื่อบรรลุสิ่งนี้ได้ แต่ฉันเชื่อว่าควรคุ้นเคยกับการรับประกันปรมาณูของ การใช้งานฐานข้อมูล (เช่น การดำเนินการเขียนและอ่านประเภทใดที่เป็นปรมาณู)
มีการสนทนาเกี่ยวกับ ธุรกรรม HBase บนอินเทอร์เน็ตหรือไม่? กรณีนี้มักเกิดขึ้นกับฐานข้อมูล NoSQL: คุณสามารถใช้สิ่งนี้ใน RDBMS ที่คุณต้องการได้ตลอดเวลา และคุณยังสามารถเก็บสิ่งดีๆ ไว้ได้ เช่น ธุรกรรม คุณสมบัติ ACID การสนับสนุน DBA เป็นต้น ในขณะที่ตระหนักถึงประโยชน์ของประสิทธิภาพและความยืดหยุ่นของ NoSQL . หากคุณใช้การเปรียบเทียบและตั้งค่า คุณสามารถใช้ธุรกรรมในแง่ดีบนโซลูชัน NoSQL
เหตุใดฐานข้อมูลเชิงสัมพันธ์จึงดีกว่าสำหรับการทำธุรกรรมมากกว่าฐานข้อมูล Nosql
เนื่องจากฐานข้อมูล NoSQL ไม่มีความสามารถในการรองรับการสืบค้นที่ซับซ้อน เช่น การรวมระหว่างตาราง จึงไม่เหมาะสำหรับ การประมวลผลธุรกรรม ตรงกันข้ามกับฐานข้อมูลเชิงสัมพันธ์ ซึ่งใช้ Normalized และ Referential Integrity เพื่อให้แน่ใจว่า Referential Integrity ฐานข้อมูล NoSQL ไม่ได้ถูกทำให้เป็นมาตรฐานเสมอไป โดยทั่วไปแล้ว ฐานข้อมูล NoSQL ไม่สามารถทำธุรกรรมแบบหลายคีย์ได้ ในกรณีส่วนใหญ่ หากข้อมูลของคุณมีโครงสร้างเป็นหลัก ฐานข้อมูล SQL เป็นตัวเลือกที่ดีที่สุด ฐานข้อมูล SQL เหมาะอย่างยิ่งสำหรับระบบที่เน้นการทำธุรกรรม เช่น เครื่องมือการจัดการลูกค้าสัมพันธ์ ซอฟต์แวร์บัญชี และแพลตฟอร์มอีคอมเมิร์ซ
ทำไม Nosql ถึงไม่ดีสำหรับการทำธุรกรรม
แม้จะมีข้อดีมากมาย แต่ฐานข้อมูล NoSQL ก็มีข้อเสีย เช่น ขาดการรองรับธุรกรรมกรด (อะตอม ความสม่ำเสมอ การแยก และความทนทาน) ในเอกสารหลายฉบับ หากการออกแบบสคีมาถูกต้อง อะตอมมิกแบบเร็กคอร์ดเดียวก็เป็นที่ยอมรับสำหรับการใช้งานที่หลากหลาย
ฐานข้อมูล NoSQL เหมาะอย่างยิ่งสำหรับการพัฒนาแอปพลิเคชันโดยไม่ต้องแปลงโครงสร้างข้อมูลในหน่วยความจำหรือเชิงสัมพันธ์ นอกจากนี้ยังไม่ได้ให้ระดับความปลอดภัยของข้อมูลที่จำเป็นตามที่บริษัทเทคโนโลยีสารสนเทศสมัยใหม่ต้องการ การจำลองข้อมูลแบบซิงโครนัสซึ่งแยกฐานข้อมูลขนาดใหญ่ออกเป็นส่วนย่อยๆ ที่จัดการได้มากขึ้น ไม่ใช่ระบบอัตโนมัติในทุกฐานข้อมูล ด้วยความช่วยเหลือของฐานข้อมูล NoSQL ข้อมูลสามารถแบ่งพาร์ติชันข้ามหลายโหนดเพื่อเลือกขนาดชุดข้อมูลที่ใหญ่ขึ้นด้วยทรัพยากรการประมวลผลที่ใหญ่ขึ้น แอปพลิเคชันสมัยใหม่ เช่น ฐานข้อมูลเชิงสัมพันธ์ ต้องการความสามารถในการปรับขนาด ความน่าเชื่อถือ และความพร้อมใช้งาน ซึ่งทั้งหมดนี้จัดการโดยฐานข้อมูลเชิงสัมพันธ์ มีทางเลือกมากมายเพื่อแก้ไขข้อบกพร่องของ NoSQL ที่แอปพลิเคชันสมัยใหม่ต้องเผชิญ
การเพิ่มขึ้นของฐานข้อมูล NoSQL ทำให้เป็นทางเลือกสำหรับแอปพลิเคชันที่ขับเคลื่อนด้วยข้อมูล สิ่งเหล่านี้มีประโยชน์ด้วยเหตุผลหลายประการ รวมถึงเวลาแฝงต่ำ ความสามารถในการปรับขนาด และประสิทธิภาพ ไม่จำเป็นต้องใช้ MongoDB สำหรับแอปพลิเคชันที่ขับเคลื่อนด้วยข้อมูล เนื่องจากธุรกรรมไม่จำเป็นเสมอไปสำหรับทีมของคุณ แต่ถ้าเป็นอย่างนั้น ก็ไม่จำเป็น
Nosql มีธุรกรรมกรดหรือไม่?
NoSQL DBMS บางตัว เช่น CouchDB ของ Apache และ Db2 ของ IBM มีระดับการปฏิบัติตามกรดที่เข้มงวดกว่ามาตรฐานอุตสาหกรรมทั่วไป อย่างไรก็ตาม แนวทาง NoSQL ในการจัดการฐานข้อมูลแตกต่างจากกฎกรดที่เข้มงวดตามที่กำหนดไว้ในบทความนี้ ด้วยเหตุนี้ จึงไม่แนะนำให้ใช้ฐานข้อมูล NoSQL สำหรับผู้ที่ต้องการความปลอดภัยสูง
Matt Turner, CTO ของ MarkLogic รับผิดชอบทีมสื่อและการผลิต งานที่เขาสนใจ ได้แก่ สื่อ ความบันเทิง และการผลิต Matt ทำงานร่วมกับลูกค้าและผู้มีโอกาสเป็นลูกค้าใน พื้นที่ NoSQL เพื่อสร้างฮับข้อมูลการปฏิบัติงาน NoSQL ขององค์กร หากคุณมี DBMS ที่ถูกต้อง คุณสามารถใช้ NoSQL กับ ACID ในโลกปัจจุบันได้
DBMS มีประโยชน์ แต่เป็นมากกว่าการรับประกันกรด มีเหตุผลอื่นนอกเหนือจากนี้
MongoDB มีคุณสมบัติที่หลากหลาย ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับแอปพลิเคชันที่ต้องการพลังการประมวลผลจำนวนมาก เซิร์ฟเวอร์มีความสามารถในการจำลองแบบและการปรับขนาดที่แข็งแกร่ง ทำให้สามารถกระจายโหลดไปยังเซิร์ฟเวอร์หลายเครื่องได้
ด้วยเหตุนี้ MongoDB จึงเป็นตัวเลือกที่ยอดเยี่ยมสำหรับผู้ที่ต้องการพื้นที่จัดเก็บข้อมูลที่ปลอดภัยซึ่งต้องเข้าถึงโดยผู้ใช้ที่หลากหลาย
Nosql ธุรกรรม
ฐานข้อมูล Transactional NoSQL ให้ความสามารถในการรองรับธุรกรรมและการรับประกันกรด ซึ่งหมายความว่าข้อมูลสามารถอ่านและเขียนในลักษณะที่สอดคล้องกัน และการเปลี่ยนแปลงข้อมูลนั้นจะเป็นแบบปรมาณูและสอดคล้องกัน ฐานข้อมูล Transactional NoSQL มักใช้ในแอปพลิเคชันที่ความสอดคล้องของข้อมูลเป็นสิ่งสำคัญ เช่น แอปพลิเคชันทางการเงิน
ธุรกรรมฐานข้อมูล Oracle Nosql
ใน Oracle NoSQL Database ธุรกรรมของ Oracle เป็นหน่วยการทำงานระดับปรมาณูเชิงตรรกะที่จำเป็นต้องมีการดำเนินการเข้าถึงฐานข้อมูลหนึ่งรายการ ทุกการดำเนินการกับข้อมูลใน Oracle NoSQL Database เกิดขึ้นในธุรกรรมเดียว จัดการโดยระบบ และดำเนินการได้ในธุรกรรมเดียวเท่านั้น
ฐานข้อมูลใดดีที่สุดสำหรับการทำธุรกรรม
หากข้อมูลของคุณมีโครงสร้างเป็นหลัก ฐานข้อมูล SQL น่าจะเป็นตัวเลือกที่ดีที่สุด ฐานข้อมูล SQL เหมาะอย่างยิ่งสำหรับระบบที่เน้นการทำธุรกรรม เช่น การจัดการลูกค้าสัมพันธ์ ซอฟต์แวร์บัญชี และแพลตฟอร์มอีคอมเมิร์ซ
ธุรกรรมกรด
คุณสมบัติหลักสี่ชุดที่กำหนดโครงสร้างการทำธุรกรรมหรือที่เรียกว่ากรด ได้แก่ อะตอม ความสม่ำเสมอ การแยกตัว และความทนทาน ธุรกรรมคือการดำเนินการฐานข้อมูลที่มีคุณสมบัติเป็นกรดเหล่านี้ และระบบธุรกรรมคือระบบที่ดำเนินการเหล่านี้ในการจัดเก็บข้อมูล
ธุรกรรมฐานข้อมูลควรประกอบด้วยชุดของคุณสมบัติของกรด (ความเป็นอะตอม ความสม่ำเสมอ การแยกตัว และความทนทาน) เพื่อรับประกันการปฏิบัติตามข้อกำหนดการเปิดเผยข้อมูลทั้งหมด ข้อมูลการทำธุรกรรม ในฐานข้อมูลคือภาพรวมของการเปลี่ยนแปลง เมื่อสร้างแอปพลิเคชันแบบกระจาย สิ่งสำคัญคือต้องเข้าใจธุรกรรม ACID DBMS ใช้วิธีการที่หลากหลายเพื่อสนับสนุนปรมาณู ในแนวทางแรก การเปลี่ยนแปลงทั้งหมดจะถูกเขียนลงในล็อกไฟล์ก่อนที่จะนำไปใช้ วิธีที่สองถือว่าหน้าฐานข้อมูลเป็นบล็อกความยาวคงที่ซึ่งแบ่งพาร์ติชันออกเป็นบล็อกขนาดเล็ก เป็นไปไม่ได้ที่จะหลีกเลี่ยงสำเนาสองหน้าระหว่างการทำธุรกรรม: หน้าปัจจุบันและหน้าเงา
คุณสมบัติการแยกเป็นประเภทของการป้องกันสำหรับเราจากสถานะที่ไม่สอดคล้องกันโดยการทำธุรกรรมตามลำดับเวลา ระบบ DBMS ส่วนใหญ่เชื่อว่าการทำธุรกรรมดำเนินไปอย่างต่อเนื่องเพื่อให้ลูกค้าของตนเห็นภาพลวงตาของสถานะสิ้นสุดเมื่อสิ้นสุดกระบวนการ ธุรกรรมบางอย่างอาจใช้เวลานาน ในขณะที่ธุรกรรมอื่น ๆ อาจเป็นระยะสั้น ทำให้ลูกค้ามีเวลารอที่สั้นลง ธุรกรรมใน DBMS สามารถแทรกระหว่างกันได้ก็ต่อเมื่อชุดของธุรกรรมที่สร้างโดย DBMS ให้ผลการดำเนินการแบบอนุกรมเป็นชุด ธุรกรรมแต่ละรายการดำเนินการกับรายการข้อมูลเดียวกัน แต่หนึ่งในนั้นจะดำเนินการสำหรับการเขียนเท่านั้น เพื่อให้ได้ความเป็นปรมาณูและความทนทาน จะใช้เทคนิคเดียวกันกับที่กล่าวถึงในหัวข้อความเป็นปรมาณู
เหตุใดการปฏิบัติตามข้อกำหนดของกรดจึงมีความสำคัญ
เนื่องจากการรับประกันที่แข็งแกร่งสี่ประการ การปฏิบัติตาม ACID จึงให้ความน่าเชื่อถือ ความถูกต้อง และคุณสมบัติที่มีค่าอื่นๆ สิ่งนี้จะถูกกล่าวถึงในรายละเอียดมากขึ้นเมื่อเราเข้าใกล้มันมากขึ้น ภาพรวมระดับสูงยังคงที่ การดำเนินการฐานข้อมูล ที่ออกแบบมาเพื่อทำงานในลักษณะที่สอดคล้องกับกรดจะต้องประสบความสำเร็จหรือล้มเหลวอย่างสม่ำเสมอในทางที่ดีและไม่ดี
คุณสมบัติของกรดคืออะไรพร้อมตัวอย่างในชีวิตจริง?
ธุรกรรม ACID เป็นธุรกรรมที่สร้างขึ้นเพื่อปกป้องชุดของคุณลักษณะต่างๆ เช่น ความเป็นปรมาณู ความสม่ำเสมอ การแยกตัว และความทนทาน โดยไม่คำนึงถึงข้อผิดพลาด ไฟฟ้าดับ หรือเหตุการณ์อื่นๆ การโอนระหว่างบัญชีธนาคารเป็นธุรกรรม ACID ในทางทฤษฎี
คุณสมบัติของกรดใน Dbms คืออะไร?
คุณสมบัติพื้นฐานและสำคัญสี่ประการของการทำธุรกรรมเรียกว่ากรดในการประมวลผลธุรกรรม ทั้งหมดนี้เกี่ยวกับสิ่งเดียวกัน: ความเป็นปรมาณู ความสม่ำเสมอ ความโดดเดี่ยว และความทนทาน
โมเดลกรดคืออะไร?
ชุดของหลักการออกแบบฐานข้อมูลที่เรียกว่า ACID สามารถใช้เพื่อปรับปรุงความน่าเชื่อถือในฐานข้อมูลธุรกิจและภารกิจที่สำคัญ