سرویس فعال

MongoDB مدیریت‌شده، دیتابیس سندمحور در ایران

سرور اختصاصی MongoDB نسخهٔ ۸.۰ یا ۷.۰ با احراز هویت فعال، کش WiredTiger متناسب با RAM و رمز root تصادفی. برای اسناد JSON، داده‌های تودرتو و توسعهٔ سریع؛ پرداخت ساعتی از کیف پول.

از ۱٬۳۰۰ تومان در ساعت،  حدود ۹۴۹٬۰۰۰ تومان در ماه

لوگوی MongoDB

MongoDB مدیریت‌شده

نسخهٔ ۸.۰ یا ۷.۰،سندمحور

شروع قیمت (mini)

۱٬۳۰۰تومان / ساعت

حدود ۹۴۹٬۰۰۰ تومان در ماه،بر پایهٔ ۷۳۰ ساعت

  • احراز هویت فعال،  کاربر root با رمز تصادفی
  • کش WiredTiger،  نصف RAM، خودکار
  • پورت ۲۷۰۱۷،  سازگار با همهٔ درایورها
  • سرور اختصاصی برای هر instance
  • دیسک NVMe SSD روی همهٔ سرورها
  • پورت ۱۰ گیگابیت اختصاصی برای هر سرور
  • دیتاسنتر تهران میزبانی داخل ایران
  • صورت‌حساب ساعتی پرداخت به تومان

معرفی سرویس

MongoDB مدیریت‌شده با ساختار دادهٔ انعطاف‌پذیر

MongoDB یک پایگاه‌دادهٔ سندمحور است که داده را به‌صورت سند JSON (در قالب BSON) ذخیره می‌کند و لازم نیست ساختار ثابتی از پیش تعریف کنید. برای داده‌های متغیر، کاتالوگ محصول و محتوای پویا مناسب است.

ایندکس‌گذاری قدرتمند و aggregation pipeline از ویژگی‌های آن است. در نسخهٔ مدیریت‌شده، نصب، فعال‌سازی احراز هویت و تنظیم کش را ما انجام می‌دهیم و سرور اختصاصی در چند دقیقه آماده می‌شود؛ بکاپ خودکار برای MongoDB هنوز فعال نیست.

نسخه به انتخاب شما
۸.۰ / ۷.۰
پیش‌فرض ۸.۰
احراز هویت پیش‌فرض
فعال
کاربر root با رمز ۳۲ کاراکتری
پورت استاندارد
۲۷۰۱۷
سازگار با همهٔ درایورها
کش WiredTiger
نصف RAM
تنظیم خودکار بر اساس پلن

امکانات

چرا MongoDB برای دادهٔ سندمحور؟

ساختار انعطاف‌پذیر

فیلد تازه را بدون migration و بدون توقف به اسناد جدید اضافه کنید؛ اسناد قدیمی دست‌نخورده می‌مانند.

سند شبیه JSON

دادهٔ تودرتو و آرایه‌ها همان شکلی ذخیره می‌شوند که در کد با آن کار می‌کنید؛ بیشتر خواندن‌ها بدون JOIN.

aggregation pipeline

گروه‌بندی، فیلتر و محاسبهٔ گزارش داخل خود دیتابیس، بدون انتقال داده به ابزار دیگر.

ایندکس‌های متنوع

ایندکس ترکیبی، ایندکس TTL برای حذف خودکار اسناد قدیمی و ایندکس جغرافیایی.

کش WiredTiger خودکار

نصف RAM پلن به کش موتور ذخیره‌سازی اختصاص می‌یابد؛ بدون تنظیم دستی.

GridFS

ذخیرهٔ فایل‌های بزرگ‌تر از ۱۶ مگابایت به‌صورت تکه‌تکه داخل دیتابیس.

اتصال

اتصال در یک خط

پس از ساخت instance، رشتهٔ اتصال با آدرس واقعی در پنل نمایش داده می‌شود. به‌جای PASSWORD رمز همان کاربر را بگذارید:

برای اپلیکیشن، به‌جای root یک کاربر اختصاصی با db.createUser روی دیتابیس خودش بسازید.

