เจาะลึก MongoDB คืออะไร พร้อมการใช้งานเบื้องต้น

MongoDB เป็นฐานข้อมูลประเภท NoSQL หรือที่เรียกกันว่า Not only SQL ซึ่งจะต่างกับฐานข้อมูลประเภท SQL ที่เป็นฐานข้อมูลประเภทตารางตรงโครงสร้างและหลักการทำงาน ทำให้ NoSQL ยืดหยุ่นกว่า โดย MongoDB จะใช้รูปแบบที่เรียกว่า Document-based หรือรูปแบบเอกสาร โดย MongoDB จะมีการจัดลำดับชั้นของข้อมูล 3 ขั้น เป็น

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

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

รูปแบบการเก็บข้อมูลภายในของ Document

โดยรูปแบบของข้อมูลภายในจะเขียนในรูปแบบของคล้ายๆ JSON เรียกว่า BSON document ภายในจะสามารถเก็บข้อมูลประเภทต่างๆ ได้ทั้ง ตัวเลขตัวอักษร ค่าตรรกะ (จริงเทจ) หรือที่ซับซ้อนขึ้น เช่น array ที่เป็นแถวของข้อมูล, object หรืออีกชื่อหนึ่งคือ document เป็นรูปแบบของเอกสารซ้อนเอกสาร, และ วันเวลาโดยใช้ชื่อว่า Date ซึ่งเป็นข้อมูลประเภท timestamp ที่เราต้องการนำมาเก็บ แต่อย่าสับสนกับ “Timestamps” ประเภทข้อมูลชวนสับสนซึ่งเป็นข้อมูลที่ MongoDB ใช้ในการประมวลผลภายในตัวมันเองเท่านั้น

ข้อดีที่มักจะเลือกใช้ MongoDB เป็นเพราะ

  1. Flexible Structure: มีความยืดหยุ่นกับโครงสร้างของข้อมูล ไม่กำหนดรูปแบบตายตัว เหมาะกับการพัฒนาเว็ปไซต์ที่ข้อมูลและโครงสร้างอาจเปลี่ยนแปลงได้ตลอดเวลา
  1. Horizontal-Scalable: ด้วยความสามารถเฉพาะตัวของฐานข้อมูลประเภท BASE ซึ่งเอื้อต่อการ Scale ออกด้านข้างหรือก็คือการเพิ่มจำนวนเครื่องเซิฟเวอร์เข้ามาช่วยประมวลผลและให้บริการฐานข้อมูล ซึ่งเป็นขั้นต่อไปหลังจากทำการ Vertical Scaling ไปจนเครื่องๆนึงถึงขีดสุด
  1. High-Performance: นอกจากความสามารถในการ Scale MongoDB ถูกปรับจูนเรื่อยมาทำให้ปัจจุบันมีความสามารถในการค้าหาข้อมูลด้วยความเร็วสูงแม้ข้อมูลจะมีขนาดใหญ่และมีความซับซ้อนสูง
  1. Real Time: ระบบ Change Streams ช่วยให้ Application สามารถรับรู้การเปลี่ยนแปลงของข้อมูลบนฐานข้อมูลได้แบบ real time ซึ่งจะมาช่วยเพิ่มขีดความสามารถและความเป็นไปได้ในการพัฒนา Application รูปแบบต่างๆ
  1. Security: รองรับมาตรฐานความปลอดภัยหลายอย่างหลากมิติ ทั้งในด้าน Authentication ด้วย X.509 หรือ LDAP, ในด้าน Authorization ด้วยการกำหนด Role เป็นกลุ่ม หรือ เฉพาะบุคคล หรือไม่ว่าจะเป็นการเข้ารหัสข้อมูล Logsการแก้ไข การกำหนด Whitelist IP และอื่นๆอีกมากมาย

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

ต่อไปจะเป็นตัวอย่างการใช้งาน MongoDB ผ่านการเขียนโค้ด

โดยจะใช้เป็น python เพื่อความเข้าใจง่าย

จากตัวอย่างเป็นการเชื่อมต่อไปยังฐานข้อมูล เลือก collection ที่ต้องการโดยให้ชื่อว่า snack_collection พร้อมทั้งแสดงการ insert ข้อมูลและ query ข้อมูลจาก collection นั้น

MongoDB เหมาะกับใคร?

