روز دوم مهمتر از روز اول
ساخت سرویس فقط نقطهی شروع است؛ تغییر ظرفیت، نگهداری و بازیابی باید همانقدر ساده و کنترلشده باشند.

DATABASE LIFECYCLE CONTROL PLANE
DBaaS Enterprise ده موتور دیتابیس را زیر یک Control Plane مشترک اما Engine-aware اداره میکند. Provision، Scale، Backup/Restore، Upgrade، Failover/Recovery، Stable Endpoint و Runtime Verification در یک چرخهی عملیاتی یکپارچه قرار میگیرند.
اجزای DBaaS Enterprise: یک Control Plane و ده موتور دیتابیس
مسئلهی محصول
Replication، Quorum، Backup، Restore، Upgrade و Failover در هر موتور رفتار متفاوتی دارند. DBaaS این تفاوتها را به فرایندهای روشن تبدیل میکند تا اپراتور بهجای حفظ دستورالعملهای عملیاتی پراکنده، یک مسیر عملیاتی واحد داشته باشد.
ساخت سرویس فقط نقطهی شروع است؛ تغییر ظرفیت، نگهداری و بازیابی باید همانقدر ساده و کنترلشده باشند.
موتورها با یک abstraction مصنوعی یکسان نمیشوند؛ تفاوت واقعی Replication، Quorum و Failover حفظ میشود.
Promotion، Fencing، Quorum و بازیابی از قبل در مدل محصول جای دارند و در زمان حادثه اختراع نمیشوند.
پذیرفتهشدن درخواست کافی نیست؛ عضویت، Replication، Endpoint و خواندن/نوشتن باید نتیجه را تأیید کنند.
نمای قابلیتها
قابلیتها حول چرخهی عمر واقعی سرویس سازماندهی شدهاند، نه حول منوهای فنی هر موتور.
انتخاب موتور، نسخه، توپولوژی و نودها همراه با Preflight قبل از تغییر.
افزودن عضو با آمادهسازی، عضویت، همگامسازی و بررسی سلامت پس از هر مرحله.
بررسی سازگاری، Integrity و بازگردانی تا تأیید کامل سرویس.
مسیر نسخهی مجاز، Backup، Health Gate و بازخوانی وضعیت نسخهی محیط اجرا.
رفتار متناسب با موتور و توپولوژی با حفاظت از Quorum.
نام سرویس ثابت میماند و Routing محلی نودها تغییر Primary را پوشش میدهد.
Host و DB Metrics از منبع واقعی خوانده میشوند و نبود داده جعل نمیشود.
دسترسی و عملیات در Control Plane کنترل و قابلردیابی میمانند.
مدل استقرار
پروفایلهای رابطهای و Key-value (MySQL، PostgreSQL، Redis، Valkey و MariaDB) از ۱ نود شروع میشوند و همان سرویس میتواند به ۲ و ۳ نود رشد کند. توپولوژی ۲ نود عمداً HA تلقی نمیشود: در MySQL، PostgreSQL، Redis و Valkey مسیر Primary/Mirror با Promotion صریح است و در MariaDB دو عضو Galera اکثریت لازم برای Failover خودکار ندارند. HA خودکار در توپولوژی سهنودی و با quorum/election بومی همان موتور فعال میشود.
| اندازه | موتورها | رفتار خرابی | مدل عملیاتی |
|---|---|---|---|
| ۱ نود | MySQL · PostgreSQL · Redis · Valkey · MariaDB | Non-HA / single-member service | Runtime بومی موتور با Stable Endpoint و Local Router/Proxy؛ بدون ادعای افزونگی. |
| ۲ نود | MySQL · PostgreSQL · Redis · Valkey · MariaDB | Automatic failover disabled | MySQL/PostgreSQL/Redis/Valkey: Primary + Mirror با Promotion صریح؛ MariaDB: Galera دو عضوی بدون quorum اکثریت. |
| ۳ نود | MySQL · PostgreSQL · Redis · Valkey · MariaDB | Automatic HA | InnoDB Cluster، Patroni/etcd، Sentinel یا Galera quorum بر اساس semantics بومی همان موتور. |
معماری
درخواست ابتدا Admit و Persist میشود، سپس Worker عملیات مخصوص هر موتور را اجرا میکند و در پایان نتیجه از محیط اجرا خوانده و به شواهد تبدیل میشود.
| مرز | قرارداد فنی | اثر عملیاتی |
|---|---|---|
| Manager | Control Plane only | عضو DB، quorum، witness، Router/Proxy مستقل یا Failover target نیست. |
| Stable endpoint | Tenant FQDN | Client با یک نام پایدار به سرویس میرسد؛ تغییر topology نام سرویس را عوض نمیکند. |
| Routing | Router/Proxy روی همان DB nodes | Stale DNS همچنان به یک DB node میرسد و Routing محلی مسیر درست را حفظ میکند. |
| Coordination | Engine-native quorum/election | etcd، Sentinel، Group Replication و Galera روی خود DB nodeها اجرا میشوند؛ witness خارجی وجود ندارد. |
Execution Pipeline. در DBaaS پذیرش درخواست با موفقیت عملیات یکی نیست؛ مسیر mutation تا زمانی که Runtime read-back و Evidence کامل نشوند به پایان نمیرسد.
| مرحله | Authority / Component | قرارداد فنی |
|---|---|---|
| Admission | Panel / Product API | Engine، topology، permission و confirmation بررسی میشوند؛ درخواست صرفاً Admit میشود. |
| Durable state | PostgreSQL | Operation و Job پیش از mutation پایدار میشوند؛ هر tenant فقط یک mutation فعال دارد و درخواست دوم بهجای قرارگرفتن در صف رد میشود. |
| Dispatch | Transactional Outbox → RabbitMQ → Celery Worker | انتشار کار از state تراکنشی جدا نمیشود و Worker اجرای serialized را میگیرد. |
| Execution fence | Execution lease + signed source manifest | Runtime tree باید با release identity مورد انتظار همخوان باشد؛ drift اجرای playbook را متوقف میکند. |
| Engine execution | Project-local Ansible | Playbook بومی همان Engine فقط روی DB nodeهای tenant اجرا میشود؛ Manager وارد Data Plane نمیشود. |
| Verification | Engine runtime + stable endpoint | Membership/quorum، replication، DNS/TLS و client read/write از محیط واقعی دوباره خوانده میشوند. |
| Evidence | Job-scoped evidence | نتیجه و correlation با همان Operation نگهداری میشود؛ HTTP acceptance به completion تبدیل نمیشود. |
چرخهی عمر
هر مرحله ورودی، محدودیت، Health Gate و بازخوانی وضعیت خودش را دارد؛ از اولین Preflight تا بازیابی.
پروفایل موتور
Control Plane مشترک است، اما Replication، Election/Quorum، Local Routing، Backup و Failover/Recovery هر موتور با معماری Native خودش مدل میشود.

