دیتابیس سندگرا

MongoDB مدیریت‌شده با Replica Set

MongoDB را برای داده‌ی سندمحور بسازید؛ اگر تراکنش چندسندی یا Change Stream لازم دارید، با یک فلگ حالت Replica Set را فعال کنید.

نسخه‌ها
8 (پیش‌فرض)، 7، 6 و 5
حالت
تک‌نود یا Replica Set
در اپ
MONGO_URL با --prefix MONGO
پشتیبان
mongodump، دستی و زمان‌بندی‌شده
لوگوی MongoDB

داده‌ی سندمحور، بدون مدیریت کلاستر

MongoDB برای داده‌ای مناسب است که ساختارش با محصول تغییر می‌کند: پروفایل کاربر، کاتالوگ محصول، لاگ رویداد. اسناد JSON مانند ذخیره و با ایندکس و aggregation جست‌وجو می‌شوند.

در حالت Replica Set، تراکنش‌های چندسندی و Change Stream در دسترس‌اند. رشته‌ی اتصال تزریق‌شده همه‌چیز را دارد، از جمله replicaSet؛ کد شما فقط آن را می‌خواند.

مناسب برای

  • کاتالوگ محصول و محتوای پویا
  • پروفایل و تنظیمات کاربر
  • لاگ رویداد و داده‌ی زمانی
  • بک‌اند اپ موبایل

از ساخت تا اتصال

  1. ساخت

    نسخه را انتخاب کنید؛ برای تراکنش Replica Set را فعال کنید.

    --type mongo --replica-set
  2. لینک به اپ

    رشته‌ی اتصال کامل با پیشوند MONGO تزریق می‌شود.

    --prefix MONGO
  3. استفاده

    درایور فقط MONGO_URL را می‌خواند.

    MONGO_URL

خروجی ساخت سرویس

sakoocloud db
sakoocloud db create --name docs-db --type mongo --version 8
✔ Provisioning docs-db · db_4n8x2p
ℹ Ready in ~90s. Get credentials: sakoocloud db credentials db_4n8x2p
sakoocloud apps link-db db_4n8x2p --app my-api --prefix MONGO
✔ Linked database. Env vars injected under MONGO_*.
# MONGO_URL=mongodb://app:••••@…:27017/docs-db

ساخت دیتابیس

تک‌نود برای شروع کافی است؛ Replica Set برای تراکنش و Change Stream.

terminal
sakoocloud db create --name docs-db --type mongo
sakoocloud db create --name events --type mongo --replica-set

تنظیمات

متغیرهایی که به اپ تزریق می‌شوند

پیشوند پیش‌فرض DATABASE است؛ با --prefix می‌توانید نام دیگری بدهید، مثلاً MONGO.

متغیرمقدار
MONGO_URLرشته‌ی کامل، شامل replicaSet در صورت فعال بودن
MONGO_HOST و MONGO_PORTآدرس و پورت داخلی
MONGO_USER و MONGO_PASSWORDنام کاربری و رمز تولیدشده

پشتیبان‌گیری

پشتیبان‌ها به‌صورت dump منطقی گرفته و جدا از دیسک دیتابیس، روی فضای ذخیره‌سازی سازگار با S3 نگهداری می‌شوند.

نوعدر دسترس
پشتیبان دستیهمه‌ی پلن‌ها، از جمله پلن رایگان
زمان‌بندی خودکارپلن‌های پولی
بازگردانیروی همان دیتابیس یا یک نمونه‌ی تازه (backups clone)

اتصال از اپ

رشته‌ی اتصال را مستقیم به درایور بدهید.

import { MongoClient } from "mongodb";

const client = new MongoClient(process.env.MONGO_URL);
await client.connect();

رانتایم‌هایی که معمولاً به آن وصل می‌شوند

خطاهای رایج

از سیستم خودم وصل نمی‌شوم

علتآدرس داخلی فقط از اپ‌های همان پروژه در دسترس است.

راه‌حلبرای اتصال از بیرون، دسترسی عمومی را روشن کنید و آدرس و پورت خارجی را از sakoocloud db credentials بگیرید.

terminal
sakoocloud db public-access <db-id>
sakoocloud db credentials <db-id>

Transaction numbers are only allowed on a replica set

علتدیتابیس در حالت تک‌نود ساخته شده است.

راه‌حلیک دیتابیس با --replica-set بسازید و داده را منتقل کنید.

Authentication failed

علتauthSource یا رمز دستی وارد شده و با رشته‌ی اتصال تزریق‌شده فرق دارد.

راه‌حلفقط از MONGO_URL استفاده کنید.

پرسش‌های متداول

Replica Set را کی لازم دارم؟

برای تراکنش‌های چندسندی و Change Stream. برای استفاده‌ی معمولی، تک‌نود کافی است.

از MongoDB Atlas مهاجرت کنم؟

با mongodump از Atlas خروجی بگیرید و با mongorestore در دیتابیس جدید بازگردانی کنید.

Compass یا mongosh وصل می‌شود؟

بله؛ sakoocloud db connect برای mongosh و دسترسی عمومی برای Compass.

جزئیات بیشتر در راهنمای MongoDB در مستندات و مرجع CLI.

سریع‌ترین مسیر از کد تا انتشار.

ابتدا ابزار خط فرمان را نصب کنید، سپس همین‌جا امتحان کنید. (بنویسید، یا یکی از پیشنهادهای پایین ترمینال را بزنید)

~/projects/my-app
امتحان کنید