Kāpēc katrai Mythex lietotnei ir sava datubāze
Kad lietotnei, ko veido Mythex, vajag saglabāt datus, piemēram, reģistrācijas, rezervācijas vai pasūtījumus, Mythex šim projektam dod savu Postgres datubāzi. Ne tabulu kopīgā datubāzē, ne shēmu blakus kāda citai: atsevišķu datubāzi, izveidotu pēc pieprasījuma, kas guļ, kad neviens to neizmanto. Šeit ir, kāpēc to veidojām tā un ko tas maksā.
Ko tu saņem
Kad lūdz datus („saglabā waitlist e-pastus“, „glabā rezervācijas“) vai izmanto komandu /database, Mythex:
- izveido veltītu Postgres datubāzi projektam (pašlaik Postgres 17),
- ievada savienojuma datus tavā darbvietā un publicētajā lietotnē kā vides mainīgos, lai tie nekad neparādās kodā, un
- ļauj aģentam izveidot tabulas un lasīt un rakstīt datus tavā vietā.
To pašu datubāzi izmanto tiešraides priekšskatījums un publicētā lietotne. Tā guļ pēc 5 dīkstāves minūtēm un pamostas ar nākamo vaicājumu. Jaunas datubāzes sākas mazas un var palielināties zem slodzes ar griestiem, lai skriešanas vaicājums nevarētu augt bez ierobežojuma. Vairāk datubāzu dokumentācijā.
Kāpēc ne viena liela kopīga datubāze?
Kopīga datubāze ar kolonnu, kas saka, kurai lietotnei pieder katra rinda, ir lētāka darbināt un vienkāršāk apkalpot. Mēs to nedarījām četru iemeslu dēļ.
1. Izolācija, kurai nevajag uzticēties
AI rakstīts kods kļūst. Kopīgā datubāzē viens trūkstošs WHERE app_id = … vienā lietotnes vaicājumā varētu nolasīt vai pārrakstīt cita klienta datus. Ar datubāzi katrai lietotnei nav neviena cita klienta datu, kas būtu sasniedzams; kļūda paliek savā lietotnē.
2. Tas ir īsts Postgres, nevis patentēts slānis
Tava lietotne runā ar standarta Postgres, izmantojot parastu savienojuma virkni. Jebkura bibliotēka, ORM vai rīks, kas strādā ar Postgres, strādā arī šeit. Ja eksportē projektu, lai to palaistu citur, tas sagaida Postgres datubāzi, ko piedāvā katrs hostings, nevis Mythex specifisku API.
3. Katru lietotni var veidot, kā tai vajag
Vienai lietotnei vajag tabulu bookings ar unikālu ierobežojumu laika slotiem; citai vajag pilnteksta meklēšanu produktos. Ar savu datubāzi katras lietotnes shēma un migrācijas ir tās pašas lieta. Nekas nav jāpielāgo zemākā kopsaucēja dizainam.
4. Izmaksas seko lietojumam
Tā kā katra datubāze guļ pati par sevi, lietotne, ko neviens neizmanto, maksā gandrīz neko, un aktīvas lietotnes izmaksas ir redzamas kā sava rinda. Publicētās datubāzes lietojums tiek norēķināts pēc tā, ko datubāze faktiski izmērīja: kā šis norēķins darbojas.
Kompromisi
Šis dizains nav bez maksas:
- Aukstais starts. Guļoša datubāze pēc klusa perioda pamostas pirmajā vaicājumā ar nelielu kavēšanos. Vairumam lietotņu to gandrīz nepamana; lietotnei, kam jāatbild uzreiz jebkurā laikā, tas ir jāņem vērā.
- Izmaksas, kad ir nomoda, bet dīkstāvē. Datubāze paliek nomodā, kamēr kaut kas to vaicā. Lietotne, kas vaicā savu datubāzi ik pēc dažām sekundēm, to tur nomodā visu diennakti un maksā vairāk nekā tā, kas vaicā pēc pieprasījuma. Ja tavs lietojums izskatās augstāks, nekā gaidīji, tas parasti ir iemesls: pasaki AI pārtraukt vaicāt un ielādēt datus, kad tie vajadzīgi.
- Vairāk kustīgu daļu mums. Tūkstošu datubāžu izveidošana, izsekošana un tīrīšana ir vairāk darba nekā vienas. Tā ir mūsu problēma, nevis tava.
Ja esi jauns datubāzēm
Datubāze ir vieta, kur lietotne glabā to, kas tai jāatceras. Ja ideja ir jauna, sāc ar ko ir datubāze un ko ir Postgres. Kad esi gatavs veidot kaut ko, kas glabā datus, kā veidot lietotni ar AI izskaidro, kā to pievienot.