لحظهای هست که PostgreSQLِ مدیریتشده دیگر راحت نیست: افزونهای میخواهید که رده ارائه نمیدهد، میخواهید طرح واقعیِ کوئری را ببینید و work_mem را تنظیم کنید، سوپریوزر میخواهید. وقتی میخواهید Postgres را مالک شوید — پیکربندی، نسخه، افزونهها، زمانبندی پشتیبان — یک VPS با rootِ کامل پاسخ صادقانه است. این راهاندازیِ مخصوص PostgreSQL است؛ برای تصویر گستردهترِ «خودمیزبانیِ پایگاهداده» (Postgres در برابر Redis، کجا ماشین اشتراکی نادرست است) مورد استفادهٔ پایگاهدادهٔ عمومی را ببینید.
چرا PostgreSQL را خودمیزبانی کنیم
روی ماشین خودتان آنچه را ردههای مدیریتشده جیرهبندی میکنند بهدست میآورید:
- کلِ
postgresql.conf—shared_buffers،work_mem،max_connections، تنظیمات WAL، تنظیمشده برای بار کاریتان، نه پیشفرض فروشنده. - هر افزونهای.
pgvectorبرای امبدینگ،PostGISبرای مکانی-جغرافیایی،TimescaleDBبرای سریهای زمانی،pg_cron،pg_stat_statements— آنچه نیاز دارید نصب کنید. اینجا جایی است که ردهای مدیریتشده بیش از همه «نه» میگوید. - نسخهٔ اصلیِ شما، ارتقایافته بر اساس زمانبندی شما، نه فراهمکننده.
- سوپریوزر و سیستمعاملِ زیرش — دایرکتوری داده را جابهجا کنید، هسته را تنظیم کنید، تکثیر استریمی به ماشین دوم اجرا کنید.
اگر pgvector دلیل حضور شماست، توجه کنید که Postgres-بهعلاوهٔ-pgvector یک انبار برداریِ کامل روی یک ماشین است — همان بلوک سازنده در پسِ پشتهٔ RAGِ خودمیزبان و حافظهٔ ایجنت.
راهاندازیاش کنید (Ubuntu 24.04، Docker)
# docker-compose.yml — PostgreSQL 16 (+ pgvector via the pgvector image)
services:
db:
image: pgvector/pgvector:pg16
restart: always
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: change-me-strong
POSTGRES_DB: app
command: ["postgres", "-c", "shared_buffers=512MB", "-c", "work_mem=32MB"]
volumes: ["/srv/pg:/var/lib/postgresql/data"]
ports: ["127.0.0.1:5432:5432"] # localhost only; see below to expose safely
docker compose up -d
docker compose exec db psql -U app -c "CREATE EXTENSION IF NOT EXISTS vector;"
متصل به 127.0.0.1، به یک اپ روی همان ماشین خدمت میکند بیآنکه چیزی را در معرض بگذارد. برای راهدادن سرورهای دیگر، آن بخش بعدی است.
اجازهٔ اتصال به سرورهای دیگر — با امنیت
لحظهای که ماشینی دیگر به پایگاهداده نیاز پیدا کند، دو چیز تغییر میکند:
- آدرسی پایدار و قابلمسیریابی — پلنی با IPv4 اختصاصی (Small-IP با ۱۶ دلار، Medium-IP با ۲۰ دلار). پلنهای NAT یک IP خروجی را به اشتراک میگذارند، برای خروجی خوب اما نه برای اینکه پایگاهدادهای باشید که دیگران به آن وصل میشوند.
- فایروال سخت. پورت ۵۴۳۲ را فقط به IPهای خاصِ کلاینت باز کنید، هرگز
0.0.0.0/0، و TLS را الزامی کنید. یک پورت باز Postgres روی اینترنت عمومی ظرف دقایقی یافت میشود — با یک فایروال UFW قفلش کنید.
پشتیبانگیری کار شماست
خودمیزبانی یعنی پشتیبانگیری بر عهدهٔ شماست، و قاعده این است: پیش از آنکه نیازش بیفتد انجامش دهید. pg_dump روی cron برای پشتیبانهای منطقی، یا آرشیو WAL برای بازیابی نقطهای برای هرچه برایتان مهم است. دامپها را از ماشین بیرون بفرستید، و دستکم یکبار بازیابی را آزمایش کنید — پشتیبانی که هرگز بازیابیاش نکردهاید امید است، نه پشتیبان. اگر ترجیح میدهید خودتان اجرایش نکنید، افزونهٔ پشتیبانگیری مدیریتشده موجود است.
چرا EQVPS برای PostgreSQL
- rootِ کامل، سوپریوزر، پیکربندیِ شما — از ۸ دلار در ماه، NVMe (RAID1) که وقتی پایگاهداده و WALِ آن همزمان مینویسند اهمیت پیدا میکند.
- بدون KYC، پرداخت رمزارزی. ایمیل برای ثبتنام، USDC/USDT برای پرداخت.
- اتحادیهٔ اروپا (آلمان، فنلاند)، root در ~۶۰ ثانیه. اسکیمای خود را بیاورید و بروید.
مورد استفادهٔ پایگاهدادهٔ عمومی (مرور Postgres/Redis) → · RAGِ خودمیزبان در مقیاس →
نظرات
هنوز نظری نیست. اولین نفر باشید.