NoSql vs ฐานข้อมูลเชิงสัมพันธ์


158

เมื่อเร็ว ๆ นี้NoSQLได้รับความนิยมอย่างมาก

NoSQLมีข้อดีเหนือกว่าRDBMSแบบเดิมอย่างไรบ้าง?


คำตอบ:


123

ไม่ใช่ว่าข้อมูลทั้งหมดเป็นเชิงสัมพันธ์ สำหรับสถานการณ์เหล่านั้น NoSQL จะมีประโยชน์

ด้วยที่กล่าวว่า NoSQL หมายถึง "SQL ไม่เพียง แต่" มันไม่ได้ตั้งใจที่จะเคาะ SQL หรือแทนที่มัน

SQL มีข้อได้เปรียบที่ใหญ่มากหลายประการ:

  1. พื้นฐานทางคณิตศาสตร์ที่แข็งแกร่ง
  2. ไวยากรณ์ประกาศ
  3. ภาษาที่รู้จักกันดีใน Structured Query Language (SQL)

ผู้ที่ไม่ได้หายไป

มันเป็นความผิดพลาดที่จะคิดว่านี่เป็น / หรือการโต้เถียง NoSQL เป็นอีกทางเลือกหนึ่งที่ผู้คนควรพิจารณาเมื่อมันเหมาะสม

เอกสารสามารถเก็บไว้ในฐานข้อมูลที่ไม่เกี่ยวข้องเช่น CouchDB

บางทีอ่านนี้จะช่วยให้


10
คุณสามารถยกตัวอย่างของข้อมูลที่ไม่เกี่ยวข้องได้หรือไม่?
user496949

7
สามารถจัดเก็บเอกสารและรูปภาพภายใน RDBMS เช่นเดียวกับ SQL Server และ Oracle ได้หรือไม่ ถ้าอย่างนั้นทำไมต้อง NoSQL
user496949

2
ข้อมูลกึ่งโครงสร้างเป็นหนึ่งในคลาสดังกล่าว มันมี XML, อีเมล์, JSON, ฯลฯ ดูหน้าวิกิพีเดียมัน กฎทั่วไปคือโครงสร้างอยู่ที่นั่น แต่มีการกำหนดอย่างเข้มงวดและขยายได้แบบไดนามิก อีกชั้นหนึ่งคือ "ข้อมูลธรรมชาติ": นวนิยายภาพมีทั้งไม่มีการแนบข้อมูลเมตา
ฉันให้คำตอบ CRAP

2
SELECT blob FROM images WHERE blob CONTAINS('red car')ดีที่คุณไม่สามารถทำได้ ดังนั้นในขณะที่คุณสามารถจัดเก็บข้อมูลดิบในฐานข้อมูลคุณไม่สามารถค้นหาได้โดยไม่ต้องแนบข้อมูลเมตา โมดูลค้นหาข้อความแบบเต็มในระบบ RDBMS เชื่อมช่องว่างกึ่งโครงสร้างบางส่วน
ฉันให้คำตอบ CRAP

1
@duffymo: เอกสารไม่ใช่ "ไม่ใช่เชิงสัมพันธ์" เอกสารมักถูกเก็บไว้ใน SQL DBMS และคุณไม่จำเป็นต้องใช้ NOSQL DBMS ในความเป็นจริงฐานข้อมูล NOSQL มักจะใช้ตัวแบบข้อมูลที่น้อยกว่าทั่วไปและ จำกัด ในการใช้งานมากกว่าตัวแบบเชิงสัมพันธ์ เช่นฐานข้อมูลกราฟ ประเภทของข้อมูลที่จัดเก็บไม่ได้อธิบายถึงประโยชน์ใด ๆ ของ NOSQL
nvogel

98

