วิธีอธิบายความแตกต่างระหว่าง SQL และ NoSQL กับคุณยายของคุณ

วิธีอธิบายความแตกต่างระหว่าง SQL และ NoSQL กับคุณยายของคุณ

หนึ่งในการตัดสินใจที่สำคัญที่สุดที่นักพัฒนาทำคือฐานข้อมูลที่จะใช้ หลายปีที่ผ่านมา ตัวเลือกต่างๆ ถูกจำกัดอยู่เพียงตัวเลือกฐานข้อมูลเชิงสัมพันธ์ต่างๆ ที่รองรับ Structured Query Language (SQL) ซึ่งรวมถึง MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 และอื่นๆ อีกมากมาย

ในช่วง 15 ปีที่ผ่านมา มีฐานข้อมูล No-SQL ใหม่จำนวนมากปรากฏในตลาด ซึ่งรวมถึงร้านค้าคีย์-ค่า เช่น Redis และ Amazon DynamoDB ฐานข้อมูลแบบคอลัมน์กว้าง เช่น Cassandra และ HBase ที่เก็บเอกสาร เช่น MongoDB และ Couchbase และฐานข้อมูลกราฟและเครื่องมือค้นหา เช่น Elasticsearch และ Solr

ในบทความนี้ เราจะพยายามทำความเข้าใจ SQL และ NoSQL โดยไม่ต้องพูดถึงฟังก์ชันการทำงาน
นอกจากนี้เราจะสนุกกันเล็กน้อยในกระบวนการนี้

อธิบาย SQL ให้คุณยายฟัง

คุณยาย ลองจินตนาการว่าฉันไม่ใช่หลานชายคนเดียวของคุณ แต่พ่อกับแม่รักกันเหมือนกระต่าย มีลูก 100 คน แล้วก็รับเลี้ยงอีก 50 คน

ดังนั้น คุณรักพวกเราทุกคน และไม่อยากลืมชื่อ วันเกิด รสไอศกรีมที่โปรดปราน ขนาดเสื้อผ้า งานอดิเรก ชื่อคู่สมรส ชื่อลูกหลาน และข้อเท็จจริงที่สำคัญอย่างยิ่งอื่นๆ อย่างไรก็ตาม เรามาเผชิญหน้ากัน คุณอายุ 85 ปีแล้ว และความทรงจำเก่าๆ ที่ดีก็รับมือไม่ได้

โชคดีที่เป็นหลานที่ฉลาดที่สุด ฉันสามารถช่วยได้ ฉันจึงมาที่บ้านของคุณ หยิบกระดาษสองสามแผ่นออกมาและขอให้คุณอบคุกกี้ก่อนที่เราจะเริ่ม

ในกระดาษแผ่นเดียวเราสร้างรายการชื่อ “หลาน" ทั้งหมด หลานชาย บันทึกไว้พร้อมข้อมูลสำคัญบางประการเกี่ยวกับเรื่องนี้ รวมทั้งหมายเลขเฉพาะที่จะระบุว่าเป็นหมายเลขใด หลานชาย เขาคือ. นอกจากนี้ เพื่อประโยชน์ในการจัดระเบียบ เราเขียนคุณลักษณะที่มีชื่อไว้ที่ด้านบนของรายการ เพื่อให้เราทราบอยู่เสมอว่ารายการนั้นมีข้อมูลใดบ้าง

id
ชื่อ
วันเกิด
การเข้าชมครั้งล่าสุด
ขนาดเสื้อผ้า
ไอศกรีมที่ชื่นชอบ
บุญธรรม

1
ชะแลงขนาดสั้น
09-22-1992
09-01-2019
L
ช็อคโกแลตมิ้นต์
เท็จ

2
เจสสิก้า
07-21-1992
02-22-2018
M
ถนนหิน
จริง

...ต่อรายการ!

รายชื่อหลาน

หลังจากคุณเข้าใจทุกอย่างแล้ว เราก็เกือบจะทำรายการเสร็จแล้ว! อย่างไรก็ตาม คุณหันมาหาฉันแล้วพูดว่า “เราลืมเพิ่มพื้นที่สำหรับคู่สมรส งานอดิเรก หลาน!” แต่ไม่ เรายังลืมไม่ได้! สิ่งนี้ตามมาเพิ่มเติมและต้องใช้กระดาษแผ่นใหม่

