มีช่วงเวลาที่ PostgreSQL แบบจัดการหยุดสะดวก: คุณต้องการส่วนขยายที่ระดับนั้นไม่มีให้ คุณอยากเห็น query plan จริงและปรับ work_mem คุณต้องการ superuser เมื่อคุณอยากเป็นเจ้าของ Postgres — คอนฟิก เวอร์ชัน ส่วนขยาย ตารางแบ็กอัพ — VPS ที่มี root เต็มคือคำตอบที่ตรงไปตรงมา นี่คือการตั้งค่าเฉพาะของ PostgreSQL สำหรับภาพกว้างกว่าเรื่อง "โฮสต์ฐานข้อมูลเอง" (Postgres vs Redis, ที่ไหนเครื่องแบบแชร์ผิด) ดูกรณีใช้งานฐานข้อมูลทั่วไป
ทำไมต้องโฮสต์ PostgreSQL เอง
บนเครื่องของคุณเอง คุณได้สิ่งที่ระดับแบบจัดการปันส่วน:
postgresql.confทั้งไฟล์ —shared_buffers,work_mem,max_connections, การตั้งค่า WAL ปรับให้เข้ากับเวิร์กโหลดของคุณ ไม่ใช่ค่าเริ่มต้นของผู้ให้บริการ- ส่วนขยายใดก็ได้
pgvectorสำหรับ embedding,PostGISสำหรับ geospatial,TimescaleDBสำหรับ time series,pg_cron,pg_stat_statements— ติดตั้งสิ่งที่คุณต้องการ นี่คือจุดที่ระดับแบบจัดการปฏิเสธบ่อยที่สุด - เวอร์ชันหลักของคุณ อัปเกรดตามตารางของคุณ ไม่ใช่ของผู้ให้บริการ
- superuser และ OS ข้างใต้ — ย้ายไดเรกทอรีข้อมูล ปรับเคอร์เนล รัน streaming replication ไปยังเครื่องที่สอง
หาก pgvector คือเหตุผลที่คุณมาที่นี่ พึงสังเกตว่า Postgres บวก pgvector คือ vector store สมบูรณ์บนเครื่องเดียว — บล็อกสร้างเดียวกันที่อยู่เบื้องหลังสแตก 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 มันให้บริการแอปบนเครื่องเดียวกันโดยไม่เปิดเผยอะไรเลย จะให้เซิร์ฟเวอร์อื่นเข้ามา นั่นคือหัวข้อถัดไป
ให้เซิร์ฟเวอร์อื่นเชื่อมต่อ — อย่างปลอดภัย
ทันทีที่เครื่องอื่นต้องการฐานข้อมูล สองสิ่งเปลี่ยนไป:
- ที่อยู่ที่เสถียรและ routable — แพ็กเกจ IPv4 เฉพาะ (Small-IP $16, Medium-IP $20) แพ็กเกจ NAT แชร์ IP ขาออกร่วมกัน ดีสำหรับขาออกแต่ไม่ใช่สำหรับการเป็นฐานข้อมูลที่คนอื่นโทรเข้ามา
- ไฟร์วอลล์ให้แน่น เปิด 5432 เฉพาะ IP ไคลเอนต์ที่ระบุเท่านั้น อย่าใช้
0.0.0.0/0เด็ดขาด และบังคับ TLS พอร์ต Postgres ที่เปิดอยู่บนอินเทอร์เน็ตสาธารณะถูกพบภายในไม่กี่นาที — ล็อกมันด้วยไฟร์วอลล์ UFW
แบ็กอัพเป็นหน้าที่ของคุณ
การโฮสต์เองหมายความว่าแบ็กอัพเป็นเรื่องของคุณ และกฎคือ: ทำก่อนที่คุณจะต้องใช้ pg_dump บน cron สำหรับแบ็กอัพเชิงตรรกะ หรือการเก็บถาวร WAL สำหรับการกู้คืน ณ จุดเวลาสำหรับสิ่งที่คุณใส่ใจ ส่งดัมป์ออกไปนอกเครื่อง และทดสอบการกู้คืนอย่างน้อยหนึ่งครั้ง — แบ็กอัพที่คุณไม่เคยกู้คืนเลยคือความหวัง ไม่ใช่แบ็กอัพ มีแอดออนแบ็กอัพแบบจัดการหากคุณไม่อยากรันเอง
ทำไมต้อง EQVPS สำหรับ PostgreSQL
- root เต็ม, superuser, คอนฟิกของคุณ — เริ่มต้น $8/เดือน, NVMe (RAID1) ที่มีความหมายทันทีที่ฐานข้อมูลและ WAL ของมันเขียนพร้อมกัน
- ไม่มี KYC, จ่ายด้วยคริปโต อีเมลเพื่อสมัคร USDC/USDT เพื่อจ่าย
- สหภาพยุโรป (เยอรมนี, ฟินแลนด์), root ในราว 60 วินาที นำสคีมาของคุณมาแล้วลุยเลย
กรณีใช้งานฐานข้อมูลทั่วไป (ภาพรวม Postgres/Redis) → · RAG แบบโฮสต์เองในสเกลใหญ่ →
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