# mongosh

mongosh "mongodb://root:PASSWORD@203.0.113.10:27017/?authSource=admin"

# Node.js (mongodb driver)

const client = new MongoClient( 'mongodb://root:PASSWORD@203.0.113.10:27017/myapp?authSource=admin' );

# Python (pymongo)

client = MongoClient( 'mongodb://root:PASSWORD@203.0.113.10:27017/?authSource=admin' )

# Mongoose

mongoose.connect( 'mongodb://app_user:PASSWORD@203.0.113.10:27017/myapp?authSource=myapp' );

۵ گام تا شروع

ساخت instance در پنل، گام‌به‌گام

  1. گام ۱: افزایش موجودی کیف پول

    هزینهٔ ساعت اول هنگام ساخت از کیف پول کسر می‌شود؛ پیش از شروع موجودی کافی داشته باشید.

  2. گام ۲: انتخاب MongoDB، نسخه و پلن

    در پنل کاربری از منوی دیتابیس‌ها MongoDB را باز کنید و نسخهٔ ۸.۰ یا ۷.۰ و پلن mini‏، standard یا plus را انتخاب کنید.

  3. گام ۳: تعیین نام و ساخت

    یک نام شناسایی وارد کنید و instance را بسازید. سرور اختصاصی رزرو می‌شود.

  4. گام ۴: انتظار برای نصب

    MongoDB نصب می‌شود، احراز هویت فعال می‌شود و رمز root تصادفی ساخته می‌شود.

  5. گام ۵: کپی رشتهٔ اتصال

    رشتهٔ اتصال mongodb://… با آدرس instance در پنل نمایش داده می‌شود؛ آن را در فایل .env اپلیکیشن قرار دهید.

قیمت و سفارش

هزینهٔ اجرای MongoDB مدیریت‌شده

صورت‌حساب ساعتی است و مبلغ به تومان از کیف پول کسر می‌شود؛ هر وقت سرویس را حذف کنید، هزینه هم متوقف می‌شود.

MongoDB مدیریت‌شده

از ۱٬۳۰۰ تومان / ساعت

حدود ۹۴۹٬۰۰۰ تومان در ماه (۷۳۰ ساعت کارکرد)

ساعتی

آنچه دریافت می‌کنید

  • سرور اختصاصی برای هر instance، بدون اشتراک منابع
  • دیسک NVMe SSD و پورت اختصاصی ۱۰ گیگابیت
  • دیتاسنتر تهران، صورت‌حساب ساعتی به تومان
ثبت‌نام و ساخت MongoDB

راهنمای کامل

راهنمای کامل MongoDB مدیریت‌شده در ایران‌کلاد

این راهنما برای تیم‌هایی است که می‌خواهند MongoDB را در ایران و نزدیک کاربرانشان میزبانی کنند بدون این‌که درگیر نصب و تنظیم سرور شوند. دقیق می‌نویسیم چه چیزی آماده تحویل می‌گیرید، چه چیزی هنوز بر عهدهٔ خودتان است و هزینه چطور محاسبه می‌شود. اگر داده‌تان ساختار جدولی و رابطه‌های زیادی دارد، PostgreSQL مدیریت‌شده را هم مقایسه کنید.

۱۱ بخش حدود ۶ دقیقه مطالعه

فهرست مطالب

MongoDB مدیریت‌شده چیست؟

MongoDB یک پایگاه‌دادهٔ سندمحور است: به‌جای ردیف و ستون، هر رکورد یک سند شبیه JSON است که می‌تواند فیلدهای تودرتو و آرایه داشته باشد. دو سند در یک collection لازم نیست ساختار یکسانی داشته باشند، برای همین افزودن یک فیلد جدید به محصول یا پروفایل کاربر بدون migration انجام می‌شود.

در نسخهٔ مدیریت‌شدهٔ ایران‌کلاد، برای هر instance یک سرور اختصاصی ساخته می‌شود و MongoDB با نسخهٔ انتخابی شما نصب می‌شود. احراز هویت پیش از تحویل فعال شده، یک کاربر root با رمز تصادفی ساخته شده و اندازهٔ کش موتور ذخیره‌سازی بر اساس RAM تنظیم شده است. شما URI اتصال را از پنل برمی‌دارید و مستقیم سراغ کد می‌روید.