1. **บริษัทด้านเทคโนโลยี**: ไม่ว่าจะเป็นบริษัทใหญ่ๆ หรือบริษัทเทคโนโลยีชั้นนำของโลกก็ใช้ MongoDB เพื่อการจัดเก็บข้อมูลและการประมวลผลข้อมูลที่ขนาดมหาศาล เช่น Google, Facebook, Twitter, LinkedIn, Uber, eBay, และ Airbnb

2. **บริษัทสตาร์ทอัพและบริษัทเล็ก**: ทั้งบริษัทสตาร์ทอัพและบริษัทเล็กๆ ที่มีการเปลี่ยนแปลงและลองผิดลองถูกตลอดเวลา ความยืดหยุ่นในการจัดเก็บข้อมูลและการทำงานกับข้อมูลแบบ real-time เป็นเหตุผลสำคัญที่บริษัทเหล่านี้เลือกใช้ MongoDB เช่นบริษัทผู้ให้บริการสตรีมมิ่งเพลงชื่อดัง (Spotify) และแม้กระทั่งบริษัทด้านการเงินและการลงทุน (Robinhood)

3. **นักพัฒนาซอฟต์แวร์**: นักพัฒนาซอฟต์แวร์ หรือ Dev ที่อยากจะเริ่มพัฒนาและทดสอบโปรแกรมของตนเอง มักจะเลือกใช้ MongoDB เนื่องจากความยืดหยุ่นในการเปลี่ยนแปลงโครงสร้างข้อมูลและการทำงานกับข้อมูล

4. **นักวิจัยและผู้ที่ทำงานเกี่ยวกับข้อมูล**: MongoDB ถูกใช้ในการทำงานวิจัยหลายประเภท และถูกนำมาใช้ในการวิเคราะห์ข้อมูลที่มีปริมาณมากๆ ความยืดหยุ่นทำให้การทดลองและแก้ไขปรับปรุงโมเดลเป็นไปอย่างราบรื่น

5. **สถาบันการศึกษา**: มหาวิทยาลัยและสถานศึกษาหลายแห่งก็ใช้ MongoDB เพื่อการจัดเก็บข้อมูลรวมถึงข้อมูลการวิจัยทั้งด้านการศึกษาและด้านวิชาการ

หากให้พูดแล้ว MongoDB ได้รับความนิยมและมีความเหมาะสมกับสายงานหลายสายงาน ไม่ว่าจะบริษัทใหญ่เล็ก นักวิจัยหรือพัฒนาหรือบุคคลทั่วไปที่มีความสนใจที่จะใช้งานฐานข้อมูลที่มีความยืดหยุ่นและประสิทธิภาพสูง

สอบถามข้อมูลเพิ่มเติม

Tel:  02-690-3888

Email: [email protected]

Line@: https://lin.ee/UuDe5UF

Facebook: https://shorturl.at/hiqvZ

Linked in: https://lnkd.in/gWswKzzh

Website: https://www.proen.co.th/th/

Instagram: https://shorturl.at/nvEMZ

TikTok: https://shorturl.at/ayMW0

YouTube: https://shorturl.at/noAT0

#หมายเหตุ การเลือกใช้งานประเภทฐานข้อมูลขึ้นอยู่กับความต้องการและข้อจำกัดของประเภทแอพพลิเคชั่นที่เราสร้าง หากให้ยกตัวอย่างคือข้อมูลที่ต้องการความแม่นยำสูงเราจะใช้ SQL เช่นฐานข้อมูลเงินในธนาคาร ด้วยหลักการ ACID ที่จะหมายถึงการโอนเงินต้องประมวลผลทีละคู่ของบัญชีและหากการประมวลผลการโอนเงินล้มเหลวที่ขั้นตอนใดขั้นตอนหนึ่ง กระบวนการทั้งหมดจะถูกย้อนกลับ ต่างจาก NoSQL (MongoDB) ที่มีหลักการ BASE ที่จะเน้นไปที่ความพร้อมให้ใช้งานแป็นหลัก โดยแต่ละคำสั่งไม่ต้องรอกันหากมันไม่ชนกัน ข้อมูลจะออกมาถูกต้องเองหลังประมวลผลเสร็จหมด และข้อมูลจะค่อยๆ sync ข้ามฐานข้อมูลกันทำให้ทุกฐานข้อมูลมีข้อมูลที่ถูกต้องเหมือนกันในตอนสุดท้าย