เมื่อใดจะมีคนใช้ MongoDB (หรือคล้ายกัน) ผ่าน DBMS เชิงสัมพันธ์


134

ฉันสับสนเล็กน้อยเกี่ยวกับสิ่ง NoSQL ทั้งหมดและเช่นนั้น เมื่อใดที่คุณจะเลือกใช้บางสิ่งเช่น MongoDB เหนือสิ่งอื่นเช่น Oracle หรือ MySQL ฉันไม่เข้าใจ "ความแตกต่าง" เท่าที่มีการใช้งานระหว่างพวกเขา

จากความเข้าใจของฉันฐานข้อมูลประเภท NoSQL ไม่ได้หมายถึงการแทนที่ RDBMS แต่สิ่งที่พวกเขาตั้งใจทำ?


คุณอ่านอะไรมา คุณช่วยเสนอราคาหรือลิงค์หรือพื้นหลังให้เราได้ไหม? เราไม่รู้ว่าคุณรู้มากแค่ไหน - หรือไม่รู้
S.Lott

3
จนกว่า / จนกว่าพวกเขาจะถูกย้ายที่นี่มีคำถามที่คล้ายกันหลายอย่างในStackOverflowรวมถึงเมื่อใดที่จะใช้ MongoDB หรือระบบฐานข้อมูลเชิงเอกสารอื่น ๆ ?
นิโคล

1
มันเป็นเว็บระดับmongodb-is-web-scale.com / s
Froome

3
เยาะเย้ย: เพราะมันเป็นคำโฆษณาและหลายคนชอบที่จะติดตาม hype
Sjoerd

@ ก้าว: ฉันคิดว่ามันยากที่จะเอาชนะโพสต์นี้
Robert Harvey

คำตอบ:


34

ฉันเคยใช้ CouchDB มาก่อนสำหรับโครงการสัตว์เลี้ยงสามโครงการ

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

เหตุผลหลักที่ฉันเลือกสิ่งนี้เช่น MSSQL หรือ MySQL คือความยืดหยุ่นที่คุณได้รับเมื่อใช้งาน ไม่มีสคีมาแบบแข็ง หากสามเดือนที่ผ่านมาคุณจำเป็นต้องมีตารางเพื่อให้มีฟิลด์พิเศษและนี่และสิ่งนั้นคุณเพียงแค่เปลี่ยนมันและมันจะกระเพื่อมจากที่นั่นออกมา

ฉันใช้Beginning CouchDBโดย Apress เพื่อเรียนรู้วิธีใช้

ตัวอย่างเช่น CouchDB ใช้ json เพื่อสื่อสารกับ / จากฐานข้อมูล หากภาษาของคุณสามารถใช้ข้อมูล POST ได้คุณสามารถใช้เพื่อสื่อสารกับฐานข้อมูลได้

อ่านเพิ่มเติม: เหตุใดฉันจึงควรใช้ฐานข้อมูลตามเอกสารแทนฐานข้อมูลเชิงสัมพันธ์ บน StackOverflow


31
ตัวอย่างสองตัวอย่างแรกของคุณดูเหมือนจะเป็นโดเมนที่ดีสำหรับ DBMS เชิงสัมพันธ์แบบดั้งเดิม
Jonas

4
@yati: แอปพลิเคชันประเภทนี้ฟังดูคล้ายกับ StackOverflow.com และฉันคิดว่ามันใช้งานได้ดีมากกับฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม
Jonas

4
@yatisagade: ฉันไม่ได้พูดถึงเว็บไซต์โซเชียลที่มีพลวัต แต่โน้ตเล็ก ๆ น้อย ๆ ที่เกิดแอปและระบบไมโครบล็อก
Jonas

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

12
คำตอบนี้ดูเหมือนจะบอกว่าสคีมาของฐานข้อมูลเชิงสัมพันธ์ไม่สามารถเปลี่ยนแปลงได้ ฉันไม่สามารถเข้าใจจำนวนของความเข้าใจผิดที่อาจทำให้ใครบางคนเชื่อสิ่งนี้ มันเป็นเรื่องเล็กน้อยที่จะเพิ่มคอลัมน์ใหม่ในฐานข้อมูลเชิงสัมพันธ์ โดยทั่วไปแล้วจะมี UI ที่ดีหรือถ้าคุณต้องการสคริปต์มันสามารถทำได้ในคำสั่ง SQL เดียว
JacquesB

24

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