ฉันก็เลยดึงกระดาษอีกแผ่นออกมา แล้วเราก็เรียกมันว่ารายการ คู่สมรส. เราเพิ่มคุณลักษณะที่สำคัญสำหรับเราอีกครั้งที่จุดเริ่มต้นของรายการและเริ่มเพิ่มในแถว

id
หลาน_id
ชื่อ
วันเกิด

1
2
จอห์น
06-01-1988

2
9
Fernanda
03-05-1985

...มีคู่ครองเพิ่ม!

รายชื่อคู่สมรส

คราวนี้ผมอธิบายให้ยายฟังว่าถ้าอยากรู้ว่าใครแต่งงานกับใครก็แค่เปรียบเทียบเท่านั้น id ในรายการ หลาน с หลาน_id อยู่ในรายชื่อคู่สมรส

หลังจากกินคุกกี้ไปสองสามโหล ฉันก็อยากงีบหลับ “ไปต่อได้ไหมคุณยาย” ฉันจะออกไปนอนพัก

ฉันจะกลับมาในอีกไม่กี่ชั่วโมง เจ๋งมากคุณยาย! ทุกอย่างดูดีหมดยกเว้นรายการ งานอดิเรก. มีงานอดิเรกประมาณ 1000 รายการในรายการ ส่วนใหญ่จะซ้ำกัน เกิดอะไรขึ้น?

หลาน_id
งานอดิเรก

1
ขี่จักรยาน

4
ขี่จักรยาน

3
ขี่จักรยาน

7
วิ่ง

11
ขี่จักรยาน

...ไปกันต่อ!

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

id
งานอดิเรก

1
ขี่จักรยาน

2
วิ่ง

3
ว่ายน้ำ

...งานอดิเรกเพิ่มเติม!

รายการงานอดิเรก

เมื่อเรามีรายการงานอดิเรกแล้ว เราก็สร้างรายการที่สองขึ้นมาแล้วเรียกมันว่า "งานอดิเรกของหลาน'

หลาน_id
งานอดิเรก_id

4
1

3
1

7
2

…มากกว่า!

รายการงานอดิเรกทั่วไปของลูกหลาน

หลังจากทำงานทั้งหมดนี้ ตอนนี้คุณย่ามีระบบหน่วยความจำสุดเจ๋งสำหรับติดตามครอบครัวใหญ่ที่น่าทึ่งของเธอ จากนั้น - เพื่อให้ฉันอยู่ได้นานขึ้น - เธอถามคำถามวิเศษ: "คุณเรียนรู้ที่จะทำทั้งหมดนี้ที่ไหน"

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

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

คุณลักษณะที่โดดเด่นของฐานข้อมูลเชิงสัมพันธ์ที่ได้รับความนิยมมากที่สุดคือภาษาคิวรี SQL (Structured Query Language) ด้วยเหตุนี้ หากคุณยายถ่ายโอนระบบหน่วยความจำของเธอไปยังคอมพิวเตอร์ เธอจะได้รับคำตอบอย่างรวดเร็วสำหรับคำถามต่างๆ เช่น “ใครบ้างที่ไม่ได้มาเยี่ยมฉันเมื่อปีที่แล้ว แต่งงานแล้ว และไม่มีงานอดิเรก?”

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

คุณสมบัติหลักบางประการของ MySQL:

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

ตอนนี้ลืมมันซะ ทั้งหมด.

อธิบาย NoSQL ให้คุณยายฟัง

คุณยายเรามีครอบครัวใหญ่ มีหลาน 150 คนอยู่ในนั้น! หลายคนแต่งงานแล้ว มีลูก สนใจบางสิ่งบางอย่าง และอื่นๆ ในวัยของคุณ เป็นไปไม่ได้ที่จะจดจำทุกสิ่งทุกอย่างเกี่ยวกับเราทุกคน สิ่งที่คุณต้องการคือระบบท่องจำ!

โชคดีนะ ฉัน ไม่ อยากให้คุณลืมวันเกิดของฉันและไอศกรีมรสโปรดของฉัน ฉันช่วยได้ ฉันจึงวิ่งไปที่ร้านที่ใกล้ที่สุดหยิบสมุดบันทึกแล้วกลับบ้าน

