یک لحظه مشخص وجود دارد که یک پایگاهداده مدیریتشده از راحت بودن دست میکشد و تبدیل به یک دیوار میشود. افزونهای میخواهید که آن رده ارائه نمیدهد. میخواهید طرح واقعی کوئری را ببینید و work_mem را تنظیم کنید. یک superuser میخواهید. یک سرویس مدیریتشده تا لحظهای که نیاز داشته باشید مالک آن چیز شوید یک پیشفرض عالی است — و آنوقت یک VPS با دسترسی کامل root پاسخ صادقانه است.
این صفحه درباره اجرای درست PostgreSQL یا Redis خودتان است، و درباره روشن بودن نسبت به اینکه کجا یک ماشین مشترک انتخاب درستی است و کجا نیست.
یک پایگاهداده واقعاً به چه چیزی نیاز دارد
پایگاهدادهها به دو چیزی اهمیت میدهند که یک سرور بازی نمیدهد: حافظه برای مجموعه کاری و I/O دیسک. شکل تقریبیاش:
- یک اپ — یک نمونه Postgres (یا Redis) بهعلاوه یک سرویس بکاند. مجموعه کاری معمولاً ۱.۷ تا ۲ گیگابایت است. Small (۸ دلار) بدون دردسر از پسش برمیآید.
- چند اپ، یا همروندی واقعی تولیدی — اتصالهای بیشتر، کشهای بزرگتر، کارهای پسزمینه. Medium (۱۲ دلار) فضای لازم را به شما میدهد.
- ماشینهای دیگر باید به آن برسند — یک آدرس پایدار و مسیریابیپذیر میخواهید، پس یک پلن با IPv4 اختصاصی (Small-IP ۱۶ دلار و بالاتر). در ادامه بیشتر دربارهاش.
Redis از این هم سبکتر است — به حافظه محدود است، پس پلن را به اندازه مجموعهداده بهعلاوه سربار تعیین کنید و کارتان تمام است. Postgres همان است که کمی تنظیم را پاداش میدهد.
دلیل واقعی خودمیزبانی: کنترل
اینجا همانجایی است که یک VPS جای خودش را به دست میآورد. روی ماشین خودتان اینها را میگیرید:
- کل
postgresql.conf—shared_buffers،work_mem،max_connections، تنظیمات WAL، همهاش، تنظیمشده برای بار کاری شما به جای پیشفرضهای یک فروشنده. - هر افزونه.
pgvectorبرای embeddingها و جستجوی معنایی،PostGISبرای مکانی،TimescaleDBبرای سریهای زمانی،pg_cron،pg_stat_statements— هر چه لازم دارید نصب کنید. ردههای مدیریتشده مکرراً فهرست افزونهها را محدود میکنند یا آن را پشت یک پلن بالاتر قرار میدهند. - superuser و سیستمعاملِ زیر آن. میتوانید دایرکتوری داده را جابهجا کنید، کرنل را تنظیم کنید،
pg_dumpرا طبق برنامه خودتان اجرا کنید، و اگر بخواهید replication جریانی به یک ماشین دیگر راه بیندازید.
اگر هیچکدام از اینها برای شما اهمیت ندارد، یک پایگاهداده مدیریتشده واقعاً خوب است و باید از آن استفاده کنید. این صفحه برای موردی است که اهمیت دارد.
کجا یک ماشین مشترک ابزار اشتباهی است
رک بگوییم: یک VPS با vCPU مشترک برای OLTP سنگین ساخته نشده — صدها تراکنش در ثانیه با نوشتنهای حساس به تأخیر. آن بار کاری بر پایه I/O دیسک تضمینشده و یک کلاک پایدار زنده میماند یا میمیرد، و پلنهای مشترک هیچکدام را وعده نمیدهند. اگر این شما هستید، سختافزار اختصاصی میخواهید، و ما ترجیح میدهیم همین حالا به شما بگوییم تا اینکه تأخیر p99 شما هر دوی ما را شرمنده کند.
برای مورد بسیار رایجتر — یک پایگاهداده پشت یک اپ، یک ابزار داخلی، یک انبار تحلیلی، یک کش — یک پلن مشترک دقیقاً درست است.
پشتیبانگیری اختیاری نیست
خودمیزبانی یعنی پشتیبانگیری کار شماست، و تنها قانون این است: قبل از آنکه به آن نیاز پیدا کنید انجامش دهید. برای Postgres، pg_dump روی یک cron برای پشتیبانهای منطقی، یا آرشیو WAL برای بازیابی نقطهبهنقطه در زمان روی هر چیزی که واقعاً برایتان مهم است. dumpها را از روی ماشین بیرون بفرستید — به object storage یا یک سرور دیگر — تا یک دیسک مرده پشتیبانها را با خودش نبرد. حداقل یک بار یک بازیابی را آزمایش کنید. یک پشتیبانی که هرگز بازیابیاش نکردهاید یک امید است، نه یک پشتیبان.
اجازه دادن به سرورهای دیگر برای اتصال
اگر پایگاهداده فقط به یک اپ روی همان ماشین سرویس میدهد، آن را به localhost bind کنید و کارتان تمام است — چیزی برای در معرض گذاشتن نیست. لحظهای که یک ماشین دیگر باید وارد شود، دو چیز تغییر میکند:
- به یک آدرس پایدار و مسیریابیپذیر نیاز دارید — که یک پلن با IPv4 اختصاصی است (Small-IP ۱۶ دلار، Medium-IP ۲۰ دلار). پلنهای NAT یک آدرس را به اشتراک میگذارند، که برای خروجی خوب است اما نه برای بودن یک پایگاهدادهای که سرورهای دیگر به آن زنگ میزنند.
- آن را محکم با فایروال محدود میکنید. پورت ۵۴۳۲ (یا ۶۳۷۹) را فقط برای IPهای مشخصی که به آن نیاز دارند باز کنید، هرگز برای
0.0.0.0/0، و TLS را الزامی کنید. یک پورت باز Postgres روی اینترنت عمومی ظرف چند دقیقه پیدا میشود.
انتخاب پلن
| راهاندازی | پلن |
|---|---|
| پایگاهداده پشت یک اپ، فقط localhost | Small (۸ دلار) |
| چند اپ / همروندی تولیدی | Medium (۱۲ دلار) |
| سرورهای دیگر باید وصل شوند | Small-IP (۱۶ دلار) / Medium-IP (۲۰ دلار) |
| OLTP سنگین، صدها TPS | سختافزار اختصاصی، نه یک VPS مشترک |
بیشتر پایگاهدادههای خودمیزبان روی Small شروع میکنند و همانطور که اپها یا کلاینتهای خارجی بیشتری میگیرند، به Medium یا یک پلن با IP اختصاصی رشد میکنند.
چرا اینجا
دسترسی کامل root یعنی این پایگاهداده مال شماست، تا ته — هر خط پیکربندی، هر افزونه، برنامه پشتیبانگیری خودتان، بدون هیچ ردهای که تصمیم بگیرد اجازه نصب چه چیزی را دارید. پرداخت با رمزارز است (USDC یا USDT روی Base، Ethereum یا Polygon)، بدون KYC، بدون مدرک. root در حدود ۶۰ ثانیه پس از پرداخت، و میتوانید چند دقیقه بعد Postgres را در حال پذیرش اتصالها داشته باشید.
جمعبندی صادقانه: وقتی کنترل میخواهید خودمیزبانی کنید — افزونهها، تنظیم، superuser — و وقتی بار کاریتان متوسط است. برای پایگاهداده یک اپ کوچک تا متوسط، یک پلن مشترک ابزار درست است. برای صدها TPS از OLTP حساس به تأخیر، نیست، و ما این را میگوییم. آمادهاید؟ یک پلن انتخاب کنید.
نظرات
هنوز نظری نیست. اولین نفر باشید.