ทำไม Nosql ถึงไม่เป็นกรด

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

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

ฐานข้อมูล NoSQL ไม่รองรับกรด สภาวะของใจที่สม่ำเสมอในลักษณะที่อ่อนได้ อ่อนนุ่ม และสม่ำเสมอ. ดังนั้น หาก Amazon ใช้คุณลักษณะนี้ คุณจะสามารถซื้อหนังสือจากพวกเขาได้ตลอดเวลา แต่พวกเขาจะไม่สามารถคาดเดาได้ว่าหนังสือจะเต็มเมื่อใด มีวัตถุประสงค์เพื่อหักล้างทฤษฎีบทของบรูเออร์

Oracle, MySQL, PostgreSQL และ Microsoft SQL ล้วนสามารถรองรับ คุณสมบัติของกรด ในการทำธุรกรรมได้ มาดูเรื่องราวของ NoSQL ทั่วไปกัน

สามารถใช้ฐานข้อมูล NoSQL เพื่อเก็บ ข้อมูลกรด ในการออกแบบเดิม ระบบไม่ได้รวมคอมโพเนนต์ 'ระบบการจัดการ' ของ DBMS

Nosql มีคุณสมบัติเป็นกรดหรือไม่?

รูปภาพโดย – https://dotnettutorials.net

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

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


Nosql เป็นกรดหรือเบส?

รูปภาพโดย – https://infodecisionnel.com

คุณสมบัติ ACID (Atomicity, Consistency, Isolation และ Durability) ของฐานข้อมูลเชิงสัมพันธ์จะตามด้วยคุณสมบัติ ACID (Attribution, Consistency, Isolation และ Durability) ของฐานข้อมูล NoSQL

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

ฐานข้อมูล NoSQL เป็นฐานข้อมูลประเภทใหม่ที่ไม่ต้องพึ่งพาธุรกรรม ACID (นิยามอย่างกว้างๆ ว่าพร้อมใช้งาน สถานะอ่อน และความสอดคล้องในท้ายที่สุด) โดยทั่วไปข้อมูลจะพร้อมใช้งานในความหมายทั่วไป หากคำขอไม่ได้รับการตอบรับ อาจเป็นไปได้ว่าคำขอนั้นจะถูกปฏิเสธ เป็น ระบบฐานข้อมูล ประเภททั่วไปที่ทำธุรกรรม ACID รองรับ MySQL, PostgreSQL, SQLite, SQL Server และฐานข้อมูลฐานข้อมูลอื่นๆ ฐานข้อมูลเชิงวัตถุเป็นฐานข้อมูลรูปแบบใหม่ที่ไม่ต้องการการประมวลผลธุรกรรมที่เป็นกรด อย่างไรก็ตาม เมื่อได้รับการตอบกลับคำขอ การตอบกลับไม่สามารถรับประกันความพร้อมใช้งานของข้อมูลได้ หากไม่สามารถรับข้อมูลได้ จะมีการจัดเตรียมให้ในบางจุด ในสถานะซอฟต์ การอัปเดตข้อมูลจะไม่ถาวร คุณลักษณะนี้ช่วยให้สามารถอัปเดตข้อมูลได้อย่างต่อเนื่อง ความสอดคล้องเป็นสิ่งสำคัญ: ตรวจสอบให้แน่ใจว่าข้อมูลเป็นปัจจุบันเสมอแม้ว่าจะมีการอัปเดตจำนวนมากก็ตาม

การสนับสนุนคุณสมบัติของกรดของ Mongobb

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

ทำไม Mongob ถึงไม่เป็นกรด?

MongoDB ไม่ใช่กรดเพราะไม่รองรับธุรกรรม การทำธุรกรรมเป็นส่วนสำคัญของการ ปฏิบัติตามกรด MongoDB ยังไม่รองรับคีย์ต่างประเทศ ซึ่งเป็นอีกส่วนที่สำคัญของการปฏิบัติตามกรด

MongoDB 4.0 เพิ่มธุรกรรม ACID หลายเอกสาร PostgreSQL มี การสนับสนุนการปฏิบัติตามข้อกำหนดของกรดดั้งเดิม ในขณะที่ MongoDB ไม่สามารถทำได้มาเป็นเวลานาน เราไม่ชัดเจนว่า MongoDB ให้ความสำคัญกับ ACID เป็นอันดับต้น ๆ หรือผู้ใช้สนใจหรือไม่ MongoDB เวอร์ชัน 4.0 มีการรับประกันธุรกรรม ACID หลายเอกสาร จากข้อมูลของ Eliot Horowitz แบบจำลองเอกสารช่วยลดความจำเป็นในการทำธุรกรรม ACID Grigori Melnik รองประธานฝ่ายผลิตภัณฑ์ เซิร์ฟเวอร์ และเครื่องมือระดับองค์กร เชื่อว่านี่เป็นวิธีใหม่ในการเขียนถึง MongoDB ในรุ่น V4.2 ของ MongoDB การทำธุรกรรมจะเป็นไปได้ในหลายๆ การใช้งานของมัลติชาร์ด

แม้ว่า MongoDB จะรองรับเอ็นจิ้นการจัดเก็บข้อมูลจำนวนหนึ่งในอดีต แต่มีเพียง WiredTiger เท่านั้นที่สามารถใช้สำหรับธุรกรรมได้ เหตุใดกรดจึงมีความสำคัญต่อ MongoDB เราไม่แน่ใจว่าเราจะพูดอะไรเกี่ยวกับความมุ่งมั่นของ EDB ต่อการทำธุรกรรม ACID แต่เราสามารถบอกคุณได้อย่างหนึ่ง: การทำธุรกรรม ACID นั้นจริงจังมาก แม้จะอยู่ในสถานะ No.7 แต่ความจริงก็คือการใช้ภาษาคิวรีมาตรฐานเช่น SQL ยังคงให้คุณค่าที่สำคัญ เมื่อคุณพัฒนาแอปพลิเคชันมากขึ้นเพื่อเข้าถึงข้อมูลของคุณ คุณจะถูกบังคับให้สร้างในรูปแบบที่ขยายใหญ่ขึ้น ซึ่งจะเพิ่มความซับซ้อน PostgreSQL ในฐานะฐานข้อมูลอเนกประสงค์ที่ได้รับความนิยมสูงสุด ยังคงเป็นตัวเลือกที่ดีที่สุด

Mongodb เป็นไปตามกรดอย่างเต็มที่หรือไม่?

ในทางกลับกัน ธุรกรรม ACID แบบหลายเครื่องมือพร้อมใช้งานสำหรับกรณีการใช้งานที่ต้องการ พวกเขาชื่นชมความยืดหยุ่นในการสร้างแบบจำลองข้อมูลในแบบที่ไม่จำเป็นต้องมีการทำธุรกรรมหลายเอกสาร แต่เป็นไปได้เมื่อทำเช่นนั้น

Nosql รองรับกรดหรือไม่

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

ฐานข้อมูล Nosql: โมเดลพื้นฐานมีความทนทานและสม่ำเสมอมากกว่า

ฐานข้อมูล Nosql ส่วนใหญ่ไม่รองรับคุณสมบัติของกรด โดยเลือกใช้โมเดลพื้นฐานที่สามารถทนต่อการใช้งานในทางที่ผิดและทนทานกว่า