ทำให้ใช้งานได้จริง
ฐานข้อมูล ต่อไว้ให้เรียบร้อย
สั่งครั้งเดียว แอปของคุณก็มี Postgres ใช้ พร้อม DATABASE_URL ใน environment เรียบร้อย บทนี้บอกว่าแต่ละแพ็กเกจได้อะไร ย้ายข้อมูลเดิมเข้ามายังไง และต้องระวังอะไรตอนถอดออก
1. ขอฐานข้อมูลจากเอไอ
ถ้าใช้เทอร์มินัล ก็สั่งบรรทัดนี้
แอปจะรีสตาร์ตพร้อม DATABASE_URL ใน environment ไลบรารีไหนที่คุยกับ Postgres ได้ ก็อ่านค่านี้แล้วต่อได้เลย ไม่มี client เฉพาะของ Erawan ให้ต้องเรียน และคุณไม่ต้องคัดลอกรหัสผ่านไปวางที่ไหนเอง
ถ้าแอปขึ้นครั้งแรกแล้วล้มเพราะยังไม่มี DATABASE_URL ก็ไม่ต้องตกใจ ต้องมีแอปก่อนถึงจะต่อฐานข้อมูลเข้าไปได้ พอต่อเสร็จ แอปรีสตาร์ตเองแล้วก็ทำงานปกติ
แอปที่ใช้เอไอค้นข้อมูลแบบ vector ใช้ pgvector ได้เลย ฐานข้อมูลนี้มีติดมาให้ทุกแพ็กเกจ ให้ migration ของแอปสั่ง CREATE EXTENSION IF NOT EXISTS vector ได้ตามปกติ ไม่ต้องติดตั้งเพิ่ม และไม่ต้องไปเช่าบริการ vector แยก
2. ได้ขนาดเท่าไร
บน Hobby ฐานข้อมูลอยู่ใน Postgres ตัวที่ใช้ร่วมกับบัญชีอื่น ใหญ่ได้ 500MB แต่เป็นฐานข้อมูลของคุณคนเดียว บัญชีอื่นเปิดเข้ามาไม่ได้ ช่วงทดลองฟรี 30 วันก็ได้ขนาดเท่า Hobby ส่วนตั้งแต่ Pro ขึ้นไป ได้ Postgres ทั้งตัวเป็นของคุณเอง ขนาด 1GB บน Pro และ 2GB บน Max ดูทุกแพ็กเกจ
พออัปเกรดจาก Hobby เป็น Pro ระบบย้ายข้อมูลให้เอง คัดลอกแล้วตรวจให้ครบก่อน ถึงจะลบของเดิม ถ้ามีขั้นไหนพัง แอปก็ยังอยู่บนฐานข้อมูลเดิม ส่วนบน Pro และ Max ขนาดดิสก์ของฐานข้อมูลตั้งได้ครั้งเดียวตอนสร้าง ถ้าไม่ระบุ ระบบให้เต็มขนาดของแพ็กเกจ
ตั้งแต่ Hobby ขึ้นไป ฐานข้อมูลย้อนกลับไปจุดก่อนหน้าได้ วิธีอยู่ในบทย้อนฐานข้อมูลกลับไปจุดก่อนหน้า ส่วนเรื่องการเข้ารหัสและการแยกแอปแต่ละตัวออกจากกัน อ่านได้ที่หน้าความปลอดภัย
3. ย้ายข้อมูลเดิมเข้ามา
ถ้ามีข้อมูลอยู่แล้ว ไม่ว่าจะในเครื่องคุณหรือที่โฮสต์เจ้าอื่น ให้ pg_dump ออกมา บีบเป็นไฟล์ .gz ด้วย gzip -c dump.sql > dump.sql.gz แล้วส่งเข้าฐานข้อมูลของแอปด้วยคำสั่งนี้
ไฟล์ส่งตรงเข้าฐานข้อมูลผ่านบัญชีของคุณ ไม่ต้องเอาไปฝากไว้ที่ลิงก์ไหนก่อน ถ้าฐานข้อมูลมีตารางอยู่แล้ว ระบบจะไม่ทับให้ เว้นแต่เติม --force ลำดับก็สำคัญ ให้ import ก่อนปล่อยให้แอปรัน migration ของตัวเอง ไม่อย่างนั้น migration ที่เขียนไว้กับ schema เดิมจะล้ม
4. ถอดฐานข้อมูลออก
คำสั่งนี้ลบฐานข้อมูลทิ้งพร้อมข้อมูลทั้งหมด ถ้ายังต้องใช้ข้อมูล ให้สำรองออกมาก่อนถอด
ถ้าโปรเจกต์มีไฟล์ erawan.yaml ที่เขียน addons: [postgres] ไว้ ให้ลบบรรทัดนั้นด้วย บรรทัดนี้บอกระบบว่าแอปต้องมีฐานข้อมูลก่อนเริ่มทำงาน ถ้ายังเก็บบรรทัดนี้ไว้ พอ deploy ครั้งถัดไป ระบบก็สร้างฐานข้อมูลว่าง ๆ ขึ้นมาใหม่ และไม่มีข้อความไหนเตือนว่าการถอดไม่ติด
ติดตามบทเรียนใหม่และข่าวจากเอราวัณ