หากคุณเคยทำงานกับแอปพลิเคชันแบบเรียลไทม์ คุณต้องเคยเจอกับงานเกี่ยวกับการจัดเก็บข้อมูล ดั้งเดิม การจัดเก็บข้อมูลทำในแถวและตารางที่กำหนดไว้ชัดเจน แต่ในช่วง gầnๆ นี้ มีการเปลี่ยนแปลงไปสู่วิธีที่ยืดหยุ่นกว่า
เพื่อตอบสนองปัญหาเดิมๆ ของการอัปเกรดในฐานข้อมูลแบบตารางอย่าง SQL (Structured Query Language) ภาษาที่เรียกว่า NoSQL ถูกนำเสนอ NoSQL (Not Only SQL) ไม่ปฏิบัติตามส키มาอย่างเคร่งครัด และพื้นฐานแล้วเป็นออบเจ็กต์ขนาดใหญ่ที่มีออบเจ็กต์ย่อยซ้อนกันหลายตัวซึ่งทำหน้าที่เป็นแถวข้อมูลแต่ละแถว ระบบฐานข้อมูลหลายระบบรองรับแนวคิดนี้ แต่ MongoDB เป็นหนึ่งในผู้นำในเรื่องนี้มานานแล้ว
ในบทความนี้ เราจะดูว่า MongoDB คืออะไร คุณสมบัติสำคัญคืออะไร ใช้ทำอะไร และทรัพยากรที่มีสำหรับเรียนรู้
วิธีเรียน MongoDB
MongoDB เป็นระบบฐานข้อมูลที่ซับซ้อนและทรงพลังที่ใช้ประโยชน์จากข้อได้เปรียบของฐานข้อมูล NoSQL ดังนั้น จึงสำคัญที่จะต้องเข้าใจวัตถุประสงค์และคุณสมบัติของมันก่อนที่เราจะลงลึกไปเรียนรู้ไดนามิกของมัน
MongoDB คืออะไร?
MongoDB เป็นระบบฐานข้อมูลแบบข้ามแพลตฟอร์มและ NoSQL-based ใช้สำหรับจัดเก็บข้อมูลทุกประเภท — สตริง, ตัวเลข และตัวอักษร เหตุผลหลักที่ MongoDB แตกต่างจากฐานข้อมูลแบบดั้งเดิมที่มีโครงสร้างคือ MongoDB ไม่ปฏิบัติตามกฎที่เคร่งครัดสำหรับจัดระเบียบข้อมูล
MongoDB เป็นอินสแตนซ์ของฐานข้อมูล NoSQL หมายความว่า ไม่เหมือน SQL, MongoDB ไม่กำหนดตารางและคอลัมน์เพื่อจัดหมวดหมู่และจัดเก็บข้อมูล ในการนั้น ข้อมูลในฐานข้อมูล NoSQL โครงสร้างในรูปแบบของออบเจ็กต์ JavaScript Object Notation (JSON) แบบซ้อนกัน (nested) ออบเจ็กต์ JSON สามารถมีตัวแปรสมาชิกได้ทุกประเภท รวมถึงออบเจ็กต์ JSON อื่นๆ นี่คือลักษณะของออบเจ็กต์ JSON ทั่วไป:
{ prop1: "val1", prop2: 2, prop3: { prop4: true } }
ค่าพื้นฐานสามารถจัดเก็บในออบเจ็กต์ JSON ได้คล้ายกับ prop1 และ prop2 ออบเจ็กต์ JSON อื่นๆ ก็สามารถจัดเก็บได้เช่นกัน คล้ายกับ prop3 ที่เก็บออบเจ็กต์ JSON ใหม่พร้อมชุดพรอพเพอร์ตี้และค่าของตัวเอง
ใน MongoDB แต่ละออบเจ็กต์เรียกว่าเอกสาร (document) อาร์เรย์ของเอกสารเหล่านี้สร้างเป็นคอลเลกชัน (collection) รายการของคอลเลกชันเหล่านี้เป็นฐานข้อมูลทั้งหมด โครงสร้างข้างต้นยืดหยุ่นพอที่จะอนุญาตให้เปลี่ยนแปลงในเอกสารแต่ละฉบับได้ทันที (on-the-fly) และขยายได้ (scalable) เนื่องจากมันเป็นเพียงอาร์เรย์ไดนามิกของออบเจ็กต์ง่ายๆ
คุณสมบัติของ MongoDB
MongoDB เสนอคุณสมบัติหลายอย่างในฐานะฐานข้อมูล NoSQL ที่ทรงพลัง นี่คือบางอย่าง:
ความยืดหยุ่นกับ Schema
คุณสมบัติสำคัญของ MongoDB คือการออกแบบฐานข้อมูลเทคโนโลยีนี้แบบไม่มีสคีมา (schema-less) สคีมาอ้างถึงโครงสร้างที่ใช้จัดเก็บข้อมูลในฐานข้อมูล MongoDB ไม่ต้องการสคีมาที่เคร่งครัด ทำให้ไม่ต้องมานั่งสร้างสคีมาและติดมันมาตั้งแต่ต้นของการผลิตแอปพลิเคชัน นี่ให้ความอิสระในการมีเอกสารหลายประเภทในคอลเลกชันเดียวกันและทำการเปลี่ยนแปลงเมื่อจำเป็น
การจัดทำดัชนีที่ทรงพลัง
MongoDB จัดทำดัชนีเอกสารทั้งหมดด้วยดัชนีหลัก (primary) และดัชนีรอง (secondary) เพื่อให้การอ่านข้อมูลเร็วขึ้น ดัชนีคือตารางพิเศษที่ช่วยค้นหาจุดข้อมูลแต่ละจุดในฐานข้อมูลเร็วขึ้น หากไม่มีการจัดทำดัชนี การค้นหาบันทึกจะต้องผ่านทุกรายการและตรวจสอบการจับคู่ด้วยตนเอง
ความสามารถในการขยายตัวสูง
MongoDB โดดเด่นในความสามารถในการขยายตัว (Scalability) นอกจากการขยายตัวในแนวตั้ง (vertically) เพื่อรองรับข้อมูลมากขึ้น MongoDB ยังสามารถขยายตัวในแนวนอน (horizontally) ได้ การขยายตัวในแนวนอนหมายถึงการกระจายข้อมูลบนเซิร์ฟเวอร์หลายตัวเพื่อเพิ่มจำนวนคำขอฐานข้อมูลที่สามารถจัดการพร้อมกันได้ ใน MongoDB กระบวนการขยายตัวในแนวนอนนี้เรียกว่า Sharding
ความซ้ำซ้อนที่ปรับปรุงแล้ว
MongoDB ให้ uptime สูง หมายถึงน่าเชื่อถือมากในแง่ของความพร้อมใช้งานสำหรับผู้ใช้ปลายทาง อย่างไรก็ตาม ระบบฐานข้อมูลทุกระบบเสี่ยงต่อการสูญเสียข้อมูลเนื่องจากฮาร์ดแวร์ที่เก่าและปัญหาทางเทคนิค หนึ่งในสิ่งดีของ MongoDB คือมันสร้างสำเนาข้อมูลที่จัดเก็บหลายชุด ความซ้ำซ้อนของข้อมูลนี้เพิ่มชั้นความแข็งแกร่งให้กับแอปพลิเคชันที่สร้างด้วย MongoDB
ประสิทธิภาพสูง
คุณสมบัติทั้งหมดที่เราพูดคุยนำไปสู่คุณสมบัติสูงสุดหนึ่งคือประสิทธิภาพ (Performance) เนื่องจากโครงสร้างข้อมูลที่ยืดหยุ่นได้ พร้อมกับสถาปัตยกรรมที่พร้อมใช้งานสูงและขยายตัวได้ MongoDB เสนอประสิทธิภาพที่ไม่มีใครเทียบได้เมื่อเทียบกับฐานข้อมูล NoSQL อื่นๆ
MongoDB ใช้ทำอะไร?
MongoDB เป็นตัวเลือกยอดนิยมสำหรับสร้างโซลูชันฐานข้อมูลที่ขยายตัวได้และยืดหยุ่น ก่อนที่เราจะลงมือเรียน MongoDB มาสำรวจกรณีการใช้งานบางส่วน:
การจัดการข้อมูลผลิตภัณฑ์
เกือบทุกผลิตภัณฑ์ออนไลน์จัดการข้อมูลผู้บริโภค MongoDB เข้ากับสถานการณ์นี้ได้อย่างสมบูรณ์ เพราะมีสคีมาที่ยืดหยุ่นพอที่จะรองรับการเปลี่ยนแปลงโครงสร้างข้อมูลของผลิตภัณฑ์ตามเวลา นอกจากนี้ ฐานข้อมูล MongoDB ขยายตัวได้ง่าย หมายความว่าหากคุณมองหาการเปิดตัวแอปพลิเคชันเต็มรูปแบบที่ต้องการฐานข้อมูล คุณสามารถพึ่งพา MongoDB ได้ตั้งแต่ตอนแรก
ข่าวกรองปฏิบัติการ (Operational Intelligence)
นอกจากจัดเก็บข้อมูลธุรกิจแล้ว ฐานข้อมูลยังใช้จัดเก็บข้อมูลวิเคราะห์ (analytics) ซึ่งมีความสำคัญเท่ากันต่อธุรกิจ เพราะการตัดสินใจหลายอย่างขับเคลื่อนโดยแนวโน้มและการวิเคราะห์ของผู้ใช้ สำหรับกรณีการใช้งานนี้ ต้องการระบบฐานข้อมูลที่รวดเร็วและขยายตัวได้ ซึ่งอาจจัดการคำขอล้านๆ ต่อวินาทีโดยไม่ล้มเหลว MongoDB ตอบสนองได้ดีด้วยโครงสร้างพื้นฐานที่ขยายตัวง่ายและประสิทธิภาพซูเปอร์ฟาสต์
ระบบจัดการเนื้อหา (Content Management Systems)
บล็อกและฟอรัมสามารถสร้างได้ง่ายด้วยโครงสร้างที่รวดเร็วและยืดหยุ่นของ MongoDB ทำให้แอปพลิเคชันฟอรัมออนไลน์สามารถใช้ประโยชน์จากพลังของ MongoDB เพื่อให้การโต้ตอบที่รวดเร็วและประสบการณ์ที่ลื่นไหลกว่าแก่ผู้ใช้ คุณสมบัติเพิ่มเติมอย่างความคิดเห็นและการตอบกลับสามารถเพิ่มได้ง่าย เพราะการซ้อนออบเจ็กต์ภายในอีกออบเจ็กต์นั้นง่ายมากในกรณีของฐานข้อมูลที่พิง JSON
การเรียนรู้ MongoDB
เนื่องจาก MongoDB เป็นโซลูชันฐานข้อมูลแบบเอกสารที่ทรงพลัง จึงสำคัญที่จะรู้วิธีใช้มันให้เต็มที่ ต่อไปนี้คือรายการทรัพยากรที่ช่วยให้คุณเริ่มต้น:
คอร์ส MongoDB ที่ดีที่สุด
MongoDB เป็นไลบรารีโอเพนซอร์ส และนักพัฒนาหลายคนพยายามสร้างเนื้อหาเพื่อช่วยให้คุณเริ่มต้นได้ง่าย มาดูคอร์สวิดีโอฟรีและเสียเงินที่มีสำหรับ MongoDB:
The Complete Developers Guide to MongoDB โดย Stephen Grider
- แพลตฟอร์ม: Udemy
- ระยะเวลา: ประมาณ 13.5 ชั่วโมง
- ราคา: $120
- ข้อกำหนดก่อนหน้า: ไม่มี
- วันที่เริ่ม: On-Demand (เรียนได้ทุกเมื่อ)
มีอยู่เป็นชุด 15 บทเกี่ยวกับฐานข้อมูลแบบเอกสาร คอร์สนี้ครอบคลุมเรื่องนี้อย่างละเอียด บทแรกครอบคลุมพื้นฐาน ES6 เพื่อช่วยให้คุณเริ่มต้นกับการเขียน JSON ต่อมา คอร์สจะไปต่อที่พื้นฐานของ MongoDB และเร่งจังหวะด้วยบทเกี่ยวกับหัวข้อสำคัญอย่าง Operators และ Schema Design
คอร์สนี้ยังมีส่วนเฉพาะสำหรับ Mongoose, ไคลเอ็นต์โอเพนซอร์สสำหรับ MongoDB Mongoose ช่วยลดความซับซ้อนในการโต้ตอบกับ MongoDB ภายในแอปพลิเคชันของคุณ คอร์สนี้มีคะแนน 4.4 ดาวจากผู้เรียน超過 6,000 คนบน Udemy ซึ่งเป็นเกณฑ์คุณภาพที่ดี
Learn MongoDB: Leading NoSQL Database from scratch โดย Sunil Kumar Gupta
- แพลตฟอร์ม: Udemy
- ระยะเวลา: ประมาณ 17 ชั่วโมง
- ราคา: $120
- ข้อกำหนดก่อนหน้า: ไม่มี
- วันที่เริ่ม: On-Demand
คอร์สนี้เริ่มจากพื้นฐานของฐานข้อมูล NoSQL และพาคุณผ่านหัวข้อขั้นสูงอย่าง Data Modeling และ Sharding และจบลงหลังจากอธิบายแพลตฟอร์มระดับอุตสาหกรรมสำหรับโฮสต์ฐานข้อมูล MongoDB: Atlas
คอร์สนี้เป็นแพ็กเกจสมบูรณ์ในแง่ของคุณภาพและความลึกของเนื้อหา ปริมาณทรัพยากรที่แชร์ตามไปพร้อมกับประสบการณ์ปฏิบัติจริงในการเชื่อมต่อ MongoDB กับแอปพลิเคชัน Java เป็นสิ่งที่ดีที่สุดที่คุณสามารถได้ในระดับผู้เริ่มต้น
Introduction to MongoDB โดย Nuri Halperin
- แพลตฟอร์ม: PluralSight
- ระยะเวลา: ประมาณ 2.5 ชั่วโมง
- ราคา: ต้องการการสมัครสมาชิก PluralSight
- ข้อกำหนดก่อนหน้า: มีประสบการณ์กับฐานข้อมูล MySQL, การเขียนโปรแกรม Java และความเข้าใจพื้นฐานเกี่ยวกับแพลตฟอร์ม Big Data
- วันที่เริ่ม: On-Demand
ได้รับคะแนน超過 4.5 ดาวจากผู้เรียนประมาณ 2,000 คน คอร์สนี้เหมาะที่สุดสำหรับผู้ที่เพิ่งเริ่มต้นกับ MongoDB เป็นคอร์สระดับกลาง และครอบคลุมหัวข้อซับซ้อนของฐานข้อมูล NoSQL อย่างละเอียด รวมถึงคำขอซับซ้อนและดัชนี ยังมีบทเกี่ยวกับ Mongo Shell และช่วยให้คุณคุ้นเคยกับมัน
คอร์สนี้เป็นทางเลือกที่ดีสำหรับการนำการเรียนรู้พื้นฐานไปสู่แอปพลิเคชันจริงและโครงการซับซ้อนเพื่อ鞏固ความเข้าใจของคุณเกี่ยวกับโซลูชันฐานข้อมูลแบบเอกสารยอดนิยมที่สุด
หนังสือ MongoDB
นอกจากคอร์สวิดีโอแล้ว ยังมีหนังสือมากมายที่ช่วยให้คุณเริ่มต้นกับ MongoDB ได้ หนังสือชั้นนำรวมถึง:
'MongoDB in Action' โดย Kyle Banker และคณะ
ราคาประมาณ $30 บน Amazon ณ ขณะเขียนบทความนี้ นี่เป็นหนังสือหนึ่งในเล่มที่ดีที่สุดสำหรับการก้าวแรกในโลกของ MongoDB และการจัดการฐานข้อมูล MongoDB in Action เป็นทรัพยากรที่แข็งแกร่งสำหรับผู้เริ่มต้น เพราะเต็มไปด้วยแบบฝึกหัดเชิงโต้ตอบและการใช้งานฐานข้อมูลจริง
เริ่มจากพื้นฐานของฐานข้อมูล เช่น ดัชนี, การค้นหา (querying), และโมเดลข้อมูล และจบที่หัวข้อซับซ้อนอย่าง Map-Reduce และ custom aggregation หนังสือนี้ได้รับการอัปเดตสำหรับ Mongo 3.0 และเป็นหนังสือที่ดีที่สุดที่คุณสามารถได้ในระดับผู้เริ่มต้น
'MongoDB: The Definitive Guide' โดย Christina Chodorow
ราคาประมาณ $30 ณ ขณะนี้ (ตรวจสอบราคาล่าสุดที่นี่) หนังสือเล่มนี้เป็นหนึ่งในตัวเลือกที่ดีที่สุดสำหรับผู้ที่มองหาเรียน MongoDB จากศูนย์ เขียนโดยหนึ่งในผู้มีส่วนร่วมหลักของ MongoDB ดังนั้นคุณสามารถเชื่อมั่นได้ว่าผู้เขียนรู้ว่ากำลังพูดอะไร
หนังสือเล่มนี้มีคำอธิบายและบทช่วยสอนโดยละเอียดเพื่อช่วยให้คุณเริ่มต้นกับเครื่องมือจากศูนย์ ไม่มีข้อกำหนดก่อนหน้าใดๆ ที่จำเป็นต่อการเข้าใจ และคุณสามารถเริ่มได้ง่ายโดยใช้หนังสือเล่มนี้เพียงอย่างเดียวเป็นจุดอ้างอิง อย่างไรก็ตาม หนังสือเล่มนี้อาจค่อนข้างทางเทคนิคมากเกินไปบ้างกับภาษาของมัน จึงแนะนำให้เพิ่มความพยายามจนกว่าคุณจะสบายใจกับสไตล์การอธิบายของผู้เขียน
'Data Modeling for MongoDB' โดย Steve Hoberman
ราคาประมาณ $30 ณ ขณะนี้ หนังสือเล่มนี้เป็นทรัพยากรที่ยอดเยี่ยมสำหรับผู้ที่มีประสบการณ์กับไลบรารีบ้างและมองหาการเรียนรู้ขั้นสูง หนังสือเล่มนี้มุ่งเน้นอธิบายแนวคิดการสร้างโมเดลข้อมูลโดยใช้ MongoDB ใช้แนวทางวิเคราะห์ในการอธิบายว่าข้อมูลควรจัดโครงสร้างในแอปพลิเคชันอย่างไร
ครอบคลุมแนวคิด MongoDB ทั้งหมดผ่านบทต่างๆ และจบด้วยกรณีศึกษาทั่วไปบางอย่างเกี่ยวกับว่าการสร้างโมเดลข้อมูลส่งผลต่อแอปพลิเคชันในชีวิตจริงอย่างไร นี่ดีสำหรับผู้ที่มีประสบการณ์กับ MongoDB และมองหาเข้าใจว่าแอปพลิเคชันระดับอุตสาหกรรมจัดเก็บข้อมูลในฐานข้อมูล NoSQL อย่างไร
ทรัพยากร MongoDB
นอกจากคอร์สวิดีโอและหนังสือแล้ว ยังมีบทช่วยสอนมากมายรอบๆ อินเทอร์เน็ต นี่คือชิ้นงานที่ดีสำหรับเริ่มต้น:
บทช่วยสอนโดย Studio3T
ถูกใช้โดย Johns Hopkins University และ UC Davis นี่คือชุดของบทช่วยสอน MongoDB สองชิ้นที่ยอดเยี่ยม:
MongoDB 101: บทช่วยสอนนี้ดีที่สุดสำหรับผู้เริ่มต้นในโซลูชันจัดการฐานข้อมูล เริ่มต้นด้วยการอธิบายพื้นฐานของ MongoDB, Studio 3T (ไคลเอ็นต์ท้องถิ่นสำหรับเชื่อมต่อกับฐานข้อมูล MongoDB) และ Atlas (แพลตฟอร์มบนคลาวด์สำหรับโฮสต์ฐานข้อมูล MongoDB) เทคโนโลยีสามอย่างนี้ตั้งค่าเริ่มต้นที่สมบูรณ์แบบสำหรับประสบการณ์การเรียนรู้ฐานข้อมูลที่อุดมสมบูรณ์
MongoDB 201: บทช่วยสอนนี้ยกระดับขึ้น โดยมุ่งเน้นการนำ CRUD (Create, Read, Update, Delete) operations ไปใช้ใน MongoDB และการทำงานกับคำขอ (queries) และมุมมอง (views) นี่คือบทช่วยสอนที่สมบูรณ์แบบสำหรับผู้ที่คล่องแคล้วกับพื้นฐาน MongoDB และมองหาเข้าใจว่าแอปพลิเคชันระดับอุตสาหกรรมค้นหาข้อมูลอย่างไร
MongoDB Tutorial for Beginners: Learn in 7 Days โดย Guru99.com
ด้วยเนื้อหาเพียงพอเกี่ยวกับการแนะนำ การติดตั้ง และการดำเนินการขั้นสูง คอร์สนี้เสนอแผนทางที่สมบูรณ์สำหรับการเชี่ยวชาญ MongoDB คอร์สนี้เป็นที่เริ่มต้นที่ดี เพราะเสนอข้อความช่วยเหลือตลอดบทช่วยสอน อย่างไรก็ตาม มันต้องการให้คุณคุ้นเคยกับแนวคิดของ SQL นอกจากนี้ มันไม่ได้มุ่งทำให้คุณเชี่ยวชาญใน 7 วัน หากคุณมองหาเรียน MongoDB ในมาตรฐานมืออาชีพ คุณอาจต้องผูกมัดคอร์สนี้กับคอร์สขั้นสูงกว่า
MongoDB Tutorial โดย TutorialsPoint.com
ทรัพยากรนี้รู้สึกเหมือนภาคผนวกของหัวข้อย่อยของ MongoDB มากกว่าบทช่วยสอนที่มีผู้นำ อย่างไรก็ตาม ความลึกของเนื้อหาในแต่ละหัวข้อย่อยเป็นสิ่งที่ยอดเยี่ยม และนี่อาจเป็นทรัพยากรสำคัญสำหรับคุณเมื่อคุณเรียนจบพื้นฐานของไลบรารีแล้วและมองหาทรัพยากรที่คุณสามารถอ้างอิงได้ทุกเมื่อที่คุณต้องการความช่วยเหลือ
ใช้เวลานานเท่าไรในการเรียน MongoDB?
เนื่องจาก MongoDB เป็นโซลูชันจัดการฐานข้อมูลที่ทรงพลังและละเอียด คุณอาจต้องการประมาณสามสัปดาห์เพื่อเริ่มต้นได้ดี การฝึกฝนต่อเนื่อง ช่วยด้วยโครงการตัวอย่างเป็นระยะเวลาอีกหนึ่งถึงสองสัปดาห์ เพียงพอที่จะทำให้พื้นฐานชัดเจนในใจของคุณ ทำให้คุณปลดปล่อยศักยภาพเต็มที่ของโซลูชันนี้ได้
อย่างไรก็ตาม หากคุณมองหาเรียน MongoDB สำหรับการทำงานมืออาชีพ คุณอาจต้องการลงทุนหกสัปดาห์ติดต่อกันเพื่อคุ้นเคยกับ MongoDB, Atlas และ Mongo Shell ให้เต็มที่
คุณควรเรียน MongoDB หรือไม่?
หลังจากรวบรวมรายการทรัพยากร MongoDB ที่ยาวนาน เราต้องตอบคำถามสำคัญที่สุด: คุณควรเรียน MongoDB หรือไม่?
คำตอบคือง่าย: หากคุณยินดีดำดิ่งสู่โลกของการจัดการฐานข้อมูล หรือหากงานประจำวันของคุณเกี่ยวข้องกับการบริหารระบบฐานข้อมูล MongoDB เป็นทักษะที่ดีที่สุดที่ควรลงทุนเวลาและทรัพยากร มันเป็นหนึ่งในตัวเลือกชั้นนำในขณะนี้สำหรับฐานข้อมูล NoSQL ที่ขยายตัวได้ และจะโตใหญ่ขึ้นทุกวัน
หากคุณมองหาทำอาชีพเป็นผู้ดูแลฐานข้อมูล (database administrator) หรือสถาปนิกระบบ (system architect) MongoDB เป็นหนึ่งในองค์ประกอบพื้นฐาน มีแนวคิดเพิ่มเติมบางอย่างที่คุณอาจต้องรู้ เช่น ฐานข้อมูล SQL แต่การผูกมัดฐานที่แข็งแกร่งใน MongoDB กับพวกมันเป็นสิ่งจำเป็นในวันนี้