1. مقدمة عن MongoDB

MongoDB هي قاعدة بيانات وثائقية مفتوحة المصدر تم تصميمها لتوفير قابلية توسع عالية وأداء متميز وتوافر مستمر. على عكس قواعد البيانات العلائقية التقليدية، تستخدم MongoDB نموذج بيانات مرن يعتمد على الوثائق بتنسيق BSON (Binary JSON)، مما يسمح بتخزين البيانات بطريقة أكثر طبيعية وفعالية للتطبيقات الحديثة.

لماذا MongoDB؟

  • نموذج بيانات مرن: لا حاجة لتحديد مخطط ثابت مسبقاً، مما يسمح بالتطوير السريع والتكيف مع المتطلبات المتغيرة.
  • قابلية التوسع الأفقي: تدعم التجزئة التلقائية لتوزيع البيانات عبر عدة خوادم.
  • أداء عالي: تحسين للقراءة والكتابة مع دعم للفهارس المتقدمة.
  • توافر عالي: دعم مجموعات النسخ المتماثلة للنسخ الاحتياطي التلقائي واستعادة الخدمة.
  • تكامل سهل: واجهة برمجة تطبيقات بسيطة وسهلة الاستخدام مع معظم لغات البرمجة.

ملاحظة

MongoDB هي قاعدة بيانات NoSQL، وهذا يعني أنها لا تستخدم لغة SQL التقليدية للاستعلامات. بدلاً من ذلك، تستخدم MongoDB واجهة برمجة تطبيقات خاصة بها تعتمد على الكائنات والدوال.

2. تثبيت MongoDB

يمكن تثبيت MongoDB على مختلف أنظمة التشغيل بما في ذلك Windows وmacOS وLinux. سنستعرض خطوات التثبيت لكل نظام تشغيل.

تثبيت MongoDB على Windows

  1. 1

    تنزيل المثبت: قم بزيارة الموقع الرسمي لـ MongoDB وتنزيل أحدث إصدار من MongoDB Community Server.

  2. 2

    تشغيل المثبت: قم بتشغيل ملف التثبيت الذي تم تنزيله واتبع التعليمات.

    اختر "Complete" للتثبيت الكامل أو "Custom" لتخصيص خيارات التثبيت.

  3. 3

    تكوين MongoDB كخدمة: خلال عملية التثبيت، يمكنك اختيار تثبيت MongoDB كخدمة Windows، وهو ما يوصى به.

  4. 4

    التحقق من التثبيت: افتح موجه الأوامر وقم بتشغيل الأمر التالي للتحقق من إصدار MongoDB المثبت:

    mongod --version

تثبيت MongoDB على macOS

يمكن تثبيت MongoDB على macOS باستخدام Homebrew أو من خلال تنزيل الحزمة مباشرة.

باستخدام Homebrew:

brew tap mongodb/brew
brew install mongodb-community

تشغيل MongoDB:

brew services start mongodb-community

تثبيت MongoDB على Linux (Ubuntu)

# إضافة مفتاح GPG الرسمي لـ MongoDB
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

# إضافة مستودع MongoDB
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

# تحديث قائمة الحزم
sudo apt-get update

# تثبيت MongoDB
sudo apt-get install -y mongodb-org

# بدء خدمة MongoDB
sudo systemctl start mongod

# تمكين MongoDB للبدء تلقائيًا عند إعادة تشغيل النظام
sudo systemctl enable mongod

نصيحة

بعد تثبيت MongoDB، يمكنك تثبيت MongoDB Compass، وهي واجهة مستخدم رسومية لإدارة قواعد بيانات MongoDB بشكل مرئي. يمكن تنزيلها من هنا.

3. المفاهيم الأساسية في MongoDB

قبل البدء في استخدام MongoDB، من المهم فهم المفاهيم الأساسية التي تشكل بنية قاعدة البيانات.