MongoDB برای چه پروژه‌هایی انتخاب مناسبی است؟

قدرت MongoDB در داده‌هایی است که شکلشان مدام تغییر می‌کند یا به‌طور طبیعی تودرتو است. نمونه‌هایی که این سرویس برایشان مناسب است:

  • کاتالوگ محصول با ویژگی‌های متفاوت برای هر دسته، مثلاً گوشی با حافظه و لباس با سایز
  • بک‌اند اپ موبایل با Node.js و Mongoose که مدل داده را مستقیم در کد تعریف می‌کند
  • سیستم مدیریت محتوا مثل Strapi یا محتوای چندزبانه با فیلدهای انعطاف‌پذیر
  • لاگ رویدادها و داده‌های تحلیلی سبک که با aggregation pipeline گزارش‌گیری می‌شوند
  • پروفایل کاربر و تنظیمات که هر کاربر مجموعهٔ متفاوتی از فیلدها دارد
  • نمونه‌سازی سریع وقتی هنوز ساختار نهایی داده مشخص نیست

اگر به تراکنش چندسندی یا change streams نیاز دارید، دقت کنید که این قابلیت‌ها به replica set نیاز دارند و روی این سرویس فعال نیستند؛ بخش محدودیت‌ها را ببینید.

بازگشت به فهرست مطالب

نسخه‌ها و پیکربندی پیش‌فرض

هنگام ساخت instance بین MongoDB ۸.۰ و ۷.۰ انتخاب می‌کنید. تنظیماتی که روی هر سرور اعمال می‌شود شفاف در این جدول آمده است:

موردمقدارتوضیح
نسخه‌ها۸.۰ (پیش‌فرض) و ۷.۰نسخه پس از ساخت ثابت می‌ماند
پورت۲۷۰۱۷پورت استاندارد همهٔ درایورها
موتور ذخیره‌سازیWiredTigerموتور پیش‌فرض و فشرده‌ساز MongoDB
کش WiredTigerنصف RAM (حداقل ۰٫۲۵ و حداکثر ۸ گیگ)بر اساس پلن به‌طور خودکار محاسبه می‌شود
احراز هویتفعالکاربر root با نقش root در دیتابیس admin
رمز rootتصادفی ۳۲ کاراکتریرمزنگاری‌شده در پنل، با دکمهٔ نمایش رمز
نوع استقرارتک‌سرور (standalone)بدون replica set و sharding
ابزار خط فرمانmongoshروی سیستم خودتان نصب کنید و با URI پنل وصل شوید

بازگشت به فهرست مطالب

هزینهٔ MongoDB مدیریت‌شده

پرداخت ساعتی است: هزینهٔ ساعت اول هنگام ساخت کسر می‌شود و بعد از آن تا وقتی instance وجود دارد، هر ساعت از کیف پول برداشته می‌شود. اعداد این جدول از همان منبع صورت‌حساب خوانده می‌شوند و معادل ماهانه بر مبنای ۷۳۰ ساعت است.

چون MongoDB برای سرعت به کش وابسته است، انتخاب پلن بیشتر به اندازهٔ دادهٔ پرکاربرد و ایندکس‌ها بستگی دارد تا تعداد کل اسناد. اگر ایندکس‌های اصلی در کش جا شوند، query‌ها سریع می‌مانند. برای برآورد کل هزینهٔ پروژه، همراه با سرور اپلیکیشن، ماشین‌حساب هزینه را ببینید.

پلنمنابعکش تقریبیساعتی (تومان)تقریبی ماهانه (تومان)
mini۱ هسته، ۱ گیگ RAM، ۲۰ گیگ دیسکحدود ۰٫۵ گیگ۱٬۳۰۰۹۴۹٬۰۰۰
standard۲ هسته، ۲ گیگ RAM، ۴۰ گیگ دیسکحدود ۱ گیگ۲٬۴۰۰۱٬۷۵۲٬۰۰۰
plus۲ هسته، ۴ گیگ RAM، ۸۰ گیگ دیسکحدود ۲ گیگ۳٬۷۰۰۲٬۷۰۱٬۰۰۰

