BSON (Binary JSON) คือการเข้ารหัสแบบไบนารีของเอกสาร JSON-like ที่ใช้ในฐานข้อมูล MongoDB บทความนี้ให้ภาพรวมของ BSON รูปแบบข้อมูลไบนารีที่ใช้โดย MongoDB เพื่อจัดเก็บเอกสาร
อธิบายว่า BSON คืออะไร ขยายขีดความสามารถของ JSON ได้อย่างไร และความแตกต่างที่สำคัญระหว่าง BSON และ JSON นอกจากนี้ ยังรวมถึงวิธีที่ Apidog จัดการสิ่งนี้โดยอัตโนมัติ นอกจากนี้ยังแสดงตัวอย่างการดำเนินการ CRUD ขั้นพื้นฐานและคำสั่งฐานข้อมูลโดยใช้ Apidog เพื่อโต้ตอบกับ MongoDB
Bson ใน MongoDB คืออะไร
BSON (Binary JSON) คือรูปแบบข้อมูลหลักที่ใช้ในฐานข้อมูล MongoDB สิ่งสำคัญบางประการที่ควรรู้เกี่ยวกับ BSON ใน MongoDB:
- BSON คือตัวแทนไบนารีของเอกสาร JSON ขยาย JSON ด้วยประเภทข้อมูลเพิ่มเติม เช่น วันที่, การประทับเวลา, ข้อมูลไบนารี ฯลฯ
- MongoDB จัดเก็บข้อมูลทั้งหมดภายในเป็น BSON เมื่อคุณแทรกเอกสารลงใน MongoDB จะถูกแปลงเป็น BSON ก่อนที่จะเขียนลงดิสก์
- BSON เข้ารหัสข้อมูลประเภทและความยาว ทำให้ MongoDB สามารถสแกนและสำรวจเอกสารได้อย่างมีประสิทธิภาพโดยไม่ต้องตรวจสอบและตีความแต่ละรายการ ซึ่งช่วยปรับปรุงประสิทธิภาพ
- BSON ได้รับการออกแบบมาให้มีน้ำหนักเบา สามารถสำรวจได้ และมีประสิทธิภาพในการเข้ารหัส/ถอดรหัส ทำให้เหมาะสำหรับการจัดเก็บข้อมูลและรูปแบบการแลกเปลี่ยนข้อมูลสำหรับ MongoDB
- ส่วนขยายไฟล์เริ่มต้นสำหรับไฟล์ BSON คือ .bson เครื่องมือ Mongo เช่น Mongoexport สามารถใช้เพื่อส่งออกข้อมูล MongoDB ไปยัง BSON สำหรับการสำรองข้อมูลหรือการโยกย้าย
- BSON ได้รับการออกแบบมาให้สามารถสำรวจได้สูง การสืบค้น MongoDB ใช้ดัชนีเพื่อค้นหาและดึงผลลัพธ์อย่างรวดเร็วโดยไม่ต้องสแกนทุกเอกสาร
โครงสร้างของเอกสาร BSON
BSON (Binary JSON) คือการเข้ารหัสแบบไบนารีของเอกสาร JSON-like ที่ใช้ในฐานข้อมูล MongoDB เอกสาร BSON มีคู่ฟิลด์-ค่าตามลำดับคล้ายกับอ็อบเจกต์ JSON
ฟิลด์สามารถเป็นสตริง UTF-8 ที่ถูกต้องใดๆ ในขณะที่ค่าสามารถเป็นหนึ่งในประเภทข้อมูล BSON หลายประเภท เช่น สตริง, จำนวนเต็ม, ทศนิยมคู่, ข้อมูลไบนารี, อาร์เรย์, เอกสาร, บูลีน, วันที่, null ฯลฯ โครงสร้างของเอกสาร BSON เริ่มต้นด้วยจำนวนเต็ม 4 ไบต์ที่ระบุขนาดเอกสารทั้งหมด
ถัดไปคือคู่ฟิลด์-ค่าที่มีฟิลด์ "_id" ซึ่งระบุเอกสารที่ไม่ซ้ำกัน เนื้อหาของเอกสารตามด้วยคู่ฟิลด์-ค่าแต่ละคู่ที่เข้ารหัสในรูปแบบไบนารีเฉพาะตามประเภทข้อมูล
ตัวอย่างที่แสดงโครงสร้างของเอกสาร BSON:
// Sample BSON document
{
_id: ObjectId("507f1f77bcf86cd799439011"), // 12-byte unique ID
name: "John Doe", // String
age: 35, // Integer
address: { // Embedded document
street: "123 Main St",
city: "Anytown",
state: "CA"
},
hobbies: ["reading", "hiking","swimming"], // Array
graduated: true, // Boolean
birthday: ISODate("1980-05-15T00:00:00Z"), // Date
data: BinData(0, "SGVsbG8gV29ybGQ="), // Binary data
ts: Timestamp(1590583045633, 1) // Timestamp
}
สิ่งสำคัญที่ควรทราบ:
- ฟิลด์
_idระบุเอกสารที่ไม่ซ้ำกัน - คู่ฟิลด์-ค่ามีลำดับที่กำหนด
- รองรับประเภทข้อมูลเพิ่มเติม เช่น ISODate, ObjectId ฯลฯ
- สามารถฝังเอกสารและอาร์เรย์ได้
- จัดเก็บข้อมูลไบนารีอย่างมีประสิทธิภาพ
ความแตกต่างระหว่าง JSON และ BSON คืออะไร
นี่คือความแตกต่างหลักระหว่าง JSON และ BSON:
- การเข้ารหัส: JSON เป็นแบบข้อความและเข้ารหัสใน UTF-8 ในขณะที่ BSON เป็นแบบไบนารี
- ประเภทข้อมูล: JSON รองรับประเภทข้อมูลที่จำกัด เช่น สตริง, ตัวเลข, บูลีน, อาร์เรย์ และอ็อบเจกต์ BSON รองรับประเภทเพิ่มเติม เช่น วันที่, ข้อมูลไบนารี, นิพจน์ทั่วไป ฯลฯ
- ประสิทธิภาพ: การเข้ารหัส BSON แบบไบนารีช่วยให้จัดเก็บและค้นหาข้อมูลได้อย่างมีประสิทธิภาพมากกว่า JSON เอกสาร BSON มีคำนำหน้าความยาวและไม่มีช่องว่าง ทำให้สามารถแยกวิเคราะห์ได้เร็วขึ้น
- การเรียงลำดับ: คู่ฟิลด์-ค่าในเอกสาร BSON ถูกจัดเรียงตามลำดับ ทำให้สามารถสำรวจและจัดทำดัชนีได้อย่างมีประสิทธิภาพ อ็อบเจกต์ JSON ไม่มีการรับประกันการเรียงลำดับ
- ความยืดหยุ่น: BSON ให้ความยืดหยุ่นบางอย่างเหนือ JSON เช่น การอนุญาตให้ชื่อฟิลด์มีอักขระพิเศษและ Unicode
- การใช้งาน: JSON เป็นรูปแบบทั่วไปที่ใช้กันอย่างแพร่หลายบนเว็บและแอปพลิเคชัน BSON ใช้เฉพาะในฐานข้อมูล MongoDB เป็นตัวแทนข้อมูลหลัก
- Schema: JSON เป็นแบบ schema-less โดยค่าเริ่มต้น ในขณะที่ MongoDB อนุญาตให้บังคับใช้ schemas สำหรับเอกสาร BSON ผ่านกฎการตรวจสอบ
- ค่า Null: JSON มีค่า null เดียว BSON แยกความแตกต่างระหว่างฟิลด์ null และ missing
การแปลง JSON และ BSON ใน MongoDB ด้วย Apidog
Apidog เป็นชุดเครื่องมือ API ที่ช่วยลดความซับซ้อนในการพัฒนา API มี MongoDB เป็นหนึ่งในตัวเลือกฐานข้อมูลแบบบูรณาการ โดยใช้ MongoDB กับ Apidog คุณสามารถจัดเก็บ API mocks และการทดสอบใน MongoDB เป็นแบ็กเอนด์ได้
การตอบสนอง API จำลองที่ส่งโดย Apidog สามารถขับเคลื่อนได้ด้วยข้อมูลที่เก็บไว้ในฐานข้อมูล MongoDB ซึ่งช่วยให้ Apidog ใช้ MongoDB เป็นแหล่งข้อมูลถาวรสำหรับ API ที่จำลอง ถัดไป เราจะอธิบายความสัมพันธ์ของ JSON และ BSON กับคุณ
MongoDB จัดเก็บข้อมูลเป็นเอกสาร BSON ซึ่งสามารถมองว่าเป็นชุดย่อยของ JSON เมื่อใช้งานฐานข้อมูล MongoDB ด้วย Apidog จะใช้ JSON เพื่อเขียนเนื้อหา Apidog จะแมปแต่ละฟิลด์ไปยังประเภทข้อมูล BSON ที่สอดคล้องกันโดยอัตโนมัติตามเนื้อหา JSON จริง
กรณีพิเศษอย่างหนึ่งคือฟิลด์ _id ตามธรรมเนียมของ MongoDB เอกสารแต่ละฉบับต้องมีฟิลด์ _id เป็นคีย์หลัก โดยมี ObjectId เป็นประเภทข้อมูลเริ่มต้นแทนที่จะเป็น string
ด้วย Apidog ในการประกาศฟิลด์ _id ของประเภท ObjectId ให้ใช้รูปแบบสตริงปกติ หากเนื้อหาสตริงเป็นไปตามรูปแบบ ObjectId Apidog จะแมปไปยังประเภท ObjectId ของ BSON โดยอัตโนมัติ
ตัวอย่างเช่น ใน MongoDb มีเอกสาร BSON เช่น:
Copy code
{
_id: ObjectId('654e056de3662b1c09477cc3
'),
name: "Apidog"
}
จากนั้นในการสืบค้นเอกสารนี้โดย _id ด้วย Apidog JSON ที่จะใส่ใน "เงื่อนไขการสืบค้น" จะเป็น:
Copy code
{
"_id": "654e056de3662b1c09477cc3"
}




