Vì sao mọi ứng dụng Mythex đều có cơ sở dữ liệu riêng
Khi một ứng dụng bạn xây trên Mythex cần lưu dữ liệu — đăng ký, đặt lịch, đơn hàng — dự án đó được cấp cơ sở dữ liệu Postgres riêng. Không phải một bảng trong cơ sở dữ liệu dùng chung, cũng không phải một schema cạnh schema của người khác: mà là một cơ sở dữ liệu tách biệt, được tạo khi cần, và ngủ khi không ai dùng. Dưới đây là lý do chúng tôi xây theo cách đó, và chi phí của nó.
Bạn nhận được gì
Khi bạn yêu cầu dữ liệu (“lưu email danh sách chờ”, “lưu đặt lịch”) hoặc dùng lệnh /database, Mythex:
- tạo một cơ sở dữ liệu Postgres riêng cho dự án (hiện là Postgres 17),
- đưa thông tin kết nối vào không gian làm việc và ứng dụng đã xuất bản của bạn dưới dạng biến môi trường, để chúng không bao giờ xuất hiện trong mã của bạn, và
- cho phép agent tạo bảng và đọc, ghi dữ liệu cho bạn.
Cơ sở dữ liệu đó được cả bản xem trước trực tiếp và ứng dụng đã xuất bản dùng chung. Nó ngủ sau 5 phút rảnh và thức dậy ở truy vấn tiếp theo. Cơ sở dữ liệu mới bắt đầu nhỏ và có thể mở rộng khi tải tăng, với một trần để một truy vấn chạy sai không thể lớn lên vô hạn. Xem thêm trong tài liệu cơ sở dữ liệu.
Vì sao không dùng một cơ sở dữ liệu lớn dùng chung?
Một cơ sở dữ liệu dùng chung với một cột ghi ứng dụng nào sở hữu mỗi dòng thì rẻ hơn để vận hành và đơn giản hơn để quản lý. Chúng tôi đã chọn không làm vậy vì bốn lý do.
1. Sự cách ly mà bạn không phải tin tưởng
Mã do AI viết vẫn mắc lỗi. Trong một cơ sở dữ liệu dùng chung, chỉ một điều kiện WHERE app_id = … bị thiếu trong một truy vấn của một ứng dụng cũng có thể đọc hoặc ghi đè dữ liệu của khách hàng khác. Với một cơ sở dữ liệu riêng cho mỗi ứng dụng, không có dữ liệu khách hàng nào khác trong tầm với — một lỗi nằm gọn trong ứng dụng của nó.
2. Đó là Postgres thật, không phải một lớp độc quyền
Ứng dụng của bạn nói chuyện với Postgres chuẩn qua một chuỗi kết nối thông thường. Mọi thư viện, ORM hay công cụ nào làm việc được với Postgres đều làm việc được ở đây. Nếu bạn xuất dự án để chạy ở nơi khác, nó vẫn cần một cơ sở dữ liệu Postgres — thứ mà mọi nhà cung cấp hosting đều có — chứ không cần một API riêng của Mythex.
3. Mỗi ứng dụng có thể được định hình theo nhu cầu của nó
Một ứng dụng cần bảng bookings với ràng buộc duy nhất trên các khung giờ; một ứng dụng khác cần tìm kiếm toàn văn trên sản phẩm. Với cơ sở dữ liệu riêng, schema và các bản di chuyển của mỗi ứng dụng là việc của riêng nó. Không có gì phải khớp với một thiết kế thấp nhất chung.
4. Chi phí đi theo mức sử dụng
Vì mỗi cơ sở dữ liệu ngủ riêng, một ứng dụng không ai dùng gần như không tốn gì, và chi phí của một ứng dụng bận rộn hiện thành một dòng riêng. Lượng dùng cơ sở dữ liệu của ứng dụng đã xuất bản được tính dựa trên những gì cơ sở dữ liệu thực sự đo được — cách tính tiền này hoạt động.
Những đánh đổi
Thiết kế này không miễn phí:
- Khởi động lạnh. Một cơ sở dữ liệu đang ngủ cần một chút thời gian để thức dậy ở truy vấn đầu tiên sau một khoảng yên tĩnh. Với hầu hết ứng dụng, điều này gần như không đáng chú ý; với một ứng dụng phải trả lời ngay lập tức vào bất kỳ giờ nào, đó là một điều cần cân nhắc.
- Chi phí khi thức nhưng rảnh. Một cơ sở dữ liệu vẫn thức chừng nào có thứ gì đó đang truy vấn nó. Một ứng dụng truy vấn cơ sở dữ liệu mỗi vài giây sẽ giữ nó thức suốt ngày đêm và tốn nhiều hơn một ứng dụng chỉ truy vấn khi cần. Nếu mức dùng của bạn cao hơn bạn mong đợi, thường đây là lý do — hãy yêu cầu AI ngừng truy vấn liên tục và chỉ tải dữ liệu khi cần.
- Nhiều bộ phận chuyển động hơn cho chúng tôi. Tạo, theo dõi và dọn dẹp hàng nghìn cơ sở dữ liệu khó hơn một cơ sở dữ liệu. Đó là việc của chúng tôi phải gánh, không phải của bạn.
Nếu bạn mới làm quen với cơ sở dữ liệu
Cơ sở dữ liệu là nơi một ứng dụng giữ những gì nó cần nhớ. Nếu khái niệm này còn mới, hãy bắt đầu với cơ sở dữ liệu là gì và Postgres là gì. Khi bạn sẵn sàng xây một thứ lưu trữ dữ liệu, cách xây một ứng dụng bằng AI hướng dẫn cách thêm nó vào.