بازگشت به فهرست مطالب

MongoDB یا دیتابیس رابطه‌ای؟ مقایسهٔ عملی

انتخاب بین MongoDB و یک دیتابیس SQL بیشتر به شکل داده و الگوی query‌ها بستگی دارد تا سرعت خام. این جدول تفاوت‌های مهم را برای سرویس‌های خودمان نشان می‌دهد:

موضوعMongoDB مدیریت‌شدهPostgreSQL یا MySQL مدیریت‌شده
مدل دادهسند JSON با فیلدهای انعطاف‌پذیرجدول با ستون‌های تعریف‌شده
تغییر ساختاربدون migrationنیازمند ALTER TABLE
رابطه بین داده‌هاتعبیه در سند یا $lookupJOIN و کلید خارجی
تراکنش چندرکوردیروی این سرویس ندارد (نیاز به replica set)دارد
بکاپ خودکارهنوز ندارد؛ mongodump دستیشبانه، رمزنگاری‌شده، ۳۰ نسخه
مدیریت کاربر از پنلندارد؛ با mongoshدارد

برای داده‌های مالی و موجودی انبار که به تراکنش چندرکوردی نیاز دارند، MySQL مدیریت‌شده یا PostgreSQL انتخاب امن‌تری است.

بازگشت به فهرست مطالب

چند توصیه برای طراحی collection و ایندکس

قاعدهٔ اصلی در MongoDB این است که داده‌ای را که با هم خوانده می‌شود، با هم ذخیره کنید. آدرس‌های یک کاربر یا آیتم‌های یک سفارش را داخل همان سند بگذارید، ولی فهرست‌هایی را که بی‌نهایت رشد می‌کنند، مثل نظرات یک محصول پرفروش، در collection جدا با ارجاع نگه دارید تا به سقف ۱۶ مگابایتی سند نرسید.

برای هر query پرتکرار ایندکس مناسب بسازید و با explain بررسی کنید که اسکن کامل collection انجام نمی‌شود. ایندکس TTL برای حذف خودکار نشست‌ها و لاگ‌های قدیمی بسیار مفید است و فضای دیسک پلن را آزاد نگه می‌دارد. ایندکس‌های اضافه هم بی‌هزینه نیستند، چون در کش جا می‌گیرند و نوشتن را کندتر می‌کنند.

بازگشت به فهرست مطالب

شروع کار با MongoDB در شش قدم

مسیر کامل از سفارش تا اولین سند:

  1. موجودی کیف پول را افزایش دهید و وارد پنل MongoDB شوید
  2. نسخه (۸.۰ یا ۷.۰) و پلن را انتخاب کنید و یک نام شناسایی بدهید
  3. پس از آماده شدن، در صفحهٔ instance رمز root را نمایش دهید و URI را کپی کنید
  4. با mongosh وصل شوید و با use myapp دیتابیس اپلیکیشن را انتخاب کنید
  5. با db.createUser یک کاربر با نقش readWrite روی همان دیتابیس بسازید
  6. URI کاربر جدید را در فایل .env اپلیکیشن قرار دهید و root را فقط برای مدیریت نگه دارید

بازگشت به فهرست مطالب

امنیت اتصال و مدیریت کاربران

پورت ۲۷۰۱۷ به‌طور پیش‌فرض در فایروال سرور بسته است و فقط برای IPهایی باز می‌شود که خودتان در بخش «دسترسی شبکه» مجاز می‌کنید؛ authorization هم فعال است، پس هیچ عملیاتی روی داده بدون نام کاربری و رمز انجام نمی‌شود. با این حال TLS روی این سرویس پیکربندی نشده است؛ اگر اپلیکیشن شما از شبکهٔ عمومی وصل می‌شود، این را در ارزیابی امنیتی خود در نظر بگیرید و اپلیکیشن را تا حد ممکن روی سرور ابری در همان دیتاسنتر اجرا کنید.