مقارنة بين MongoDB وقواعد البيانات العلائقية

قواعد البيانات العلائقية MongoDB
قاعدة البيانات قاعدة البيانات
الجداول المجموعات (Collections)
الصفوف الوثائق (Documents)
الأعمدة الحقول (Fields)
المفتاح الأساسي _id
الفهارس الفهارس
الجداول المرتبطة / الانضمام الوثائق المضمنة / المراجع

3.1 قواعد البيانات

قاعدة البيانات في MongoDB هي حاوية فعلية للمجموعات. يمكن أن يحتوي خادم MongoDB على العديد من قواعد البيانات، وكل قاعدة بيانات تحتوي على مجموعة خاصة بها من المجموعات والمستخدمين.

# إنشاء قاعدة بيانات جديدة أو التبديل إلى قاعدة بيانات موجودة
use myDatabase

# عرض قاعدة البيانات الحالية
db

# عرض جميع قواعد البيانات
show dbs

ملاحظة

قاعدة البيانات لن تظهر في قائمة قواعد البيانات (show dbs) حتى يتم إنشاء مجموعة واحدة على الأقل فيها.

3.2 المجموعات

المجموعة (Collection) في MongoDB هي مجموعة من وثائق MongoDB. وهي تعادل الجداول في قواعد البيانات العلائقية. المجموعات لا تفرض أي مخطط، مما يعني أن الوثائق داخل نفس المجموعة يمكن أن تحتوي على حقول مختلفة.

# إنشاء مجموعة جديدة
db.createCollection("users")

# عرض جميع المجموعات في قاعدة البيانات الحالية
show collections

يمكن أيضًا إنشاء مجموعة تلقائيًا عند إدراج وثيقة في مجموعة غير موجودة:

# إنشاء مجموعة تلقائيًا عند إدراج وثيقة
db.products.insertOne({ name: "Laptop", price: 999 })

3.3 الوثائق

الوثيقة (Document) هي مجموعة من أزواج المفتاح-القيمة. الوثائق لها بنية ديناميكية، مما يعني أن الوثائق في نفس المجموعة لا تحتاج إلى أن تكون متطابقة. الوثائق في MongoDB تشبه كائنات JSON ولكنها تُخزن في تنسيق BSON (Binary JSON).

// مثال لوثيقة MongoDB
{
   _id: ObjectId("60f7b5b9e95f2b2b5c9e8b7a"),
   name: "أحمد محمد",
   email: "[email protected]",
   age: 30,
   address: {
      city: "القاهرة",
      country: "مصر"
   },
   hobbies: ["القراءة", "السفر", "البرمجة"],
   active: true,
   created_at: ISODate("2023-07-20T12:30:45.000Z")
}

كل وثيقة في MongoDB تحتوي على حقل خاص يسمى _id يعمل كمعرف فريد للوثيقة. إذا لم تحدد قيمة لـ _id عند إنشاء وثيقة، فسيقوم MongoDB تلقائيًا بإنشاء ObjectId فريد.

3.4 تنسيق BSON

BSON (Binary JSON) هو تنسيق التشفير الثنائي المستخدم لتخزين الوثائق ونقلها في MongoDB. يوسع نموذج JSON ليدعم أنواع بيانات إضافية وليكون أكثر كفاءة في الحجم والسرعة.

أنواع البيانات المدعومة في BSON

  • String: سلاسل نصية UTF-8
  • Integer: أعداد صحيحة 32-bit و 64-bit
  • Double: أرقام عشرية 64-bit
  • Boolean: قيم منطقية (true/false)
  • Date: تاريخ ووقت بدقة مللي ثانية
  • ObjectId: معرفات فريدة 12-byte
  • Array: مصفوفات من القيم
  • Object: وثائق مضمنة
  • Null: قيمة فارغة
  • Binary Data: بيانات ثنائية
  • Regular Expression: تعبيرات منتظمة
  • Timestamp: طوابع زمنية داخلية