ประวัติดูเหมือนจะเป็นดังนี้:

  1. Google ต้องการเลเยอร์ที่เก็บข้อมูลสำหรับดัชนีการค้นหาแบบกลับด้าน พวกเขาคิดว่า RDBMS แบบดั้งเดิมจะไม่ตัดมัน ดังนั้นพวกเขาจึงใช้ที่เก็บข้อมูล NoSQL, BigTable ที่ด้านบนของระบบไฟล์ GFS ส่วนสำคัญคือเครื่องจักรฮาร์ดแวร์สินค้าโภคภัณฑ์ราคาถูกหลายพันเครื่องให้ความเร็วและความซ้ำซ้อน

  2. ทุกคนตระหนักถึงสิ่งที่ Google เพิ่งทำ

  3. ทฤษฎีบท Brewers CAPได้รับการพิสูจน์แล้ว ระบบการใช้งาน RDBMS ทั้งหมดเป็นระบบ CA ผู้คนเริ่มเล่นกับระบบ CP และ AP เช่นกัน ร้านค้า K / Vนั้นง่ายกว่ามากดังนั้นจึงเป็นยานพาหนะหลักสำหรับการวิจัย

  4. ซอฟต์แวร์ที่เป็นระบบบริการโดยทั่วไปไม่ได้จัดเก็บ SQL เหมือน ดังนั้นผู้คนจึงให้ความสนใจในร้านค้าประเภท NoSQL มากขึ้น

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

C - ความสอดคล้อง
A - สถานะ
P - ความทนทานต่อการแบ่งพาร์ติชัน
K / V - คีย์ / ค่า


10
CAP, CP, AP, K / V คืออะไร
knownasilya

3
ค้นหาทฤษฎีบท CAP บนวิกิพีเดีย CA และ CP เกิดขึ้นจากที่นั่น K / V ย่อมาจากคีย์ / ค่าการแมป จำกัด (กระจาย) จากคีย์ไปเป็นค่า
ฉันให้คำตอบ CRAP

" ทุกคนต่างตระหนักถึงสิ่งที่ Google เพิ่งทำ " lol ดูเหมือนจะเป็นคำตอบให้ฉันสกอตแลนด์ (aka ไม่ CRAP)
ruffin

38

NoSQL นั้นดีกว่า RDBMS เนื่องจากเหตุผล / ความเหมาะสมของ NoSQL ดังต่อไปนี้

  1. รองรับข้อมูลกึ่งโครงสร้างและข้อมูลระเหย
  2. มันไม่มีสคีมา
  3. ปริมาณข้อมูลที่อ่าน / เขียนสูงมาก
  4. ความยืดหยุ่นในแนวนอนสามารถทำได้อย่างง่ายดาย
  5. จะรองรับ Bigdata ในปริมาณของ Terra Bytes & Peta Bytes
  6. ให้การสนับสนุนที่ดีสำหรับเครื่องมือวิเคราะห์ที่อยู่ด้านบนของ Bigdata
  7. สามารถโฮสต์ในเครื่องฮาร์ดแวร์ราคาถูก
  8. ตัวเลือกการแคชในหน่วยความจำพร้อมใช้งานเพื่อเพิ่มประสิทธิภาพของคิวรี
  9. รอบการพัฒนาที่เร็วขึ้นสำหรับนักพัฒนา

แก้ไข:

เพื่อตอบ "ทำไม RDBMS ไม่สามารถปรับขนาดได้" โปรดดูที่RDBMS Overheads pdf ที่เขียนโดย Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden และ Michael Stonebraker

RDBMS มีความท้าทายในการจัดการปริมาณข้อมูลขนาดใหญ่ของเทราไบต์และ Peta ไบต์ แม้ว่าคุณจะมีอาร์เรย์ที่ซ้ำซ้อนของดิสก์อิสระ / ไม่แพง (RAID) และการทำลายข้อมูล แต่ก็ไม่ได้ปรับขนาดให้เหมาะสมสำหรับปริมาณข้อมูลจำนวนมาก คุณต้องการฮาร์ดแวร์ที่มีราคาแพงมาก

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

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

Latching : ในฐานข้อมูลแบบมัลติเธรดโครงสร้างข้อมูลจำนวนมากจะต้องถูกสลักก่อนที่จะสามารถเข้าถึงได้ การลบคุณลักษณะนี้และไปที่วิธีการเธรดเดียวมีผลกระทบต่อประสิทธิภาพที่สังเกตได้

การจัดการบัฟเฟอร์ : ระบบฐานข้อมูลหน่วยความจำหลักไม่จำเป็นต้องเข้าถึงหน้าเว็บผ่านบัฟเฟอร์พูลกำจัดระดับการอ้อมในทุก ๆ การเข้าถึงข้อมูล

นี่ไม่ได้หมายความว่าเราต้องใช้ NoSQL บน SQL

