## ฐานข้อมูลแบบ NoSQL - JSON และ BSON ใน MongoDB
การพัฒนาเทคโนโลยีและการเปลี่ยนแปลงของข้อมูลในยุคปัจจุบันเรียกได้ว่ามีความซับซ้อนและปริมาณมากขึ้นเรื่อยๆ นั่นทำให้ฐานข้อมูลแบบเชิงสัมพันธ์ (Relational Database) ที่เราเคยใช้กันมาเป็นเวลานานอาจจะไม่เหมาะสมกับทุกสถานการณ์อีกต่อไป นั่นเป็นเหตุผลที่ทำให้ฐานข้อมูลแบบ NoSQL ได้รับความนิยมมากขึ้นในหมู่นักพัฒนาและบริษัทเทคโนโลยี
หนึ่งในฐานข้อมูลแบบ NoSQL ที่มีชื่อเสียงและถูกใช้อย่างแพร่หลายคือ "MongoDB" ซึ่งเป็นฐานข้อมูลที่มีการจัดเก็บข้อมูลในรูปแบบที่แตกต่างจากฐานข้อมูลเชิงสัมพันธ์ โดยใช้ JSON (JavaScript Object Notation) or BSON (Binary JSON) เป็นรูปแบบของการจัดเก็บข้อมูล
JSON: รูปแบบข้อมูลเบื้องต้น
JSON เป็นรูปแบบในการจัดเก็บและแลกเปลี่ยนข้อมูลที่ง่ายต่อการอ่านและเขียนสำหรับมนุษย์ และง่ายต่อการแปลงและสร้างสำหรับเครื่องจักร ข้อมูลใน JSON มีความยืดหยุ่นสูง ประกอบด้วยรายการซึ่งสามารถเป็นได้ทั้ง string, number, array, object, หรือ null ยกตัวอย่างเช่น:
{
"name": "John Doe",
"age": 29,
"isStudent": false,
"courses": ["Mathematics", "Computer Science"]
}
ข้อดีของ JSON คือความสามารถในการอ่านง่าย แต่เมื่อปริมาณข้อมูลเพิ่มขึ้น ข้อเสียก็คือตัว JSON เองจะใช้แหล่งเก็บข้อมูลมากกว่ารูปแบบอื่นเนื่องจากความจำเป็นต้องมีการจัดรูปแบบ (เช่น คอมม่า, วงเล็บ)
BSON: รูปแบบข้อมูลที่ปรับปรุงขึ้น
BSON ย่อมาจาก Binary JSON เป็นรูปแบบที่ MongoDB ใช้จัดเก็บข้อมูลจริงๆ มันคือการแปลง JSON ให้เป็นรูปแบบไบนารีที่มีประสิทธิภาพมากขึ้น เปรียบเสมือน JSON ที่บีบอัดและสามารถเก็บข้อมูลชนิด data type ที่หลากหลายได้มากขึ้น เช่น integer, floating point, datetime ซึ่งแตกต่างจาก JSON ที่บันทึกข้อมูลแบบ string มากที่สุด
ตัวอย่างของ BSON ที่สอดคล้องกับ JSON ข้างบนคือ:
\x16\x00\x00\x00
\x02name\x00\x08\x00\x00\x00John Doe\x00
\x10age\x00\x1d\x00\x00\x00
\x08isStudent\x00\x00
\x04courses\x00\x29\x00\x00\x00
\x020\x00\x0b\x00\x00\x00Mathematics\x00
\x021\x00\x0f\x00\x00\x00Computer Science\x00
\x00
หากถามว่า BSON ดูเหมือนข้อมูลจริงๆ หรือไม่ คงตอบได้ว่าไม่ แต่ความเร็วและขนาดที่เล็กกว่าคือข้อได้เปรียบที่ทำให้ BSON ถูกเลือกใช้งานใน MongoDB
MongoDB เป็นฐานข้อมูลที่เก็บข้อมูลในรูปแบบเอกสาร ซึ่งมีความยืดหยุ่นและสามารถปรับขนาดได้ง่าย ใช้โครงสร้างของเอกสารที่สอดคล้องกับ JSON ข้างต้น แต่เมื่อถูกเก็บลงในฐานข้อมูล ข้อมูลเหล่านี้จะถูกเปลี่ยนเป็น BSON เพื่อความรวดเร็วและประสิทธิภาพ
ตัวอย่างการใช้งาน MongoDB ด้วย Node.js
Node.js เป็นหนึ่งในแพลตฟอร์มยอดนิยมที่สามารถเชื่อมต่อกับ MongoDB ได้ง่าย โดยใช้โมดูล `mongodb` ลองพิจารณาตัวอย่างการใช้งานง่ายๆ ดังนี้:
const { MongoClient } = require('mongodb');
async function run() {
const uri = 'mongodb://localhost:27017';
const client = new MongoClient(uri);
try {
await client.connect();
console.log('Connected to MongoDB');
const database = client.db('sample_db');
const collection = database.collection('users');
const doc = {
name: "John Doe",
age: 29,
isStudent: false,
courses: ["Mathematics", "Computer Science"]
};
const result = await collection.insertOne(doc);
console.log(`New document created with ID: ${result.insertedId}`);
} finally {
await client.close();
}
}
run().catch(console.error);
ในโค้ดข้างต้น เราได้ทำการเชื่อมต่อไปยัง MongoDB แล้วทำการสร้างเอกสารใหม่ในคอลเลกชันชื่อ `users` ภายใต้ฐานข้อมูล `sample_db` ข้อมูลที่เราส่งเข้าไปเป็น JSON และ MongoDB จะทำการแปลงเป็น BSON เพื่อเก็บในระบบ
MongoDB เป็นตัวเลือกที่ง่ายต่อการปรับใช้งานโดยเฉพาะในยุคที่ฐานข้อมูลต้องถูกใช้งานให้ตรงกับรูปแบบของข้อมูลที่ไม่คงที่ ถ้าคุณกำลังค้นหาความรู้เพิ่มเติม อย่าลืมศึกษาโปรแกรมการเรียนที่ EPT ที่ซึ่งมีเนื้อหาครอบคลุมทั้งภาคทฤษฎีและปฏิบัติ เพื่อให้คุณสามารถก้าวสู่การเป็นผู้เชี่ยวชาญในสายงานเทคโนโลยีได้อย่างมั่นใจ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM