ทำไมแอป Mythex ทุกแอปจึงได้ฐานข้อมูลของตัวเอง
เมื่อแอปที่คุณสร้างบน Mythex ต้องบันทึกข้อมูล เช่น การสมัคร การจอง หรือคำสั่งซื้อ โปรเจกต์นั้นจะได้ฐานข้อมูล Postgres ของตัวเอง ไม่ใช่ตารางในฐานข้อมูลกลาง หรือ schema ข้างๆ ของคนอื่น แต่เป็นฐานข้อมูลแยกต่างหากที่สร้างเมื่อต้องการ และหลับเมื่อไม่มีใครใช้ นี่คือเหตุผลที่เราสร้างแบบนั้น และสิ่งที่มันมีต้นทุน
สิ่งที่คุณได้รับ
เมื่อคุณขอข้อมูล ("บันทึกอีเมลรายชื่อรอ" "เก็บการจอง") หรือใช้คำสั่ง /database Mythex จะ:
- สร้างฐานข้อมูล Postgres เฉพาะให้โปรเจกต์ (ปัจจุบันคือ Postgres 17)
- ใส่รายละเอียดการเชื่อมต่อเข้าไปในพื้นที่ทำงานและแอปที่เผยแพร่ของคุณเป็น environment variables เพื่อให้มันไม่ปรากฏในโค้ดของคุณ และ
- ให้ agent สร้างตารางและอ่านเขียนข้อมูลแทนคุณ
ฐานข้อมูลเดียวกันถูกใช้โดยพรีวิวสดและแอปที่เผยแพร่ มัน หลังจากไม่มีการใช้งานห้านาที และตื่นเมื่อมีคิวรีถัดไป ฐานข้อมูลใหม่เริ่มเล็กและขยายได้เมื่อมีโหลด โดยมีเพดานเพื่อไม่ให้คิวรีที่ควบคุมไม่ได้โตไม่มีขอบเขต ดูเพิ่มเติมได้ในเอกสารฐานข้อมูล
ทำไมไม่ใช้ฐานข้อมูลกลางขนาดใหญ่ตัวเดียว
ฐานข้อมูลกลางที่มีคอลัมน์บอกว่าแต่ละแถวเป็นของแอปใดนั้นถูกกว่าในการรันและง่ายกว่าในการดูแล เรายังเลือกไม่ทำแบบนั้นด้วยสี่เหตุผล
1. การแยกที่คุณไม่ต้องไว้ใจ
โค้ดที่ AI เขียนทำผิดได้ ในฐานข้อมูลกลาง WHERE app_id = … ที่หายไปเพียงหนึ่งจุดในคิวรีของแอปหนึ่งอาจอ่านหรือเขียนทับข้อมูลของลูกค้าอีกคน เมื่อมีฐานข้อมูลต่อหนึ่งแอป จะไม่มีข้อมูลลูกค้าอื่นให้เข้าถึง บั๊กจึงอยู่ภายในแอปของมันเอง
2. มันเป็น Postgres จริง ไม่ใช่ชั้นเฉพาะตัว
แอปของคุณพูดคุยกับ Postgres มาตรฐานด้วย connection string ปกติ ไลบรารี ORM หรือเครื่องมือใดที่ทำงานกับ Postgres ก็ทำงานที่นี่ได้ หากคุณส่งออกโปรเจกต์ เพื่อรันที่อื่น มันคาดหวังฐานข้อมูล Postgres ซึ่งผู้ให้บริการโฮสติ้งทุกรายมีให้ ไม่ใช่ API เฉพาะของ Mythex
3. แต่ละแอปปรับรูปร่างได้ตามที่ต้องการ
แอปหนึ่งต้องการตาราง bookings พร้อม unique constraint บนช่วงเวลา อีกแอปต้องการการค้นหาข้อความเต็มรูปแบบบนสินค้า เมื่อมีฐานข้อมูลของตัวเอง schema และ migration ของแต่ละแอปเป็นเรื่องของแอปนั้น ไม่มีอะไรต้องพอดีกับการออกแบบที่ใช้ร่วมกันที่ต่ำที่สุด
4. ต้นทุนตามการใช้งาน
เพราะแต่ละฐานข้อมูลหลับแยกกัน แอปที่ไม่มีใครใช้จึงแทบไม่มีค่าใช้จ่าย และต้นทุนของแอปที่มีคนใช้เยอะจะปรากฏเป็นบรรทัดของตัวเอง ฐานข้อมูลที่เผยแพร่แล้วถูกเรียกเก็บตามที่มันวัดได้จริงวิธีการคิดค่าใช้จ่ายนี้
ข้อแลกเปลี่ยน
การออกแบบนี้ไม่ได้ฟรี:
- การเริ่มต้นเย็น ฐานข้อมูลที่หลับต้องใช้เวลาสักครู่ในการตื่นเมื่อคิวรีแรกหลังจากเงียบไปนาน สำหรับแอปส่วนใหญ่นี่แทบไม่รู้สึก แต่สำหรับแอปที่ต้องตอบทันทีตลอดเวลา มันเป็นสิ่งที่ต้องพิจารณา
- ค่าใช้จ่ายขณะตื่นที่ยังไม่หลับ ฐานข้อมูลจะตื่นตราบใดที่มีอะไรมาคิวรีมัน แอปที่ poll ฐานข้อมูลทุกไม่กี่วินาทีจะทำให้มันตื่นตลอดเวลาและเสียค่าใช้จ่ายมากกว่าแอปที่คิวรีตามความต้องการ หากการใช้งานของคุณสูงกว่าที่คาด นี่มักเป็นสาเหตุ ให้ขอให้ AI หยุด poll และโหลดข้อมูลเมื่อจำเป็น
- ส่วนที่เคลื่อนไหวมากขึ้นสำหรับเรา การสร้าง ติดตาม และล้างฐานข้อมูลหลายพันรายการทำงานมากกว่าฐานข้อมูลเดียว นั่นเป็นปัญหาของเราที่ต้องแบกรับ ไม่ใช่ของคุณ
หากคุณยังใหม่กับฐานข้อมูล
ฐานข้อมูลคือที่ที่แอปเก็บสิ่งที่มันต้องจำ หากแนวคิดนี้ใหม่สำหรับคุณ เริ่มจากฐานข้อมูลคืออะไร และPostgres คืออะไร เมื่อคุณพร้อมสร้างสิ่งที่เก็บข้อมูล วิธีสร้างแอปด้วย AI จะพาไปดูการเพิ่มมัน