Future ForgeFuture ForgeFuture ForgeFuture Forge
ServicesWorkPackagesFree toolsNotesAboutContact
Start
  1. Home
  2. /Notes
Future ForgeFuture Forge

Product engineering studio — design, build, and deploy software.

Discuss your project

Contact

hello@futureforge.ir09128464105
Future ForgeFuture Forge

Product engineering studio — design, build, and deploy software.

Services

Product engineeringFull-stack engineeringEngineering auditArchitecture consultingInfrastructure and deploymentAI in the product

Explore

WorkNotesFAQPackages

Free tools

Engineering auditArchitecture advisorProject estimatorPrompt tool

Company

AboutContactPrivacyTerms of use

Discuss your project

Describe the problem and the constraints. If there is a fit, we will schedule a conversation.

Discuss your project

Contact

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. All rights reserved.

HomeServicesFree toolsStart
Software architecture

چگونه Database مناسب را انتخاب کنیم؟

راهنمای انتخاب پایگاه‌داده بر اساس شکل داده، تراکنش، پرس‌وجو و عملیات — با ارجاع به مستندات PostgreSQL، MySQL، MongoDB، Redis و راهنمای انتخاب موتور AWS RDS.

SE
Soheil Ebrahimpour

Founder & product engineer

·Sep 20, 2026·6 min read
چگونه Database انتخاب کنیمPostgreSQLMySQLMongoDBRedisACIDمدل دادهانتخاب دیتابیس
کارت‌های Relational Document KeyValue Search و Access Patterns First

انتخاب Database (پایگاه‌داده) یکی از تصمیم‌های برگشت‌ناپذیرِ نسبتاً گران در سال‌های اول محصول است. مهاجرت شِما، بازنویسی پرس‌وجو، و عادت تیم زمان می‌برد. با این حال، انتخاب را نباید به «چه چیزی روی گیت‌هاب ستاره دارد» واگذار کرد.

موتورهای رایج کار یکسانی نمی‌کنند. PostgreSQL روی مدل شیء-رابطه‌ای، قیود و تراکنش تأکید دارد؛ MySQL برای بارهای وب تراکنشی ساده و سازگاری ابزار گسترده شناخته می‌شود؛ MongoDB سندمحور است؛ Redis حافظه‌ای برای دسترسی سریع و ساختارهای ویژه. راهنمای AWS RDS هم صریحاً می‌گوید MySQL و PostgreSQL را بر اساس نوع کار انتخاب کنید نه برچسب کلی.

این مقاله از مدل داده و Use Case شروع می‌کند؛ سپس ترکیب لایه‌ها را توضیح می‌دهد. پیش‌نیاز مفهومی: مقالات ۰۳۳ تا ۰۳۵.

وایت‌برد ماتریس انتخاب با Start With Postgres

پاسخ کوتاه

اگر داده رابطه‌ای است، تراکنش و قیود مهم‌اند و پرس‌وجو پیچیده می‌شود، از یک پایگاه رابطه‌ای بالغ (اغلب PostgreSQL یا MySQL بر اساس اکوسیستم تیم) شروع کنید. اگر اسناد متغیر و دسترسی سندوار غالب است، موتور سند را برای همان بخش بررسی کنید. Redis را معمولاً کنار منبع حقیقت برای کش، نشست، محدودیت نرخ و ساختارهای لحظه‌ای بگذارید — نه به‌عنوان تنها دفترکل سفارش‌ها.

یک محصول می‌تواند چند موتور داشته باشد؛ شرطش مالکیت روشن و مرز همگام‌سازی است. چند موتور بدون مرز، فقط چند نقطهٔ شکست است.

اول بپرسید داده چه شکلی است و چه اشتباهی نباید ممکن باشد؛ بعد برند را گوگل کنید.