تحذير

على الرغم من أن BSON يدعم العديد من أنواع البيانات، إلا أن بعض لغات البرمجة قد لا تدعم جميع هذه الأنواع بشكل مباشر. تأكد من استخدام مكتبة MongoDB الرسمية للغة البرمجة الخاصة بك للتعامل مع هذه الأنواع بشكل صحيح.

4. عمليات CRUD

عمليات CRUD (Create, Read, Update, Delete) هي العمليات الأساسية للتعامل مع البيانات في أي قاعدة بيانات. في MongoDB، يتم تنفيذ هذه العمليات باستخدام مجموعة من الدوال المتاحة في واجهة برمجة التطبيقات.

4.1 إنشاء البيانات (Create)

تستخدم عمليات الإنشاء لإدراج وثائق جديدة في مجموعة. هناك طريقتان رئيسيتان لإدراج البيانات في MongoDB:

إدراج وثيقة واحدة (insertOne)

// إدراج وثيقة واحدة
db.users.insertOne({
    name: "محمد أحمد",
    email: "[email protected]",
    age: 28,
    active: true
})

نتيجة العملية ستكون:

{
    "acknowledged": true,
    "insertedId": ObjectId("60f7b5b9e95f2b2b5c9e8b7a")
}

إدراج عدة وثائق (insertMany)

// إدراج عدة وثائق
db.products.insertMany([
    {
        name: "لابتوب",
        price: 999,
        category: "إلكترونيات"
    },
    {
        name: "هاتف ذكي",
        price: 699,
        category: "إلكترونيات"
    },
    {
        name: "سماعات",
        price: 99,
        category: "إكسسوارات"
    }
])

نتيجة العملية ستكون:

{
    "acknowledged": true,
    "insertedIds": {
        "0": ObjectId("60f7b5b9e95f2b2b5c9e8b7b"),
        "1": ObjectId("60f7b5b9e95f2b2b5c9e8b7c"),
        "2": ObjectId("60f7b5b9e95f2b2b5c9e8b7d")
    }
}

4.2 قراءة البيانات (Read)

عمليات القراءة تستخدم للبحث عن الوثائق واسترجاعها من المجموعات. MongoDB توفر عدة طرق للاستعلام عن البيانات.

البحث عن جميع الوثائق (find)

// البحث عن جميع الوثائق في مجموعة
db.users.find()

البحث باستخدام شروط (find with query)

// البحث عن وثائق تطابق شرطًا معينًا
db.users.find({ age: { $gt: 25 } })

// البحث عن وثائق تطابق عدة شروط
db.products.find({
    category: "إلكترونيات",
    price: { $lt: 800 }
})

البحث عن وثيقة واحدة (findOne)

// البحث عن أول وثيقة تطابق الشرط
db.users.findOne({ email: "[email protected]" })

تحديد الحقول المطلوبة (Projection)

// استرجاع حقول محددة فقط
db.users.find(
    { age: { $gt: 25 } },  // شرط البحث
    { name: 1, email: 1, _id: 0 }  // الحقول المطلوبة (1 للإظهار، 0 للإخفاء)
)

ترتيب النتائج (sort)

// ترتيب النتائج تصاعديًا حسب السعر
db.products.find().sort({ price: 1 })

// ترتيب النتائج تنازليًا حسب السعر
db.products.find().sort({ price: -1 })

تحديد عدد النتائج (limit) والتخطي (skip)

// استرجاع أول 5 وثائق
db.products.find().limit(5)

// تخطي أول 10 وثائق واسترجاع 5 التالية (مفيد للصفحات)
db.products.find().skip(10).limit(5)

نصيحة

يمكن استخدام سلسلة من العمليات معًا للحصول على نتائج أكثر تحديدًا:

db.products.find({ category: "إلكترونيات" })
    .sort({ price: -1 })
    .skip(5)
    .limit(10)

