Prečo každá aplikácia Mythex dostáva vlastnú databázu
Keď aplikácia, ktorú postavíte na Mythexe, potrebuje ukladať dáta — registrácie, rezervácie, objednávky — Mythex tomuto projektu dá vlastnú Postgres databázu. Nie tabuľku v zdieľanej databáze, nie schému vedľa cudzej: samostatnú databázu, vytvorenú na požiadanie, ktorá zaspí, keď ju nikto nepoužíva. Tu je, prečo sme to tak postavili, a čo to stojí.
Čo dostanete
Keď si vyžiadate dáta („ulož e-maily do čakacej listiny“, „ukladaj rezervácie“) alebo použijete príkaz /database, Mythex:
- vytvorí pre projekt vyhradenú Postgres databázu (momentálne Postgres 17),
- vloží prihlasovacie údaje do vášho workspace a do publikovanej aplikácie ako premenné prostredia, takže sa nikdy neobjavia vo vašom kóde, a
- umožní agentovi vytvárať tabuľky a čítať a zapisovať dáta za vás.
Rovnakú databázu používa živý náhľad aj publikovaná aplikácia. Zaspí po 5 minútach nečinnosti a prebudí sa pri ďalšom dotaze. Nové databázy začínajú malé a pri záťaži sa môžu zväčšiť, s horným limitom, aby bežiaci dotaz nerástol bez obmedzenia. Viac v dokumentácii k databázam.
Prečo nie jedna veľká zdieľaná databáza?
Zdieľaná databáza so stĺpcom, ktorý určuje, ku ktorej aplikácii riadok patrí, je lacnejšia na prevádzku a jednoduchšia na správu. My sme to nerobili zo štyroch dôvodov.
1. Izolácia, ktorej nemusíte dôverovať
Kód napísaný AI robí chyby. Vo zdieľanej databáze by jeden chýbajúci WHERE app_id = … v dotaze jednej aplikácie čítal alebo prepisoval dáta iného zákazníka. S databázou na aplikáciu sa k dátam iného zákazníka nedostanete — chyba zostane v rámci vlastnej aplikácie.
2. Je to skutočný Postgres, nie vlastná vrstva
Vaša aplikácia komunikuje so štandardným Postgresom cez bežný connection string. Každá knižnica, ORM alebo nástroj, ktorý funguje s Postgresom, funguje aj tu. Ak exportujete projekt, aby bežal inde, očakáva Postgres databázu — niečo, čo ponúka každý hostingový poskytovateľ — nie API špecifické pre Mythex.
3. Každá aplikácia sa môže tvarovať podľa svojich potrieb
Jedna aplikácia chce tabuľku bookings s unikátnym obmedzením na časové sloty; iná chce fulltextové vyhľadávanie v produktoch. Vďaka vlastnej databáze sú schéma a migrácie každej aplikácie jej vlastnou záležitosťou. Nič sa nemusí vtesnať do návrhu, ktorý vyhovuje všetkým najmenej.
4. Náklady nasledujú používanie
Keďže každá databáza zaspáva samostatne, aplikácia, ktorú nikto nepoužíva, stojí takmer nič, a náklad vyťaženej aplikácie je viditeľný ako jej vlastná položka. Publikované využitie databázy sa účtuje podľa toho, čo databáza skutočne namerala — ako toto účtovanie funguje.
Kompromisy
Tento návrh nie je zadarmo:
- Studené štarty. Spiaca databáza potrebuje chvíľu, kým sa prebudí pri prvom dotaze po tichom období. Pre väčšinu aplikácií je to takmer nepostrehnuteľné; pre aplikáciu, ktorá musí odpovedať okamžite kedykoľvek, je to dôvod na úvahu.
- Náklady, keď je hore, ale nič nerobí. Databáza zostáva hore, kým ju niečo dotazuje. Aplikácia, ktorá databázu dotazuje každých pár sekúnd, ju drží hore non-stop a stojí viac než aplikácia, ktorá dotazuje na požiadanie. Ak je vaše využitie vyššie, než čakáte, zvyčajne je to tým — požiadajte AI, aby prestala dotazovať a načítavala dáta, keď sú potrebné.
- Viac pohyblivých častí pre nás. Vytváranie, sledovanie a upratovanie tisícok databáz je viac práce než jednej. To je náš problém, nie váš.
Ak ste s databázami noví
Databáza je miesto, kde si aplikácia ukladá to, čo si má pamätať. Ak je pre vás tento pojem nový, začnite s čo je databáza a čo je Postgres. Keď budete pripravení postaviť niečo, čo ukladá dáta, ako postaviť aplikáciu s AI prejde pridaním databázy krok za krokom.