BSON (Binary JSON) هو تسلسل مشفر ثنائي لوثائق مشابهة لـ JSON يستخدم في قواعد بيانات 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 يستخدم في قواعد بيانات MongoDB. يحتوي مستند BSON على أزواج حقل-قيمة مرتبة تشبه كائنات JSON.
يمكن أن تكون الحقول أي سلاسل UTF-8 صحيحة، بينما يمكن أن تكون القيم واحدة من عدة أنواع بيانات BSON مثل السلسلة، والعدد الصحيح، والعدد العشري، والبيانات الثنائية، والمصفوفة، والمستند، والقيمة المنطقية، والتاريخ، والقيمة null، وغيرها. يبدأ هيكل مستند BSON برقم صحيح مكون من 4 بايت يشير إلى الحجم الإجمالي للمستند.
التالي هو زوج الحقل-القيمة الذي يحتوي على حقل "_id" الذي يحدد المستند بشكل فريد. يتبع محتوى المستند مع ترميز كل زوج حقل-قيمة بتنسيق ثنائي محدد بناءً على نوع البيانات.
مثال يوضح هيكل مستند BSON:
// مستند BSON عينة
{
_id: ObjectId("507f1f77bcf86cd799439011"), // معرف فريد مكون من 12 بايت
name: "جون دو", // سلسلة
age: 35, // عدد صحيح
address: { // مستند مدرج
street: "123 الشارع الرئيسي",
city: "أي مدينة",
state: "كاليفورنيا"
},
hobbies: ["قراءة", "تسلق الجبال","سباحة"], // مصفوفة
graduated: true, // قيمة منطقية
birthday: ISODate("1980-05-15T00:00:00Z"), // تاريخ
data: BinData(0, "SGVsbG8gV29ybGQ="), // بيانات ثنائية
ts: Timestamp(1590583045633, 1) // طابع زمني
}
أمور رئيسية يجب ملاحظتها:
_id
الحقل يحدد المستند بشكل فريد- أزواج الحقل-القيمة لها ترتيب محدد
- يدعم أنواع بيانات إضافية مثل ISODate، ObjectId، وغيرها
- يمكن تضمين المستندات والمصفوفات
- البيانات الثنائية مخزنة بكفاءة
ما هو الفرق بين JSON وBSON؟
إليك الاختلافات الرئيسية بين JSON وBSON:
- الترميز: JSON يعتمد على النص ويُشفّر بتنسيق UTF-8، بينما يُشفّر BSON بتنسيق ثنائي.
- أنواع البيانات: JSON يدعم أنواع بيانات محدودة مثل السلاسل، والأرقام، والقيم المنطقية، والمصفوفات، والكائنات. بينما يدعم BSON أنواعًا إضافية مثل التواريخ، والبيانات الثنائية، والتعبيرات العادية، وغيرها.
- الكفاءة: يسمح الترميز الثنائي لـ BSON بتخزين بيانات واسترجاعها بشكل أكثر كفاءة مقارنة بـ JSON. تحتوي وثائق BSON على بادئة طول ولا تحتوي على فراغات، بحيث يمكن تحليلها بشكل أسرع.
- الترتيب: أزواج الحقل-القيمة في مستندات BSON مرتبة مما يسمح بالتنقل الفعال والفهرسة. أما كائنات JSON فلا تضمن ذلك.
- المرونة: يوفر BSON بعض المرونة على JSON، مثل السماح لأسماء الحقول أن تحتوي على أحرف خاصة ويوتيود.
- الاستخدام: JSON هو تنسيق عام يستخدم على نطاق واسع عبر الويب والتطبيقات. بينما يتم استخدام BSON خصيصًا في قواعد بيانات MongoDB كممثل أساسي للبيانات.
- المخطط: JSON غير مخطط بشكل افتراضي بينما يسمح MongoDB بفرض المخططات لمستندات BSON من خلال قواعد التحقق.
- القيم null: يحتوي JSON على قيمة null واحدة. بينما يميز BSON بين القيم null والحقول المفقودة.
تحويل JSON وBSON في MongoDB باستخدام Apidog
Apidog هو مجموعة أدوات API تسهل تطوير API. يقدم MongoDB كواحد من خيارات قواعد البيانات المدمجة. من خلال استخدام MongoDB مع Apidog، يمكنك تخزين نماذج واستطلاعات API في 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 مثل:
نسخ الكود
{
_id: ObjectId('654e056de3662b1c09477cc3
'),
name: "Apidog"
}
ثم لاستعلام هذا المستند بواسطة _id
باستخدام Apidog، سيكون JSON لوضعه في "شرط الاستعلام" كما يلي:
نسخ الكود
{
"_id": "654e056de3662b1c09477cc3"
}