4.3 تحديث البيانات (Update)

عمليات التحديث تستخدم لتعديل الوثائق الموجودة في المجموعات. MongoDB توفر عدة طرق لتحديث البيانات.

تحديث وثيقة واحدة (updateOne)

// تحديث وثيقة واحدة
db.users.updateOne(
    { email: "[email protected]" },  // شرط البحث
    { $set: { age: 29, active: false } }  // التحديثات المطلوبة
)

تحديث عدة وثائق (updateMany)

// تحديث عدة وثائق
db.products.updateMany(
    { category: "إلكترونيات" },  // شرط البحث
    { $inc: { price: 50 } }  // زيادة السعر بمقدار 50
)

استبدال وثيقة كاملة (replaceOne)

// استبدال وثيقة كاملة
db.users.replaceOne(
    { email: "[email protected]" },  // شرط البحث
    {  // الوثيقة الجديدة بالكامل
        name: "محمد علي",
        email: "[email protected]",
        age: 30,
        address: {
            city: "الرياض",
            country: "السعودية"
        },
        active: true
    }
)

عوامل التحديث الشائعة

  • $set: تعيين قيم جديدة للحقول
  • $inc: زيادة قيمة حقل رقمي
  • $push: إضافة عنصر إلى مصفوفة
  • $pull: إزالة عنصر من مصفوفة
  • $unset: إزالة حقل من الوثيقة
  • $rename: إعادة تسمية حقل
  • $mul: ضرب قيمة حقل رقمي
  • $min/$max: تحديث قيمة إذا كانت أصغر/أكبر من القيمة الحالية

ملاحظة

يمكن استخدام خيار upsert: true مع عمليات التحديث لإنشاء وثيقة جديدة إذا لم يتم العثور على وثيقة تطابق شرط البحث.

db.users.updateOne(
    { email: "[email protected]" },
    { $set: { name: "مستخدم جديد", age: 25 } },
    { upsert: true }
)

4.4 حذف البيانات (Delete)

عمليات الحذف تستخدم لإزالة الوثائق من المجموعات. MongoDB توفر طريقتين رئيسيتين للحذف.

حذف وثيقة واحدة (deleteOne)

// حذف أول وثيقة تطابق الشرط
db.users.deleteOne({ email: "[email protected]" })

حذف عدة وثائق (deleteMany)

// حذف جميع الوثائق التي تطابق الشرط
db.products.deleteMany({ category: "إكسسوارات" })

// حذف جميع الوثائق في المجموعة
db.products.deleteMany({})

تحذير

كن حذرًا عند استخدام deleteMany({}) لأنه سيحذف جميع الوثائق في المجموعة. تأكد من وجود نسخة احتياطية قبل تنفيذ عمليات الحذف الشاملة.

5. الفهارس

الفهارس (Indexes) في MongoDB تعمل بشكل مشابه للفهارس في قواعد البيانات العلائقية. فهي تحسن أداء عمليات البحث وتسمح بالاستعلامات الفعالة عن البيانات.

إنشاء الفهارس

// إنشاء فهرس أحادي
db.users.createIndex({ email: 1 })  // 1 للترتيب التصاعدي، -1 للترتيب التنازلي

// إنشاء فهرس مركب (على عدة حقول)
db.products.createIndex({ category: 1, price: -1 })

// إنشاء فهرس فريد
db.users.createIndex({ email: 1 }, { unique: true })

عرض الفهارس

// عرض جميع الفهارس في مجموعة
db.users.getIndexes()

حذف الفهارس

// حذف فهرس محدد
db.users.dropIndex("email_1")

// حذف جميع الفهارس (باستثناء الفهرس الأساسي _id)
db.users.dropIndexes()

تحذير

حذف الفهارس قد يؤثر سلباً على أداء الاستعلامات. تأكد من فهم تأثير حذف الفهارس قبل تنفيذ هذه العمليات في بيئة الإنتاج.