| Engine | Native topology / routing | ۱ نود | ۲ نود | ۳ نود | Data Protection |
|---|---|---|---|---|---|
| MySQL | InnoDB ReplicaSet (1–2) · InnoDB Cluster / Group Replication (3) · MySQL Router روی DB nodes | Non-HA | Manual promotion | Automatic HA | XtraBackup |
| PostgreSQL | Patroni + Streaming Replication · etcd + PgBouncer + HAProxy روی DB nodes | Non-HA | Manual promotion | Patroni automatic HA | pg_basebackup |
| Redis OSS | Replication + Sentinel + HAProxy؛ Sentinel و Proxy روی همان DB nodes | Non-HA | Manual promotion | Sentinel automatic HA | RDB / AOF |
| Valkey | Replication + Sentinel + HAProxy؛ موتوری مستقل، نه alias برای Redis | Non-HA | Manual promotion | Sentinel automatic HA | RDB / AOF |
| MariaDB | Galera (wsrep) + HAProxy؛ Multi-primary cluster با Write Target تحت Routing محصول | Single-member Galera | No automatic failover | Galera quorum HA | MariaBackup / Logical Dump |
| MongoDB | سندمحور (Document) | توپولوژی، HA و Data Protection با semantics بومی همان موتور، زیر همان Control Plane و چرخهی عمر. | |||
| ClickHouse | ستونی و تحلیلی (Columnar / OLAP) | توپولوژی، HA و Data Protection با semantics بومی همان موتور، زیر همان Control Plane و چرخهی عمر. | |||
| OpenSearch | جستوجو و تحلیل لاگ (Search) | توپولوژی، HA و Data Protection با semantics بومی همان موتور، زیر همان Control Plane و چرخهی عمر. | |||
| ScyllaDB | Wide-column | توپولوژی، HA و Data Protection با semantics بومی همان موتور، زیر همان Control Plane و چرخهی عمر. | |||
| Qdrant | برداری (Vector) | توپولوژی، HA و Data Protection با semantics بومی همان موتور، زیر همان Control Plane و چرخهی عمر. | |||
فلو و State Machine
هر mutation به Job پایدار تبدیل میشود؛ عملیات یک tenant با هم overlap نمیکنند و موفقیت فقط پس از read-back از Engine، endpoint و client path ثبت میشود.
Stable Endpoint فقط پس از اثبات نقش جدید جابهجا میشود.
Recovery point پیش از ورود به serving path باید verify شود.
Observed membership تعیین میکند عضو باید Rejoin شود یا Replace.
ساخت سرویس از intent تا read-back واقعی.
رشد topology بدون تبدیل دو نود به HA ساختگی.
Data protection فقط با restore verification کامل میشود.
ارتقا بهصورت مرحلهای و engine-aware.
Quorum و fencing قبل از promotion قرار دارند.
دو مسیر Day‑2 که در عملیات واقعی بهاندازهی Provision مهماند.
بازگرداندن عضو پس از خرابی بدون شکستن Membership موجود.
خروج عضو یا جایگزینی سختافزار با حفظ Quorum و اعضای سالم.
| Action / Flow | Admission / Preconditions | Execution / Lock | Success Criterion | Failure / Recovery |
|---|---|---|---|---|
| Create Database Service | Tenant/Project، Engine/Version، topology و node inventory معتبر | Job serialization؛ Ansible فقط روی DB nodeهای همان tenant | Membership/quorum، Stable Endpoint، DNS/TLS و client read/write تأیید شوند | Failure با Job/Evidence حفظ میشود؛ قبل از retry وضعیت runtime دوباره خوانده میشود |
| Scale 1→2→3 | Cluster سالم، member count فعلی و عضو جدید دقیقاً شناختهشده | عضو جدید قبل از membership mutation آماده میشود؛ retained nodeها sanitize نمیشوند | تعداد دقیق اعضا، replication/quorum و همخوانی endpoint تأیید شوند | در failure عضویت نیمهکاره reconcile میشود؛ عملیات متداخل پذیرفته نمیشود |
| Backup | Engine/version و مقصد/فضا قابلاستفاده؛ Job متداخل وجود ندارد | Backup بومی موتور با metadata و integrity evidence | Artifact/metadata و integrity قابلخواندن و قابلردیابی باشند | Backup ناقص success تلقی نمیشود و مبنای Restore قرار نمیگیرد |
| Restore | Backup checksum، ownership/mode، free disk، compatibility و maintenance state بررسی شده | Restore تحت cluster lock و مسیر مخصوص Engine | Service + membership/replication + endpoint + DNS/TLS + client read/write | Outcome نامعلوم نیازمند reconcile است؛ completion از صرف خروج ابزار استنتاج نمیشود |
| Upgrade | Upgrade edge صریح، backup تأییدشده و health gate اولیه | مرحلهای با lock؛ نسخه در هر مرحله read-back میشود | Exact runtime version و health و client read/write بعد از upgrade | Unsupported/downgrade edge رد میشود؛ failure در همان مرحله متوقف و بازیابی میشود |
| Failover / Recovery | Topology باید اجازه دهد؛ fencing/quorum قبل از mutation بررسی میشود | Promotion برای Primary-based engines یا routing/quorum reconciliation برای Galera | Primary/route/quorum جدید + Stable Endpoint + client I/O از runtime تأیید شود | Minority partition force-promote نمیشود؛ rejoin/reconcile مسیر مستقل recovery است |
کاتالوگ عملیات
کاتالوگ عملیات حول هدف کاربر سازماندهی میشود، نه دستورهای داخلی موتور.
Remote MCP بدون authority موازی. OAuth 2.1 با Authorization Code + PKCE در Panel نقش Authorization Server را دارد و MCP Addon نقش Resource Server؛ grant نهایی به همان mcp_clients، RBAC، scope و rate-limit موجود متصل میشود و یک سیستم دسترسی دوم نمیسازد.
DBaaS Enterprise فاصلهی میان دانش موتور و عملیات تکرارپذیر را کم میکند.