مدیریت کاربران در MongoDB با نقش‌های داخلی خودش انجام می‌شود: read برای گزارش‌گیری، readWrite برای اپلیکیشن و dbAdmin برای کارهای نگه‌داری روی یک دیتابیس. برای هر سرویس کاربر جدا بسازید تا اگر رمز یکی لو رفت، دسترسی به بقیهٔ داده‌ها محدود بماند. رمزهای قوی را می‌توانید با ابزار ساخت رمز بسازید.

بازگشت به فهرست مطالب

بکاپ: آنچه امروز باید خودتان انجام دهید

بکاپ خودکار شبانه که برای MySQL‏، MariaDB و PostgreSQL داریم، برای MongoDB هنوز فعال نیست. این را صریح می‌گوییم تا با فرض اشتباه داده‌ای را از دست ندهید. در صفحهٔ instance فرمان آمادهٔ mongodump با آدرس سرور شما نمایش داده می‌شود.

پیشنهاد عملی: روی یک سرور ابری یا سیستم داخلی خودتان یک cron بسازید که هر شب mongodump را با گزینهٔ --gzip اجرا کند و خروجی را در فضای ذخیره‌سازی ابری نگه دارد. چند نسخهٔ قدیمی را نگه دارید و دست‌کم ماهی یک بار بازگردانی با mongorestore را روی یک instance آزمایشی تمرین کنید تا مطمئن شوید بکاپ‌ها سالم‌اند.

بازگشت به فهرست مطالب

انتقال از سرور دیگر یا سرویس ابری خارجی

ساده‌ترین مسیر mongodump روی مبدأ و mongorestore روی instance جدید است. برای دیتابیس‌های کوچک تا چند گیگابایت، خروجی فشرده با --gzip و --archive در یک فایل منتقل می‌شود. اگر مبدأ یک replica set است هم مشکلی نیست؛ خروجی منطقی روی سرور مستقل ما بازگردانی می‌شود.

نسخهٔ مقصد را برابر یا جدیدتر از مبدأ انتخاب کنید. پیش از تغییر رشتهٔ اتصال در محیط اصلی، شمار اسناد هر collection را در مبدأ و مقصد مقایسه کنید و ایندکس‌ها را بررسی کنید. اگر اپلیکیشن شما از تراکنش یا change streams استفاده می‌کند، پیش از انتقال باید آن بخش‌ها را بازطراحی کنید.

بازگشت به فهرست مطالب

محدودیت‌های فعلی MongoDB مدیریت‌شده

هر instance یک سرور مستقل است؛ replica set‏، failover خودکار و sharding ارائه نمی‌شود و در نتیجه تراکنش چندسندی و change streams در دسترس نیستند. بکاپ خودکار و بازگردانی از پنل برای MongoDB وجود ندارد، TLS پیکربندی نشده است و ساخت کاربر و دیتابیس از پنل یا API فقط برای موتورهای SQL ارائه می‌شود.

اگر پروژهٔ شما از روز اول به دسترس‌پذیری بالا یا خوشهٔ چندنودی نیاز دارد، می‌توانید replica set را خودتان روی چند سرور ابری یا کلاستر اختصاصی راه بیندازید. برای نصب دستی روی سرور، راهنمای نصب MongoDB را ببینید.

بازگشت به فهرست مطالب بازگشت به ابتدای راهنما

پرسش و پاسخ،  ۱۱ پرسش

سؤالات متداول

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