อย่างไรก็ตาม RDBMS นั้นดีกว่า NoSQL ด้วยเหตุผล / คุณสมบัติต่อไปนี้ของ RDBMS

  1. ธุรกรรมที่มีคุณสมบัติกรด - Atomicity, Consistency, Isolation & Durability
  2. การปฏิบัติตาม Strong Schemaของข้อมูลที่กำลังเขียน / อ่าน
  3. การจัดการแบบสอบถามแบบเรียลไทม์ (ในกรณีที่ขนาดข้อมูล <10 ​​Tera ไบต์)
  4. การดำเนินการค้นหาที่ซับซ้อนที่เกี่ยวข้องกับการเข้าร่วม & กลุ่มตามข้อ

เราต้องใช้ RDBMS (SQL) และ NoSQL (ไม่เพียง SQL) ขึ้นอยู่กับกรณีธุรกิจและข้อกำหนด


2
เป็นที่น่าสังเกตว่าฐานข้อมูล NoSQL บางตัวรองรับธุรกรรม ACID
Dave Cassel

15

NOSQL ไม่มีข้อได้เปรียบพิเศษเหนือโมเดลฐานข้อมูลเชิงสัมพันธ์ NOSQL จัดการกับข้อ จำกัด บางอย่างของ SQL DBMS ปัจจุบัน แต่ไม่ได้บ่งบอกถึงความสามารถใหม่ ๆ ที่มีพื้นฐานเหนือตัวแบบข้อมูลก่อนหน้านี้

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


4
ดูเหมือนว่าในการประชุม O'Reilly Strata เมื่อเร็ว ๆ นี้ Mark Madsen ได้ประกาศการตีความใหม่ของ "NoSQL" ในประวัติศาสตร์ของฐานข้อมูลโดยไม่มีการแทนที่ "ไม่ใช่แค่ SQL" ตอนนี้: "ไม่, SQL" ;-)
Lukas Eder

4

RDBMSมุ่งเน้นที่ความสัมพันธ์มากขึ้นและNoSQL จะเน้นที่การจัดเก็บมากขึ้น

คุณสามารถพิจารณาใช้NoSQLเมื่อRDBMSของคุณถึงคอขวด NoSQLทำให้RDBMSมีความยืดหยุ่นมากขึ้น


4

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


3

หากคุณต้องการประมวลผลข้อมูลจำนวนมากที่มีประสิทธิภาพสูง

หรือ

หากแบบจำลองข้อมูลไม่ได้ถูกกำหนดไว้ล่วงหน้า

แล้วก็

ฐานข้อมูล NoSQL เป็นตัวเลือกที่ดีกว่า


2

เพียงเพิ่มข้อมูลทั้งหมดที่ให้ไว้ข้างต้น

NoSql ข้อดี:

1) NoSQL นั้นดีถ้าคุณต้องการที่จะผลิตพร้อมอย่างรวดเร็วเนื่องจากมันรองรับสถาปัตยกรรม schema-less และ object-oriented

2) NoSql db's มีความสอดคล้องกันในที่สุดซึ่งในภาษาที่เรียบง่ายหมายความว่าพวกเขาจะไม่ให้การล็อคข้อมูล (เอกสาร) ใด ๆ เช่นในกรณีของ RDBMS และมันหมายความว่าอะไรคือสแน็ปช็อตข้อมูลล่าสุดที่มีอยู่เสมอ .

3) ใช้กลยุทธ์ MVCC (การควบคุมหลายมุมมองพร้อมกัน) ในการดูแลและสร้างสแน็ปช็อตของข้อมูล (เอกสาร)

4) หากคุณต้องการมีการจัดทำดัชนีข้อมูลคุณสามารถสร้างมุมมองซึ่งจะจัดทำดัชนีข้อมูลโดยอัตโนมัติตามคำจำกัดความมุมมองที่คุณให้ไว้

ข้อเสีย NoSql:

1) ไม่เหมาะสำหรับการใช้งานธุรกรรมขนาดใหญ่อย่างแน่นอนเนื่องจากในที่สุดมันสอดคล้องกันและไม่รองรับคุณสมบัติกรด

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


1

จากmongodb.com :

ฐานข้อมูล NoSQL แตกต่างจากเทคโนโลยีที่เก่ากว่าและสัมพันธ์ในสี่ด้านหลัก:

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

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

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.