ข้อดี:

  • MongoDB มีเวลาแฝงที่ต่ำกว่าต่อข้อความค้นหา & ใช้เวลา CPU น้อยลงต่อข้อความค้นหาเนื่องจากมันทำงานได้น้อยลงมาก (เช่นไม่มีตัวเชื่อมธุรกรรม) เป็นผลให้สามารถจัดการกับโหลดที่สูงขึ้นในแง่ของการค้นหาต่อวินาทีและมักจะถูกใช้หากคุณมีจำนวนผู้ใช้จำนวนมาก
  • MongoDB นั้นง่ายต่อการหักลบ (ใช้ในคลัสเตอร์)เพราะไม่ต้องกังวลเกี่ยวกับธุรกรรมและความสอดคล้อง
  • MongoDB มีความเร็วในการเขียนที่เร็วขึ้นเนื่องจากไม่ต้องกังวลกับธุรกรรมหรือการย้อนกลับ (และไม่ต้องกังวลเกี่ยวกับการล็อค)
  • MongoDB ไม่มีสคีมาในกรณีที่คุณมีกรณีการใช้งานพิเศษที่สามารถใช้ประโยชน์จากสิ่งนั้น

จุดด้อย:

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

คะแนนมักเข้าใจผิด:

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

2
ฉันจะเพิ่มสิ่งใหญ่โตที่ขาดไปในการอภิปราย NoSQL vs RDBMS มากมาย: ฐานข้อมูล NoSQL นั้นยากสำหรับการสืบค้นแบบเฉพาะกิจ (นั่นคือ "ไม่มีส่วน SQL" นี่เป็นเรื่องจริงไม่ว่าคุณจะเป็นนักพัฒนาหรือไม่ก็ตาม พวกเขายังยากกว่ามากในการสร้างรายงานซึ่งมีความสำคัญต่อธุรกิจที่จริงจัง
Michael

เฮ้ฉันเกือบจะเรียกมันว่าฟีเจอร์สำหรับ MongoDB ในขณะที่ฉันไม่สนับสนุนการมีปฏิสัมพันธ์กับฐานข้อมูลของฉัน อย่างไรก็ตาม Mongo มีภาษาคิวรีแบบ ad-hoc และไคลเอนต์ ad-hoc แบบกราฟิก (Compass) มันไม่ได้เป็นคุณสมบัติที่อุดมไปด้วย SQL ดังนั้นฉันจะยอมรับว่ามันเป็นข้อบกพร่องที่อาจเกิดขึ้น แต่สำหรับฉันมันจะไม่สร้างความแตกต่างเมื่อฉันตัดสินใจว่าจะใช้ฐานข้อมูลใด
Pace

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

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

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

13

เพื่อขโมยอย่างไร้เหตุผลจากRenesis (อันที่จริงฉันกำลังทำคำตอบ CW นี้):


ใช้ RDBMS แทนประเภทอื่น ๆ :


4
"RDBMS ใช้ประโยชน์จากการจัดทำดัชนีอย่างหนักเพื่อประสิทธิภาพ" การทำดัชนีไม่ได้ใช้กับ MongoDB ด้วยหรือไม่
Rotareti

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

9

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

เป็นเรื่องปกติที่จะใช้ฐานข้อมูลเช่น Mongo สำหรับข้อมูลที่แคช ตัวอย่างเช่นหากคุณต้องการสร้างรายงานคุณสามารถทำแบบสอบถาม SQL ที่ซับซ้อนที่รวมและรวบรวมข้อมูลจำนวนมากได้ทันทีหรือคุณสามารถดึงเอกสาร json เดียวจากฐานข้อมูล Mongo ของคุณที่มีทุกสิ่งที่คุณต้องการสร้าง รายงาน. สิ่งนี้ทำให้การอ่านข้อมูลเป็นเรื่องง่าย (และรวดเร็ว!) แต่สามารถทำให้การเขียนข้อมูลค่อนข้างซับซ้อน (นี่คือที่มาของ CQRS)


8

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

MongoDB เป็น schemaless ซึ่งหมายความว่าจะใช้โครงสร้างข้อมูลใด ๆ ก็ตามที่คุณนำมาใช้เป็นส่วนใหญ่

ในทางกลับกันถ้าคุณจำเป็นต้องใช้ฟังก์ชั่นรวมและรู้สึกว่าจำเป็นต้องค้นหาข้อมูลในรูปแบบที่ซับซ้อนซึ่งไม่สามารถทำได้ผ่านการฝังหรือความสัมพันธ์ง่ายๆใน Mongo นั่นคือเมื่อคุณรู้ว่าถึงเวลาที่จะใช้ RDBMS เช่น MySQL หรือ PostgreSQL

MongoDB ไม่ได้หมายถึงการแทนที่ SQL มันตอบสนองความต้องการที่แตกต่างกันและ MongoDB และ RDBMS สามารถใช้ร่วมกันได้ ในความคิดของฉัน MongoDB ไม่ใช่สิ่งที่จำเป็นถ้าคุณไม่ต้องการให้ข้อมูลของคุณมีความยืดหยุ่นหรือฝังอยู่ในเอกสารหลัก การพัฒนาด้วย MongoDB นั้นสนุกมากเพราะมีขั้นตอนที่เกี่ยวข้องน้อยกว่าในการทำให้โครงการ (พูดใน Rails) ทำงานได้ ต้องการเปลี่ยนแปลงหรือไม่? ไม่มีปัญหา. เพียงเพิ่มแอตทริบิวต์ให้กับโมเดลของคุณ เสร็จสิ้น

ฉันไม่สามารถพูดคุยกับฐานข้อมูล NoSQL อื่น ๆ ได้มากมาย แต่ฉันรู้ว่าพวกเขามักจะได้รับการออกแบบคล้ายกันเพื่อตอบสนองความต้องการเฉพาะที่ไม่สามารถพบได้โดย RDBMS บางคนอาศัยอยู่ในหน่วยความจำทั้งหมดหรือสามารถหักหรือปรับขนาดได้ง่ายมาก ฉันค่อนข้างแน่ใจว่า Cassandra ได้รับการออกแบบมาเพื่อดำเนินการต่อโดยไม่สูญเสียข้อมูลหากโหนดหยุดทำงาน โดยทั่วไป Redis จะเป็นที่เก็บค่าคีย์ที่อยู่ในหน่วยความจำ (โดยมีการเขียนดิสก์เป็นระยะเพื่อคงอยู่) แต่ก็มีความสามารถในการจัดเก็บชนิดข้อมูลเช่นชุดข้อมูลและเรียงลำดับ


6

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

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

ข้อดีคือตอนนี้มีหลายรุ่นในการจัดเก็บข้อมูลดังนั้นจึงมีทางเลือกในการใช้สิ่งต่าง ๆ ในขณะที่ก่อนหน้านี้คุณมีฐานข้อมูล SQL

SE Radio มีบางตอนที่ดีในเรื่องนี้


จะต้องมีการจำไว้ว่าการแบ่งส่วนจะขึ้นอยู่กับสถาปัตยกรรมของศูนย์ข้อมูลของคุณเป็นอย่างมาก หากคุณมีชั้นวางเซิร์ฟเวอร์ประสิทธิภาพจะยอดเยี่ยม ใน DCs แบบกระจายไม่มาก เห็นด้วยกับสิ่งที่คุณพูดเกี่ยวกับความง่ายในการแบ่งส่วนบน NoSql DBs - ความน่าเชื่อถือ แต่เป็นข้อกังวลสำคัญ
Apoorv Khurasia

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

1

MongoDB ทำงานได้ดีเมื่อคุณเขียนข้อมูลจำนวนมากและเมื่อความต้องการสืบค้นของคุณไม่ซับซ้อนเกินไป ดังนั้น MongoDB จึงเหมาะสมเมื่อคุณใช้ CQRS กับ Event Sourcing ทางด้านคำสั่ง - เช่นที่เก็บเหตุการณ์ของคุณเป็นฐานข้อมูล MongoDB

ในด้านการสืบค้นเรายังคงใช้ SQL Server db พร้อมมุมมองและ WCF Data Services อยู่ด้านบนเนื่องจากความยืดหยุ่น ฉันคิดว่าในกรณีส่วนใหญ่คุณจะต้องการพลังของฐานข้อมูลเชิงสัมพันธ์สำหรับการสืบค้น


หากคุณเขียนข้อมูลจำนวนมากการล็อคการเขียนทั่วโลกจะไม่ส่งผลเสียต่อคุณหรือไม่
Apoorv Khurasia

1
โปรดทราบว่า Mongodb ไม่ได้ใช้ล็อกการเขียนทั่วโลกอีกต่อไป (และได้รับการอัปเดตแล้วเพื่อไม่จำเป็นต้องใช้เมื่อมีการโพสต์ความคิดเห็นด้านบน)
Jules

1

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

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

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


1

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

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