6. التجميع في MongoDB

يوفر MongoDB إطار عمل قوي للتجميع (Aggregation) يسمح بمعالجة البيانات وتحويلها بطرق متقدمة. يمكن استخدام التجميع لحساب القيم الإجمالية، وتجميع الوثائق، وتنفيذ عمليات معقدة على البيانات.

مفهوم خط أنابيب التجميع

يعتمد التجميع في MongoDB على مفهوم "خط الأنابيب" (Pipeline)، حيث تمر البيانات عبر مراحل متعددة، وكل مرحلة تقوم بتحويل البيانات بطريقة معينة.

المراحل الشائعة في خط أنابيب التجميع

  • $match: تصفية الوثائق بناءً على شروط معينة (مشابه لعملية find).
  • $project: تحديد الحقول التي سيتم تضمينها أو استبعادها من النتائج.
  • $sort: ترتيب الوثائق بناءً على حقل أو أكثر.
  • $group: تجميع الوثائق حسب قيمة محددة وتطبيق عمليات تجميع مثل المجموع أو المتوسط.
  • $limit: تحديد عدد الوثائق في النتائج.
  • $skip: تخطي عدد معين من الوثائق.
  • $sample: اختيار عينة عشوائية من الوثائق.

أمثلة على عمليات التجميع

مثال 1: حساب متوسط الأسعار حسب الفئة

db.products.aggregate([
  { $match: { active: true } },
  { $group: {
      _id: "$category",
      averagePrice: { $avg: "$price" },
      count: { $sum: 1 }
    }
  },
  { $sort: { averagePrice: -1 } }
])

مثال 2: تحليل المبيعات الشهرية

db.orders.aggregate([
  { $match: { status: "completed" } },
  { $project: {
      year: { $year: "$orderDate" },
      month: { $month: "$orderDate" },
      totalAmount: 1
    }
  },
  { $group: {
      _id: { year: "$year", month: "$month" },
      monthlySales: { $sum: "$totalAmount" },
      orderCount: { $sum: 1 }
    }
  },
  { $sort: { "_id.year": 1, "_id.month": 1 } }
])

نصيحة

استخدم مرحلة $explain مع عمليات التجميع لفهم كيفية تنفيذها وتحسين أدائها: db.collection.aggregate([...], { explain: true })

7. المعاملات في MongoDB

منذ الإصدار 4.0، تدعم MongoDB المعاملات متعددة الوثائق (Multi-Document Transactions) التي تسمح بتنفيذ مجموعة من العمليات كوحدة واحدة، بحيث تنجح جميعها أو تفشل جميعها معاً.

متى تستخدم المعاملات؟

المعاملات مفيدة في الحالات التي تتطلب الحفاظ على تناسق البيانات عبر عدة وثائق أو مجموعات، مثل:

  • تحويل الأموال بين حسابين
  • تحديث معلومات المستخدم وسجل النشاط في نفس الوقت
  • إنشاء طلب وتحديث المخزون
  • أي عملية تتطلب تغييرات مترابطة في عدة وثائق

استخدام المعاملات

// بدء جلسة
const session = db.getMongo().startSession();

// بدء المعاملة
session.startTransaction();

try {
  // الحصول على مراجع للمجموعات في الجلسة
  const accounts = session.getDatabase("finance").accounts;
  
  // تنفيذ العمليات
  accounts.updateOne(
    { _id: "account1" },
    { $inc: { balance: -100 } }
  );
  
  accounts.updateOne(
    { _id: "account2" },
    { $inc: { balance: 100 } }
  );
  
  // تأكيد المعاملة إذا نجحت جميع العمليات
  session.commitTransaction();
} catch (error) {
  // التراجع عن المعاملة في حالة حدوث خطأ
  session.abortTransaction();
  console.error("Error during transaction:", error);
} finally {
  // إنهاء الجلسة
  session.endSession();
}