چه زمانی MongoDB انتخاب بهتری از PostgreSQL است؟
وقتی ساختار داده ثابت نیست و هر سند می‌تواند فیلدهای متفاوتی داشته باشد، داده به‌طور طبیعی تودرتوست (مثل سفارش با آیتم‌هایش) یا در مرحلهٔ نمونه‌سازی سریع هستید. اگر داده ساختار جدولی ثابت و رابطه‌های زیادی دارد (کلید خارجی، JOIN و تراکنش)‏، PostgreSQL انتخاب بهتری است.
آیا replica set و failover خودکار دارد؟
خیر. هر instance یک سرور MongoDB مستقل (standalone) است و replica set‏، failover خودکار و sharding ارائه نمی‌شود. قابلیت‌هایی که به replica set نیاز دارند، مثل change streams و تراکنش چندسندی، روی این سرویس در دسترس نیستند.
احراز هویت و امنیت اتصال چگونه است؟
authorization در تنظیمات سرور فعال است و یک کاربر root با نقش root در دیتابیس admin و رمز تصادفی ۳۲ کاراکتری ساخته می‌شود؛ اتصال بدون نام کاربری و رمز به داده دسترسی ندارد. TLS روی این سرویس پیکربندی نشده است.
حد ذخیره‌سازی و RAM چقدر است؟
سه پلن مثل سایر دیتابیس‌ها ارائه می‌شود: mini با ۱ گیگابایت RAM و ۲۰ گیگابایت دیسک، standard با ۲ گیگابایت RAM و ۴۰ گیگابایت دیسک و plus با ۴ گیگابایت RAM و ۸۰ گیگابایت دیسک. کش WiredTiger خودکار نصف RAM تنظیم می‌شود.
بکاپ و بازگردانی داده چگونه است؟
برای MongoDB بکاپ خودکار هنوز فعال نیست و این را صریح می‌گوییم. با mongodump به‌صورت دوره‌ای از سرور یا سیستم خودتان خروجی بگیرید و با mongorestore بازگردانی کنید؛ فرمان آماده در صفحهٔ instance در پنل آمده است.
چگونه از Node.js یا Python متصل شوم؟
driver رسمی MongoDB (پکیج mongodb در npm یا pymongo) با رشتهٔ اتصال mongodb://root:PASS@IP:27017/?authSource=admin کار می‌کند. URI کامل با آدرس instance در پنل نمایش داده می‌شود.
MongoDB مدیریت‌شده در ساعت چقدر هزینه دارد؟
پلن mini ۱٬۳۰۰‏، standard ۲٬۴۰۰ و plus ۳٬۷۰۰ تومان در ساعت است و هر ساعت از کیف پول کسر می‌شود. سرور اختصاصی و هزینهٔ مدیریت در همین مبلغ است و با حذف instance محاسبه متوقف می‌شود.
نسخهٔ ۸.۰ را بگیرم یا ۷.۰؟
برای پروژهٔ جدید ۸.۰ را بگیرید که پیش‌فرض پنل هم هست. ۷.۰ را فقط وقتی انتخاب کنید که اپلیکیشن یا درایور شما روی همین نسخه تست شده است. نسخه پس از ساخت تغییر نمی‌کند و برای ارتقا باید داده را به instance جدید منتقل کنید.
آیا می‌توانم با MongoDB Compass به دیتابیس وصل شوم؟
بله. URI نمایش‌داده‌شده در پنل را در Compass یا هر ابزار گرافیکی دیگر وارد کنید و رمز root یا کاربر اختصاصی خود را بگذارید. فراموش نکنید authSource را روی دیتابیسی بگذارید که کاربر در آن ساخته شده است.
آیا محدودیتی در اندازهٔ هر سند وجود دارد؟
محدودیت ۱۶ مگابایتی هر سند از خود MongoDB است و ربطی به پلن ندارد. برای فایل‌های بزرگ‌تر از GridFS استفاده کنید یا فایل را در فضای ذخیره‌سازی ابری بگذارید و فقط آدرسش را در سند نگه دارید.
کاربر و دیتابیس را از پنل می‌سازم یا از mongosh؟
برای MongoDB ساخت دیتابیس و کاربر از پنل ارائه نمی‌شود. با رمز root از طریق mongosh وصل شوید، با use نام دیتابیس را انتخاب کنید و با db.createUser برای اپلیکیشن کاربری با نقش readWrite روی همان دیتابیس بسازید.

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

MongoDB مدیریت‌شده، همین حالا

اولین instance را با ۱٬۳۰۰ تومان در ساعت بسازید؛ هر زمان حذف کنید، بدون تعهد ماهانه.

از ۱٬۳۰۰ تومان / ساعت،حدود ۹۴۹٬۰۰۰ تومان در ماه