Blog

Proč každá aplikace na Mythexu dostává vlastní databázi

Když aplikace, kterou stavíte na Mythexu, potřebuje ukládat data – registrace, rezervace, objednávky –, dostane daný projekt vlastní Postgres databázi. Ne tabulku ve sdílené databázi, ne schéma vedle cizího: samostatnou databázi, vytvořenou na vyžádání, která usíná, když ji nikdo nepoužívá. Tady je, proč jsme ji postavili takto, a co to stojí.

Co dostanete

Když požádáte o data („ulož e-maily z čekací listiny“, „ukládej rezervace“) nebo použijete příkaz /database, Mythex:

  • vytvoří pro projekt vyhrazenou Postgres databázi (aktuálně Postgres 17),
  • vloží připojovací údaje do vašeho pracovního prostoru a publikované aplikace jako proměnné prostředí, takže nikdy nejsou v kódu, a
  • umožní agentovi vytvářet tabulky a číst a zapisovat data za vás.

Stejnou databázi používá živý náhled i publikovaná aplikace. Usne po 5 minutách nečinnosti a probudí se při dalším dotazu. Nové databáze začínají malé a mohou se pod zátěží zvětšit, s horní hranicí, aby běžící dotaz nemohl růst bez omezení. Více v dokumentaci k databázím.

Proč ne jedna velká sdílená databáze?

Sdílená databáze se sloupcem, který říká, ke které aplikaci každý řádek patří, je levnější na provoz a jednodušší na správu. My jsme ji nezvolili ze čtyř důvodů.

1. Izolace, které nemusíte věřit

Kód psaný AI dělá chyby. Ve sdílené databázi by jeden chybějící WHERE app_id = … v dotazu jedné aplikace mohl číst nebo přepsat data jiného zákazníka. S databází na aplikaci tam žádná cizí data v dosahu nejsou – chyba zůstane uvnitř své vlastní aplikace.

2. Je to skutečný Postgres, ne proprietární vrstva

Vaše aplikace mluví se standardním Postgresem běžným připojovacím řetězcem. Každá knihovna, ORM nebo nástroj, který funguje s Postgresem, funguje i tady. Pokud exportujete projekt, abyste ho provozovali jinde, očekává Postgres databázi – něco, co nabízí každý hostingový poskytovatel – a ne Mythex-specifické API.

3. Každá aplikace může mít tvar, jaký potřebuje

Jedna aplikace chce tabulku bookings s unikátním omezením na časové sloty; jiná chce fulltextové vyhledávání v produktech. Se svou vlastní databází jsou schéma a migrace každé aplikace jen její věc. Nic nemusí zapadat do návrhu, který je nejmenším společným jmenovatelem.

4. Náklady sledují použití

Protože každá databáze usíná sama, aplikace, kterou nikdo nepoužívá, stojí téměř nic, a náklady rušné aplikace jsou vidět jako vlastní položka. Využití publikovaných databází se účtuje podle toho, co databáze skutečně naměřila – jak to účtování funguje.

Kompromisy

Tento návrh není zadarmo:

  • Studené starty. Usnulá databáze se po tichém období při prvním dotazu chvíli probouzí. Pro většinu aplikací je to sotva znatelné; pro aplikaci, která musí odpovídat okamžitě kdykoli, je to důvod k úvaze.
  • Náklady, když je vzhůru bez práce. Databáze zůstává vzhůru, dokud ji něco dotazuje. Aplikace, která se na databázi dotazuje každých pár sekund, ji drží vzhůru pořád a stojí víc než ta, která dotazuje na vyžádání. Pokud je vaše využití vyšší, než čekáte, je to obvykle tímto důvodem – požádejte AI, aby přestala dotazovat a načítala data, až když jsou potřeba.
  • Více pohyblivých částí na naší straně. Vytvářet, sledovat a uklízet tisíce databází je víc práce než jedna. To je náš problém, ne váš.

Pokud jste s databázemi noví

Databáze je místo, kde aplikace uchovává to, co si potřebuje pamatovat. Pokud je ten pojem nový, začněte s co je databáze a co je Postgres. Až budete připraveni stavět něco, co ukládá data, jak postavit aplikaci s AI ukazuje, jak ji přidat.

Mythex · Pricing · Vytvořte cokoli s AI · Šablony webů a aplikací · Mythex v porovnání · Slovník tvorby aplikací s AI · Bezplatné nástroje pro tvorbu aplikací s AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)