سؤال‌های قبل از نام برند

  1. موجودیت‌های اصلی و روابطشان چیست؟
  2. کدام تغییرات باید «یا همه یا هیچ» باشند؟
  3. پرس‌وجوهای گزارش چگونه به نظر می‌رسند؟
  4. شِما چقدر پایدار است و چه کسی آن را تغییر می‌دهد؟
  5. حجم رشد سالانه و الگوی خواندن/نوشتن چیست؟
  6. الزام پشتیبان‌گیری، نقطهٔ بازگشت و انطباق چیست؟

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

جدول تطبیق کار با خانوادهٔ موتور

نیاز غالبخانوادهنمونهٔ رسمی برای مطالعه
روابط، قیود، SQL، تراکنشرابطه‌ایPostgreSQL / MySQL docs
سند JSON با شِمای متغیرسندمحورMongoDB manual
تأخیر بسیار کم، کش، شمارنده، pub/subحافظه‌ای / ساختار دادهRedis docs
جستجوی متنی سنگینجستجو (جدا یا افزونه)بسته به پشته؛ با منبع حقیقت قاطی نکنید

PostgreSQL — وقتی صحت و پرس‌وجوی غنی مهم است

مستندات PostgreSQL آن را ORDBMS متن‌باز با پرس‌وجوی پیچیده، کلید خارجی، تریگر، نمای قابل‌به‌روزرسانی، یکپارچگی تراکنشی و MVCC معرفی می‌کند و بر توسعه‌پذیری (نوع، تابع، ایندکس، زبان رویه‌ای) تأکید دارد. برای SaaS با منطق تجاری، گزارش‌های چندجدولی، و دادهٔ ترکیبی JSON+رابطه‌ای، نقطهٔ شروع بسیار رایج و منطقی است.

AWS در راهنمای انتخاب موتور RDS می‌گوید اگر به JSON پیشرفته، پرس‌وجوی پیچیده یا افزونه‌ها نیاز دارید به PostgreSQL فکر کنید. این توصیهٔ تناسب است نه حکم جهانی.

MySQL — وقتی وب تراکنشی و سازگاری ابزار مهم است

مرجع MySQL موتور را پایگاه رابطه‌ای معرفی می‌کند و برای کاربردهای وب و عملیات تراکنشی ساده در راهنماهای ابری اغلب کنار Postgres به‌عنوان شروع پیشنهادی می‌آید. AWS می‌گوید MySQL را وقتی سازگاری گسترده با ابزار/فریم‌ورک یا بار تراکنشی ساده دارید در نظر بگیرید.

اگر تیم و ابزارهای موجود عمیقاً MySQL هستند و کار شما در همان قاب می‌گنجد، تعویض به Postgres فقط به‌خاطر مقالات مقایسه‌ای هزینهٔ بی‌دلیل است. اگر می‌دانید GIS، CTEهای پیچیده یا افزونه‌های خاص مسیر شماست، همان اول Postgres را جدی‌تر وزن دهید.

MongoDB — وقتی سند طبیعی است

MongoDB را وقتی انتخاب نزدیک است که واحد طبیعی کارتان سند است (پروفایل انعطاف‌پذیر، کاتالوگ با ویژگی‌های متغیر، محتوای تو در تو) و joinهای سنگین مرکز دامنه نیستند. اگر مدام حس می‌کنید باید تراکنش چندسندۀ پیچیده و گزارش رابطه‌ای قوی را به زور داخل سند جا دهید، شاید مدل دامنه رابطه‌ای‌تر از فرض اولیه است.

اشتباه رایج: انتخاب سندمحور فقط چون «شِماレス راحت است». شِما همیشه هست؛ یا در دیتابیس enforce می‌شود یا در کد و در سر توسعه‌دهندگان پخش می‌شود.

Redis — لایهٔ سریع، نه جایگزین دفترکل

Redis Docs آن را data store حافظه‌ای برای کش، ساختار داده، استریم و پیام معرفی می‌کند. برای نشست، rate limit، صف سبک، لیدربورد و کش نتیجهٔ گران مناسب است. به‌عنوان تنها محل ذخیرهٔ پرداخت و موجودی، مگر با طراحی دوام صریح و پذیرش ریسک، خطرناک است.