تحذير

المعاملات في MongoDB لها تأثير على الأداء، لذا استخدمها فقط عند الضرورة. في معظم الحالات، يمكن تصميم نموذج البيانات بطريقة تقلل من الحاجة إلى المعاملات.

8. الأمان في MongoDB

يوفر MongoDB مجموعة شاملة من ميزات الأمان لحماية البيانات والتحكم في الوصول إليها. من المهم فهم وتطبيق هذه الميزات لضمان أمان قاعدة البيانات الخاصة بك.

المصادقة

المصادقة هي عملية التحقق من هوية المستخدمين. يدعم MongoDB عدة آليات للمصادقة:

آليات المصادقة

  • SCRAM (آلية المصادقة الافتراضية): آلية تحدي واستجابة تعتمد على كلمة المرور.
  • X.509: مصادقة تعتمد على شهادات X.509.
  • LDAP: التكامل مع خدمات الدليل مثل Active Directory.
  • Kerberos: بروتوكول مصادقة آمن للشبكات.

إنشاء مستخدم مع صلاحيات محددة

// إنشاء مستخدم مع صلاحيات القراءة والكتابة على قاعدة بيانات محددة
db.createUser({
  user: "appUser",
  pwd: "securePassword",
  roles: [{ role: "readWrite", db: "myDatabase" }]
})

التفويض

التفويض هو عملية تحديد ما يمكن للمستخدمين المصادق عليهم القيام به. يستخدم MongoDB نموذج تفويض يعتمد على الأدوار (Role-Based Access Control).

الأدوار المدمجة الشائعة

  • read: القدرة على قراءة البيانات من جميع المجموعات غير النظام.
  • readWrite: القدرة على قراءة وكتابة البيانات في جميع المجموعات غير النظام.
  • dbAdmin: القدرة على إدارة قاعدة البيانات ولكن ليس المستخدمين.
  • userAdmin: القدرة على إدارة المستخدمين والأدوار.
  • dbOwner: يجمع بين صلاحيات readWrite و dbAdmin و userAdmin.
  • clusterAdmin: أعلى مستوى من الصلاحيات الإدارية على مستوى المجموعة.

تشفير البيانات

يوفر MongoDB خيارات لتشفير البيانات أثناء النقل وأثناء التخزين:

  • تشفير أثناء النقل: استخدام TLS/SSL لتأمين الاتصالات بين العملاء والخوادم.
  • تشفير أثناء التخزين: تشفير البيانات المخزنة على القرص (متاح في الإصدار Enterprise).
  • تشفير على مستوى الحقل: تشفير حقول محددة فقط في الوثائق.

ملاحظة

يُنصح دائماً بتشغيل MongoDB في بيئة آمنة، وتعطيل الوصول العام، واستخدام جدران الحماية للتحكم في الوصول إلى خادم MongoDB.

9. تحسين الأداء في MongoDB

تحسين أداء MongoDB يتضمن مجموعة من الممارسات والتقنيات التي تساعد على تحسين سرعة الاستعلامات وكفاءة استخدام الموارد.

استخدام الفهارس بشكل فعال

الفهارس هي أهم أداة لتحسين أداء الاستعلامات في MongoDB. بعض النصائح لاستخدام الفهارس بشكل فعال:

  • إنشاء فهارس للحقول التي يتم الاستعلام عنها بشكل متكرر.
  • استخدام الفهارس المركبة للاستعلامات التي تتضمن عدة حقول.
  • تجنب إنشاء فهارس زائدة عن الحاجة، حيث تؤثر على أداء عمليات الكتابة.
  • استخدام explain() لتحليل أداء الاستعلامات واختيار الفهارس المناسبة.

تحليل أداء الاستعلامات

// تحليل أداء استعلام
db.users.find({ age: { $gt: 25 } }).explain("executionStats")

