Blog

Zašto svaka Mythex aplikacija dobija sopstvenu bazu podataka

Kada aplikacija koju pravite na Mythexu treba da sačuva podatke, na primer prijave, rezervacije ili porudžbine, Mythex tom projektu daje sopstvenu Postgres bazu. Ne tabelu u zajedničkoj bazi, ne šemu pored tuđe, nego zasebnu bazu, napravljenu na zahtev, koja spava kada je niko ne koristi. Evo zašto smo je tako napravili i šta to košta.

Šta dobijate

Kada zatražite podatke („sačuvaj emailove sa liste čekanja”, „čuvaj rezervacije”) ili koristite komandu /database, Mythex:

  • pravi namensku Postgres bazu za projekat (trenutno Postgres 17),
  • ubacuje podatke za povezivanje u vaš radni prostor i u objavljenu aplikaciju kao promenljive okruženja, pa se nikad ne pojavljuju u vašem kodu, i
  • omogućava agentu da kreira tabele i čita i upisuje podatke umesto vas.

Istu bazu koriste i živi pregled i objavljena aplikacija. Ona spava posle 5 minuta neaktivnosti i budi se na sledeći upit. Nove baze počinju male i mogu da se skaliraju pod opterećenjem, uz gornju granicu da upit koji izmakne kontroli ne može da raste bez kraja. Više u dokumentaciji o bazama.

Zašto ne jedna velika zajednička baza?

Zajednička baza sa kolonom koja kaže kojoj aplikaciji red pripada jeftinija je za rad i jednostavnija za održavanje. Odlučili smo se protiv nje iz četiri razloga.

1. Izolacija kojoj ne morate da verujete

Kod koji piše AI pravi greške. U zajedničkoj bazi, jedan izostavljen WHERE app_id = … u upitu jedne aplikacije mogao bi da pročita ili prepiše tuđe podatke drugog korisnika. Sa bazom po aplikaciji, nema tuđih podataka u dometu: greška ostaje unutar svoje aplikacije.

2. Pravi Postgres, a ne vlasnički sloj

Vaša aplikacija razgovara sa standardnim Postgresom preko uobičajenog connection stringa. Svaka biblioteka, ORM ili alat koji radi sa Postgresom radi i ovde. Ako izvezete projekat da biste ga pokrenuli negde drugde, on očekuje Postgres bazu, nešto što svaki hosting provajder nudi, a ne API specifičan za Mythex.

3. Svaka aplikacija može da bude oblikovana onako kako joj treba

Jednoj aplikaciji treba tabela bookings sa jedinstvenim ograničenjem na termine; druga želi full-text pretragu proizvoda. Sa sopstvenom bazom, šema i migracije svake aplikacije su njena stvar. Ništa ne mora da se uklapa u dizajn najmanjeg zajedničkog imenitelja.

4. Trošak prati upotrebu

Pošto svaka baza spava nezavisno, aplikacija koju niko ne koristi košta gotovo ništa, a trošak zauzete aplikacije vidi se kao sopstvena stavka. Objavljena potrošnja baze naplaćuje se na osnovu onoga što je baza zaista izmerila, kako ta naplata funkcioniše.

Kompromisi

Ovaj dizajn nije besplatan:

  • Hladni startovi. Uspavana baza treba trenutak da se probudi na prvom upitu posle tihog perioda. Za većinu aplikacija to je jedva primetno; za aplikaciju koja mora da odgovara odmah u bilo koje doba, to je razlog za razmišljanje.
  • Troškovi dok je budna. Baza ostaje budna dok je nešto upituje. Aplikacija koja svakih nekoliko sekundi proverava bazu drži je budnom non-stop i košta više od one koja upituje po potrebi. Ako vam je potrošnja veća nego što očekujete, obično je razlog ovo. Zamolite AI da prestane sa proveravanjem i da učitava podatke kada zatreba.
  • Više pokretnih delova za nas. Pravljenje, praćenje i čišćenje hiljada baza je više posla nego jedne. To je naš problem, a ne vaš.

Ako ste novi u bazama podataka

Baza je mesto gde aplikacija čuva ono što treba da pamti. Ako je ideja nova, počnite sa šta je baza podataka i šta je Postgres. Kada budete spremni da napravite nešto što čuva podatke, kako napraviti aplikaciju uz AI korak po korak objašnjava kako to dodati.

Mythex · Pricing · Pravite bilo šta uz AI · Šabloni za sajtove i aplikacije · Mythex u poređenju · Rečnik pojmova za pravljenje aplikacija uz AI · Besplatni alati za pravljenje aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština 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 Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)