الگوی سالم: منبع حقیقت رابطه‌ای یا سند + Redis برای مسیر داغ خواندن/شمارش. باطل‌سازی کش را از روز اول طراحی کنید.

الگوی تصمیم ۳۰ دقیقه‌ای

  1. روی کاغذ چهار موجودیت اول و روابطشان را بکشید.
  2. دو تراکنش حیاتی را به زبان کسب‌وکار بنویسید.
  3. سه گزارش مدیریتی را به‌صورت سؤال بنویسید.
  4. اگر روابط و تراکنش غالب بود → رابطه‌ای را پیش‌فرض بگیرید.
  5. اگر یک بخش واقعاً سندوار بود → همان بخش را جدا ارزیابی کنید.
  6. گلوگاه خواندن را بعد از ایندکس درست با کش جواب دهید نه قبلش.

چند موتور یا یکی؟

شروع با یک موتور قوی معمولاً درست است. موتور دوم را وقتی اضافه کنید که Use Case متفاوت و مرز همگام‌سازی مشخص دارید. همگام‌سازی دو منبع حقیقت بدون قرارداد، از خود انتخاب موتور خطرناک‌تر است.

عملیات را در انتخاب بگذارید

  • پشتیبان‌گیری و تمرین Restore.
  • مانیتورینگ قفل، Replication lag، و فضای دیسک.
  • مسیر مهاجرت شِما بدون downtime طولانی.
  • مهارت تیم on-call در موتور انتخابی.

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

جمع‌بندی

دیتابیس را با شکل داده، نیاز تراکنش، الگوی پرس‌وجو و توان عملیات انتخاب کنید. PostgreSQL و MySQL برای بسیاری از سیستم‌های رابطه‌ای نقطهٔ شروع‌اند؛ MongoDB وقتی سند طبیعی است؛ Redis کنار منبع حقیقت برای سرعت. «بهترین دیتابیس» بدون معیار وجود ندارد.

منابع و مراجع

  • PostgreSQL — What Is PostgreSQL?: https://www.postgresql.org/docs/current/intro-whatis.html
  • MySQL 8.4 — What is MySQL?: https://dev.mysql.com/doc/refman/8.4/en/what-is-mysql.html
  • MongoDB Manual — Introduction: https://www.mongodb.com/docs/manual/introduction/
  • Redis Docs — Get started: https://redis.io/docs/latest/get-started/
  • AWS RDS Getting Started — Choosing your database engine: https://docs.aws.amazon.com/AmazonRDS/latest/gettingstartedguide/choosing-engine.html

این هفته مدل دادهٔ مسیر حیاتی را بدون نام برند روی تخته بکشید؛ بعد موتور را نام ببرید.

Author

SE

Soheil Ebrahimpour is the founder of FutureForge. He works on product design, architecture, and getting custom software into production.

Related notes

Related notes

Categories

Related services

From note to project

If this topic is close to your product or system, we can talk about the real scope.

If you are unsure about architecture or the build path, we can talk about the project.

Describe the problem and the constraints. If there is a fit, we will schedule a conversation.

Soheil Ebrahimpour
Notes
Monolith در برابر Microservices: کدام را انتخاب کنیم؟
انتخاب زبان: Node.js، Python، PHP یا Go؟
چگونه Technology Stack پروژه را انتخاب کنیم؟
آیا باید از جدیدترین فناوری استفاده کرد؟
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

Software architecture

Monolith در برابر Microservices: کدام را انتخاب کنیم؟

Sep 20, 2026

Software architecture

انتخاب زبان: Node.js، Python، PHP یا Go؟

Sep 20, 2026

Software architecture

چگونه Technology Stack پروژه را انتخاب کنیم؟

Sep 20, 2026

Software architecture

آیا باید از جدیدترین فناوری استفاده کرد؟

Sep 20, 2026

Operations

Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

Sep 20, 2026
All notes219
Software architecture13
Glossary37
Operations87
Product engineering74
Web guide8
Product engineering
Full-stack engineering
Engineering audit
Architecture consulting
Infrastructure and deployment
Discuss your project
Free tools
Discuss your project