تصميم المخطط بشكل مناسب

تصميم مخطط البيانات (Schema Design) له تأثير كبير على أداء MongoDB:

نصائح لتصميم المخطط

  • التضمين مقابل المراجع: استخدم التضمين (Embedding) للبيانات المرتبطة التي يتم استردادها معاً في معظم الأحيان، واستخدم المراجع (References) للبيانات الكبيرة أو التي تتغير بشكل متكرر.
  • تجنب الوثائق الكبيرة جداً: الوثائق الكبيرة تستهلك المزيد من الذاكرة وقد تؤدي إلى تجزئة البيانات.
  • تصميم حسب أنماط الاستعلام: صمم المخطط بناءً على كيفية استرداد البيانات واستخدامها في التطبيق.

تحسين عمليات الكتابة

لتحسين أداء عمليات الكتابة في MongoDB:

  • استخدم عمليات الكتابة المجمعة (Bulk Write Operations) لتنفيذ عدة عمليات كتابة في طلب واحد.
  • اضبط مستوى التأكيد (Write Concern) المناسب لمتطلبات التطبيق.
  • استخدم التحديثات الجزئية بدلاً من تحديث الوثيقة بأكملها عندما يكون ذلك ممكناً.
// مثال على عمليات الكتابة المجمعة
db.products.bulkWrite([
  { insertOne: { document: { name: "Product 1", price: 10 } } },
  { updateOne: { 
      filter: { _id: ObjectId("...") },
      update: { $set: { price: 15 } }
    }
  },
  { deleteOne: { filter: { _id: ObjectId("...") } } }
])

نصيحة

استخدم أدوات مراقبة الأداء مثل MongoDB Compass وMongoDB Atlas لتحديد الاستعلامات البطيئة وتحسينها.

10. MongoDB Atlas

MongoDB Atlas هي خدمة قاعدة بيانات سحابية مُدارة بالكامل تقدمها شركة MongoDB. توفر Atlas طريقة سهلة لنشر وإدارة ومراقبة قواعد بيانات MongoDB في السحابة.

مميزات MongoDB Atlas

  • نشر سهل: إنشاء مجموعات MongoDB في دقائق على AWS أو Azure أو Google Cloud.
  • أمان متقدم: تشفير البيانات، التحكم في الوصول، والمصادقة متعددة العوامل.
  • مراقبة وتنبيهات: مراقبة الأداء في الوقت الفعلي وإعداد التنبيهات.
  • نسخ احتياطي تلقائي: نسخ احتياطية منتظمة واستعادة نقطة زمنية.
  • قابلية التوسع: توسيع أو تقليص الموارد بسهولة حسب الحاجة.
  • توزيع عالمي: نشر البيانات في مناطق جغرافية متعددة لتحسين زمن الاستجابة.

البدء مع MongoDB Atlas

  1. 1

    إنشاء حساب: قم بزيارة موقع MongoDB Atlas وإنشاء حساب مجاني.

  2. 2

    إنشاء مجموعة: اختر مزود السحابة والمنطقة وحجم المجموعة.

  3. 3

    تكوين الأمان: إنشاء مستخدم قاعدة البيانات وتكوين قائمة السماح لعناوين IP.

  4. 4

    الاتصال بالمجموعة: استخدم سلسلة الاتصال المقدمة للاتصال من التطبيق الخاص بك.

مثال على الاتصال بـ MongoDB Atlas

// الاتصال باستخدام Node.js و Mongoose
const mongoose = require('mongoose');

mongoose.connect('mongodb+srv://username:[email protected]/myDatabase', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => console.log('تم الاتصال بنجاح بـ MongoDB Atlas'))
.catch(err => console.error('خطأ في الاتصال:', err));

ملاحظة

يوفر MongoDB Atlas طبقة مجانية تتضمن 512 ميجابايت من التخزين، وهي مناسبة للتعلم والمشاريع الصغيرة.