ขั้นตอนแรกที่ฉันทำคือเขียนคำว่า "หลาน" ด้วยตัวอักษรหนาขนาดใหญ่บนปกสมุดบันทึกของฉัน จากนั้นฉันก็เปิดหน้าแรกและเริ่มเขียนทุกสิ่งที่คุณต้องจำเกี่ยวกับฉัน หลังจากนั้นไม่กี่นาที หน้าจะมีลักษณะเช่นนี้

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: “ดูเหมือนทุกอย่างจะพร้อมแล้ว!”
ยาย: “เดี๋ยวก่อน แล้วหลานคนอื่นๆ ล่ะ?”
Я: "ใช่เลย. จากนั้นเราจะจัดสรรหน้าสำหรับแต่ละคน”
ยาย: “ฉันจะต้องเขียนข้อมูลเดียวกันทั้งหมดสำหรับทุกคนเหมือนที่ฉันทำเพื่อคุณหรือเปล่า?”
Я: “ไม่ เพียงถ้าคุณต้องการ ให้ฉันแสดงหน่อยสิ”
ฉันหยิบปากกาของคุณยาย เปิดหน้าและรีบจดข้อมูลเกี่ยวกับลูกพี่ลูกน้องที่ฉันชอบน้อยที่สุด

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

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

เมื่อทุกอย่างเสร็จสิ้น เธอก็ถามคำถามมหัศจรรย์ว่า “คุณเรียนรู้ที่จะทำทั้งหมดนี้มาจากไหน”

ฐานข้อมูล NoSQL

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

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

คุณสมบัติที่สำคัญของ NoSQL:

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

การเปรียบเทียบโดยละเอียด

MySQL ต้องการสคีมาที่กำหนดไว้และมีโครงสร้าง
NoSQL ช่วยให้คุณสามารถจัดเก็บข้อมูลใดๆ ไว้ใน “เอกสาร”

MySQL ได้รับการสนับสนุนจากชุมชนขนาดใหญ่
NoSQL มีชุมชนขนาดเล็กและเติบโตอย่างรวดเร็ว

NoSQL นั้นง่ายต่อการปรับขนาด
MySQL ต้องการความสามารถในการจัดการที่มากขึ้น

MySQL ใช้ SQL ซึ่งใช้ในฐานข้อมูลหลายประเภท
NoSQL เป็นฐานข้อมูลโดยการออกแบบพร้อมการใช้งานยอดนิยม

MySQL ใช้ภาษาคิวรีมาตรฐาน (SQL)
NoSQL ไม่ได้ใช้ภาษาคิวรีมาตรฐาน

MySQL มีเครื่องมือการรายงานที่ยอดเยี่ยมมากมาย
NoSQL มีเครื่องมือการรายงานหลายอย่างที่ยากต่อการสร้างมาตรฐาน

MySQL อาจมีปัญหาด้านประสิทธิภาพสำหรับข้อมูลขนาดใหญ่
NoSQL ให้ประสิทธิภาพที่ยอดเยี่ยมกับข้อมูลขนาดใหญ่

ความคิด 8 ฐาน

บริษัท 8 ฐานที่ฉันทำงาน เราขับเคลื่อนพื้นที่ทำงานของแต่ละโปรเจ็กต์ด้วยฐานข้อมูลเชิงสัมพันธ์ Aurora MySQL ที่โฮสต์บน AWS แม้ว่า NoSQL จะเป็นตัวเลือกที่สมเหตุสมผลเมื่อข้อกำหนดแอปพลิเคชันของคุณต้องการประสิทธิภาพและความสามารถในการปรับขนาดที่สูง แต่เราเชื่อว่าความสอดคล้องของข้อมูลที่แข็งแกร่งที่ DBMS มอบให้นั้นเป็นสิ่งสำคัญในการสร้างแอปพลิเคชัน SaaS และซอฟต์แวร์ทางธุรกิจอื่นๆ

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

เรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาด้วย Aurora, Serverless และ GraphQL ด้วย 8base.com ที่นี่.

ที่มา: will.com

เพิ่มความคิดเห็น