เมื่อเร็ว ๆ นี้NoSQLได้รับความนิยมอย่างมาก
NoSQLมีข้อดีเหนือกว่าRDBMSแบบเดิมอย่างไรบ้าง?
เมื่อเร็ว ๆ นี้NoSQLได้รับความนิยมอย่างมาก
NoSQLมีข้อดีเหนือกว่าRDBMSแบบเดิมอย่างไรบ้าง?
คำตอบ:
ไม่ใช่ว่าข้อมูลทั้งหมดเป็นเชิงสัมพันธ์ สำหรับสถานการณ์เหล่านั้น NoSQL จะมีประโยชน์
ด้วยที่กล่าวว่า NoSQL หมายถึง "SQL ไม่เพียง แต่" มันไม่ได้ตั้งใจที่จะเคาะ SQL หรือแทนที่มัน
SQL มีข้อได้เปรียบที่ใหญ่มากหลายประการ:
ผู้ที่ไม่ได้หายไป
มันเป็นความผิดพลาดที่จะคิดว่านี่เป็น / หรือการโต้เถียง NoSQL เป็นอีกทางเลือกหนึ่งที่ผู้คนควรพิจารณาเมื่อมันเหมาะสม
เอกสารสามารถเก็บไว้ในฐานข้อมูลที่ไม่เกี่ยวข้องเช่น CouchDB
บางทีอ่านนี้จะช่วยให้
SELECT blob FROM images WHERE blob CONTAINS('red car')
ดีที่คุณไม่สามารถทำได้ ดังนั้นในขณะที่คุณสามารถจัดเก็บข้อมูลดิบในฐานข้อมูลคุณไม่สามารถค้นหาได้โดยไม่ต้องแนบข้อมูลเมตา โมดูลค้นหาข้อความแบบเต็มในระบบ RDBMS เชื่อมช่องว่างกึ่งโครงสร้างบางส่วน
ประวัติดูเหมือนจะเป็นดังนี้:
Google ต้องการเลเยอร์ที่เก็บข้อมูลสำหรับดัชนีการค้นหาแบบกลับด้าน พวกเขาคิดว่า RDBMS แบบดั้งเดิมจะไม่ตัดมัน ดังนั้นพวกเขาจึงใช้ที่เก็บข้อมูล NoSQL, BigTable ที่ด้านบนของระบบไฟล์ GFS ส่วนสำคัญคือเครื่องจักรฮาร์ดแวร์สินค้าโภคภัณฑ์ราคาถูกหลายพันเครื่องให้ความเร็วและความซ้ำซ้อน
ทุกคนตระหนักถึงสิ่งที่ Google เพิ่งทำ
ทฤษฎีบท Brewers CAPได้รับการพิสูจน์แล้ว ระบบการใช้งาน RDBMS ทั้งหมดเป็นระบบ CA ผู้คนเริ่มเล่นกับระบบ CP และ AP เช่นกัน ร้านค้า K / Vนั้นง่ายกว่ามากดังนั้นจึงเป็นยานพาหนะหลักสำหรับการวิจัย
ซอฟต์แวร์ที่เป็นระบบบริการโดยทั่วไปไม่ได้จัดเก็บ SQL เหมือน ดังนั้นผู้คนจึงให้ความสนใจในร้านค้าประเภท NoSQL มากขึ้น
ฉันคิดว่าส่วนใหญ่ของการออกสามารถเกี่ยวข้องกับประวัติศาสตร์นี้ การปรับขนาดของ Google ได้นำความคิดใหม่ ๆ มาที่ Google และคนอื่น ๆ ก็ทำตามความเหมาะสมเพราะนี่เป็นทางออกเดียวที่พวกเขารู้ถึงปัญหาการปรับขนาดในขณะนี้ ดังนั้นคุณยินดีที่จะทำใหม่ทุกอย่างรอบ ๆ แนวคิดฐานข้อมูลแบบกระจายของ Google เพราะเป็นวิธีเดียวที่จะขยายขนาดที่เกินขนาดที่กำหนด
C - ความสอดคล้อง
A - สถานะ
P - ความทนทานต่อการแบ่งพาร์ติชัน
K / V - คีย์ / ค่า
NoSQL นั้นดีกว่า RDBMS เนื่องจากเหตุผล / ความเหมาะสมของ NoSQL ดังต่อไปนี้
แก้ไข:
เพื่อตอบ "ทำไม RDBMS ไม่สามารถปรับขนาดได้" โปรดดูที่RDBMS Overheads pdf ที่เขียนโดย Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden และ Michael Stonebraker
RDBMS มีความท้าทายในการจัดการปริมาณข้อมูลขนาดใหญ่ของเทราไบต์และ Peta ไบต์ แม้ว่าคุณจะมีอาร์เรย์ที่ซ้ำซ้อนของดิสก์อิสระ / ไม่แพง (RAID) และการทำลายข้อมูล แต่ก็ไม่ได้ปรับขนาดให้เหมาะสมสำหรับปริมาณข้อมูลจำนวนมาก คุณต้องการฮาร์ดแวร์ที่มีราคาแพงมาก
การบันทึก : การรวบรวมบันทึกการติดตามและการติดตามการเปลี่ยนแปลงทั้งหมดในโครงสร้างฐานข้อมูลทำให้ประสิทธิภาพช้าลง การบันทึกอาจไม่จำเป็นหากการกู้คืนไม่ใช่ข้อกำหนดหรือหากมีการกู้คืนได้ด้วยวิธีอื่น (เช่นไซต์อื่น ๆ ในเครือข่าย)
การล็อก : การล็อกแบบสองเฟสแบบดั้งเดิมมีค่าใช้จ่ายที่มากพอสมควรเนื่องจากการเข้าถึงโครงสร้างฐานข้อมูลทั้งหมดจะถูกควบคุมโดยนิติบุคคลที่แยกต่างหากคือตัวจัดการการล็อค
Latching : ในฐานข้อมูลแบบมัลติเธรดโครงสร้างข้อมูลจำนวนมากจะต้องถูกสลักก่อนที่จะสามารถเข้าถึงได้ การลบคุณลักษณะนี้และไปที่วิธีการเธรดเดียวมีผลกระทบต่อประสิทธิภาพที่สังเกตได้
การจัดการบัฟเฟอร์ : ระบบฐานข้อมูลหน่วยความจำหลักไม่จำเป็นต้องเข้าถึงหน้าเว็บผ่านบัฟเฟอร์พูลกำจัดระดับการอ้อมในทุก ๆ การเข้าถึงข้อมูล
นี่ไม่ได้หมายความว่าเราต้องใช้ NoSQL บน SQL
อย่างไรก็ตาม RDBMS นั้นดีกว่า NoSQL ด้วยเหตุผล / คุณสมบัติต่อไปนี้ของ RDBMS
เราต้องใช้ RDBMS (SQL) และ NoSQL (ไม่เพียง SQL) ขึ้นอยู่กับกรณีธุรกิจและข้อกำหนด
NOSQL ไม่มีข้อได้เปรียบพิเศษเหนือโมเดลฐานข้อมูลเชิงสัมพันธ์ NOSQL จัดการกับข้อ จำกัด บางอย่างของ SQL DBMS ปัจจุบัน แต่ไม่ได้บ่งบอกถึงความสามารถใหม่ ๆ ที่มีพื้นฐานเหนือตัวแบบข้อมูลก่อนหน้านี้
NOSQL หมายถึงไม่มีSQL (หรือ "ไม่เพียง SQL") แต่นั่นไม่ได้หมายความว่าไม่มีความสัมพันธ์กัน โดยหลักการแล้วฐานข้อมูลเชิงสัมพันธ์จะทำให้โซลูชัน NOSQL ดีมาก - เป็นเพียงแค่ว่าไม่มีชุดผลิตภัณฑ์ NOSQL ปัจจุบันที่ใช้โมเดลเชิงสัมพันธ์
RDBMSมุ่งเน้นที่ความสัมพันธ์มากขึ้นและNoSQL จะเน้นที่การจัดเก็บมากขึ้น
คุณสามารถพิจารณาใช้NoSQLเมื่อRDBMSของคุณถึงคอขวด NoSQLทำให้RDBMSมีความยืดหยุ่นมากขึ้น
ประโยชน์ที่ใหญ่ที่สุดของ NoSQL กว่า RDBMS คือScalability
ฐานข้อมูล NoSQL สามารถขยายไปยังหลาย ๆ โหนดได้อย่างง่ายดาย แต่สำหรับ RDBMS มันยากมาก
ความสามารถในการปรับขนาดไม่เพียงช่วยให้คุณมีพื้นที่เก็บข้อมูลมากขึ้น แต่ยังมีประสิทธิภาพที่สูงขึ้นเนื่องจากโฮสต์จำนวนมากทำงานในเวลาเดียวกัน
หากคุณต้องการประมวลผลข้อมูลจำนวนมากที่มีประสิทธิภาพสูง
หรือ
หากแบบจำลองข้อมูลไม่ได้ถูกกำหนดไว้ล่วงหน้า
แล้วก็
ฐานข้อมูล NoSQL เป็นตัวเลือกที่ดีกว่า
เพียงเพิ่มข้อมูลทั้งหมดที่ให้ไว้ข้างต้น
NoSql ข้อดี:
1) NoSQL นั้นดีถ้าคุณต้องการที่จะผลิตพร้อมอย่างรวดเร็วเนื่องจากมันรองรับสถาปัตยกรรม schema-less และ object-oriented
2) NoSql db's มีความสอดคล้องกันในที่สุดซึ่งในภาษาที่เรียบง่ายหมายความว่าพวกเขาจะไม่ให้การล็อคข้อมูล (เอกสาร) ใด ๆ เช่นในกรณีของ RDBMS และมันหมายความว่าอะไรคือสแน็ปช็อตข้อมูลล่าสุดที่มีอยู่เสมอ .
3) ใช้กลยุทธ์ MVCC (การควบคุมหลายมุมมองพร้อมกัน) ในการดูแลและสร้างสแน็ปช็อตของข้อมูล (เอกสาร)
4) หากคุณต้องการมีการจัดทำดัชนีข้อมูลคุณสามารถสร้างมุมมองซึ่งจะจัดทำดัชนีข้อมูลโดยอัตโนมัติตามคำจำกัดความมุมมองที่คุณให้ไว้
ข้อเสีย NoSql:
1) ไม่เหมาะสำหรับการใช้งานธุรกรรมขนาดใหญ่อย่างแน่นอนเนื่องจากในที่สุดมันสอดคล้องกันและไม่รองรับคุณสมบัติกรด
2) นอกจากนี้ยังสร้างสแน็ปช็อตหลาย ๆ อัน (แก้ไข) ข้อมูลของคุณ (เอกสาร) เนื่องจากใช้วิธีการ MVCC สำหรับการควบคุมการเกิดพร้อมกันซึ่งเป็นผลมาจากการที่พื้นที่ได้รับการบริโภคเร็วกว่าก่อนที่จะทำการบดอัด การตอบสนองของแอปพลิเคชันเมื่อข้อมูลและธุรกรรมในแอปพลิเคชันของคุณเติบโตขึ้น หากต้องการตอบโต้คุณสามารถปรับขนาดโหนดในแนวนอนได้ แต่จะต้องเสียค่าใช้จ่ายสูงกว่าเมื่อเปรียบเทียบฐานข้อมูล sql
จากmongodb.com :
ฐานข้อมูล NoSQL แตกต่างจากเทคโนโลยีที่เก่ากว่าและสัมพันธ์ในสี่ด้านหลัก:
ตัวแบบข้อมูล : ฐานข้อมูล NoSQL ช่วยให้คุณสร้างแอปพลิเคชันโดยไม่ต้องกำหนดสคีมาก่อนซึ่งแตกต่างจากฐานข้อมูลเชิงสัมพันธ์ซึ่งทำให้คุณกำหนดสคีมาของคุณก่อนที่คุณจะสามารถเพิ่มข้อมูลใด ๆ ลงในระบบ ไม่มีสกีมาที่กำหนดไว้ล่วงหน้าทำให้ฐานข้อมูล NoSQL ง่ายต่อการอัปเดตมากขึ้นเมื่อข้อมูลและข้อกำหนดของคุณเปลี่ยนไป
โครงสร้างข้อมูล : ฐานข้อมูลเชิงสัมพันธ์ถูกสร้างขึ้นในยุคที่ข้อมูลมีโครงสร้างที่เป็นธรรมและชัดเจนโดยความสัมพันธ์ของพวกเขา ฐานข้อมูล NoSQL ถูกออกแบบมาเพื่อจัดการข้อมูลที่ไม่มีโครงสร้าง (เช่นข้อความโพสต์โซเชียลมีเดียวิดีโออีเมล) ซึ่งประกอบด้วยข้อมูลจำนวนมากที่มีอยู่ในปัจจุบัน
การปรับขนาด : มันถูกกว่ามากในการปรับขนาดฐานข้อมูล NoSQL กว่าฐานข้อมูลเชิงสัมพันธ์เพราะคุณสามารถเพิ่มความจุได้โดยปรับขนาดเซิร์ฟเวอร์สินค้าโภคภัณฑ์ราคาถูก ในทางกลับกันฐานข้อมูลเชิงสัมพันธ์นั้นต้องการเซิร์ฟเวอร์เดียวเพื่อโฮสต์ฐานข้อมูลทั้งหมดของคุณ คุณต้องซื้อเซิร์ฟเวอร์ที่ใหญ่กว่าและมีราคาแพงกว่า
รูปแบบการพัฒนา : ฐานข้อมูล NoSQL เป็นโอเพ่นซอร์สในขณะที่ฐานข้อมูลเชิงสัมพันธ์มักจะปิดแหล่งที่มาพร้อมกับค่าธรรมเนียมใบอนุญาตที่ใช้ในการใช้ซอฟต์แวร์ของพวกเขา ด้วย NoSQL คุณสามารถเริ่มต้นโครงการได้โดยไม่ต้องลงทุนจำนวนมากในเรื่องค่าซอฟท์แวร์ล่วงหน้า