PostgreSQL و Migration زیرساخت Backend
PostgreSQL منبع اصلی داده است و pgx/v5 اتصال و Pool را فراهم میکند. Query، Row و Scan Featureها دستی هستند و Platform نباید Repository عمومی یا ORM پنهان بسازد.
Connection Pool
- یک Pool مشترک در Bootstrap ساخته و به Adapterهای نیازمند تزریق میشود.
- حداقل و حداکثر Connection از Config میآیند و پس از Metric واقعی تنظیم میشوند.
- هر Query و Transaction،
context.Contextو Deadline درخواست را دریافت میکند. - Readiness با Timeout کوتاه Pool را Ping میکند و جزئیات Driver را در Response عمومی نمایش نمیدهد.
Migration خودکار
Migrationهای SQL شمارهدار در backend/db/migrations/ داخل Binary Embed میشوند و با tern/v2 پیش از بازشدن HTTP Listener اجرا میشوند. این رفتار برای اجرای Native، Docker، Restart و Deploy یکسان است.
قواعد:
- Migration شکستخورده Startup را متوقف میکند؛
- تغییر Schema با راهبرد Expand/Contract و سازگار با Rollback Image است؛
- DDL و Constraint در Migration صریح و Reviewشدنی هستند؛
- اصلاح Migration اجراشده ممنوع است؛ Change بعدی Migration جدید میسازد؛
- Rollback Binary به معنی Rollback خودکار Schema نیست.
go run ./cmd/migrate status فقط ابزار بازرسی دستی است و پیشنیاز اجرای عادی نیست.
مالکیت Feature
هر Table، Index و Query مالک Feature دارد. Platform فقط Runner، Pool و Primitive فنی را نگه میدارد. Transaction چند Feature بدون طراحی مالکیت و ADR مجاز نیست.
آزمون لازم
- اجرای Migration روی Database خالی و اجرای دوباره بدون تغییر؛
- شکست Startup در SQL نامعتبر یا دسترسی ناکافی؛
- Integration Test واقعی PostgreSQL برای Query، Constraint، Transaction و
Scan؛ - بررسی Query Plan برای Indexهای مسیر پرتکرار؛
- Test سازگاری نسخه قبلی Binary با مرحله Expand پیش از Contract.
قواعد داده در داده و چندمستاجری تعریف شدهاند.