پستگرس، بدون نگهداری سرور
PostgreSQL انتخاب پیشفرض بیشتر اپهای امروزی است: تراکنشهای ACID، JSONB برای دادهی نیمهساختاریافته، ایندکسهای متنوع و اکوسیستم بزرگ افزونهها. در سکو کلود نسخه را انتخاب میکنید و نصب، بهروزرسانی امنیتی، دیسک ماندگار و پشتیبانگیری با ماست.
با افزونهی pgvector میتوانید embedding ها را کنار دادهی اصلی ذخیره و جستوجوی شباهت انجام دهید، و با PostGIS دادهی جغرافیایی را مدیریت کنید. پارامترهایی مثل max_connections و shared_buffers از تب Tuning کنسول تنظیم میشوند.
مناسب برای
- دیتابیس اصلی اپ وب و موبایل
- جستوجوی برداری با pgvector
- دادهی مکانی با PostGIS
- گزارشگیری و دادهی تحلیلی سبک
از ساخت تا اتصال
ساخت
نسخه و فضای دیسک را انتخاب کنید؛ افزونه را میشود همانجا فعال کرد.
--type postgres --version 18آمادهسازی
دیسک ماندگار، کاربر و رمز قوی ساخته و اتصال TLS فعال میشود.
~90sلینک به اپ
متغیرهای اتصال به اپ تزریق و اپ دوباره مستقر میشود.
apps link-dbاستفاده
کد شما فقط
DATABASE_URLرا میخواند.DATABASE_URL
خروجی ساخت سرویس
sakoocloud db create --name main-db --type postgres --version 18 ✔ Provisioning main-db · db_4n8x2p ℹ Ready in ~90s. Get credentials: sakoocloud db credentials db_4n8x2p sakoocloud apps link-db db_4n8x2p --app my-api ✔ Linked database. Env vars injected under DATABASE_*. # DATABASE_URL=postgresql://app:••••@…:5432/main-db
ساخت دیتابیس
با CLI یا از کنسول بسازید. برای جستوجوی برداری، افزونه را هنگام ساخت فعال کنید.
sakoocloud db create --name main-db --type postgres --version 18 --storage 10
sakoocloud db create --name vectors --type postgres --extension pgvector
تنظیمات
متغیرهایی که به اپ تزریق میشوند
پیشوند پیشفرض DATABASE است؛ با --prefix میتوانید نام دیگری بدهید، مثلاً DATABASE.
| متغیر | مقدار |
|---|---|
DATABASE_URL | postgresql://user:pass@host:5432/db |
DATABASE_HOST و DATABASE_PORT | آدرس و پورت داخلی |
DATABASE_USER و DATABASE_PASSWORD | نام کاربری و رمز تولیدشده |
DATABASE_NAME | نام دیتابیس |
پشتیبانگیری
پشتیبانها بهصورت dump منطقی گرفته و جدا از دیسک دیتابیس، روی فضای ذخیرهسازی سازگار با S3 نگهداری میشوند.
| نوع | در دسترس |
|---|---|
| پشتیبان دستی | همهی پلنها، از جمله پلن رایگان |
| زمانبندی خودکار | پلنهای پولی |
| بازگردانی | روی همان دیتابیس یا یک نمونهی تازه (backups clone) |
عملیات روزمره
| کار | دستور |
|---|---|
| اطلاعات اتصال | sakoocloud db credentials <id> |
| اتصال مستقیم با کلاینت psql | sakoocloud db connect <id> |
| افزایش دیسک یا حافظه | sakoocloud db resize <id> --storage 20 |
| پشتیبان دستی | sakoocloud db backups create <id> |
| ساخت نسخهی staging از پشتیبان | sakoocloud db backups clone <id> <backup-id> |
اتصال از اپ
بعد از apps link-db، همین چند خط کافی است.
import pg from "pg";
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
const { rows } = await pool.query("select now()");
import os, psycopg
with psycopg.connect(os.environ["DATABASE_URL"]) as conn:
print(conn.execute("select now()").fetchone())
conn, err := pgx.Connect(ctx, os.Getenv("DATABASE_URL"))
if err != nil {
log.Fatal(err)
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
خطاهای رایج
از سیستم خودم وصل نمیشوم
علتآدرس داخلی فقط از اپهای همان پروژه در دسترس است.
راهحلبرای اتصال از بیرون، دسترسی عمومی را روشن کنید و آدرس و پورت خارجی را از sakoocloud db credentials بگیرید.
sakoocloud db public-access <db-id>
sakoocloud db credentials <db-id>
too many connections
علتتعداد اتصالهای باز از max_connections بیشتر شده؛ معمولاً هر نمونهی اپ استخر جدا باز میکند.
راهحلاندازهی استخر اتصال در اپ را کم کنید یا max_connections را از تب Tuning بالا ببرید.
نوع دادهی vector پیدا نمیشود
علتدیتابیس بدون افزونهی pgvector ساخته شده است.
راهحلدیتابیس را با --extension pgvector بسازید؛ افزونه از لحظهی ساخت فعال است و نصب دستی لازم ندارد.
پرسشهای متداول
کدام نسخههای PostgreSQL در دسترس است؟
نسخههای 15، 16، 17 و 18. پیشفرض 18 است و هنگام ساخت با --version انتخاب میشود.
اتصال از طریق PgBouncer است؟
نه. اتصال مستقیم به همان نمونهی PostgreSQL شماست، پس پارامترهای نشست و prepared statement ها بدون محدودیت کار میکنند.
پشتیبانها کجا نگهداری میشوند؟
جدا از دیسک دیتابیس، روی فضای ذخیرهسازی سازگار با S3. پشتیبان دستی روی همهی پلنها و زمانبندی خودکار روی پلنهای پولی است.
میتوانم با pgAdmin یا DBeaver وصل شوم؟
بله. دسترسی عمومی را روشن کنید و آدرس و پورت خارجی را از sakoocloud db credentials بگیرید.
جزئیات بیشتر در راهنمای PostgreSQL در مستندات و مرجع CLI.