Kodėl kiekviena Mythex programėlė gauna savo duomenų bazę
Kai programėlei, kurią kuriate Mythex, reikia išsaugoti duomenis — registracijas, rezervacijas, užsakymus — tas projektas gauna savo Postgres duomenų bazę. Ne lentelę bendroje duomenų bazėje ir ne schemą šalia kažkieno kito: atskirą duomenų bazę, sukuriamą pagal poreikį, kuri užmiega, kai jos niekas nenaudoja. Štai kodėl ją sukūrėme taip ir ką tai kainuoja.
Ką gaunate
Kai prašote duomenų („išsaugok laiškus iš laukiamųjų sąrašo“, „saugok rezervacijas“) arba naudojate komandą /database, Mythex:
- sukuria projektui skirtą Postgres duomenų bazę (šiuo metu Postgres 17),
- įrašo jungties duomenis į jūsų darbo erdvę ir publikuotą programėlę kaip aplinkos kintamuosius, todėl jie niekada nepasirodo jūsų kode, ir
- leidžia agentui jums kurti lenteles ir skaityti bei rašyti duomenis.
Ta pati duomenų bazė naudojama gyvoje peržiūroje ir publikuotoje programėlėje. Ji užmiega po 5 neaktyvių minučių ir pabunda su kita užklausa. Naujos duomenų bazės startuoja mažos ir gali išsiplėsti esant apkrovai, su riba, kad įstrigusi užklausa negalėtų augti be galo. Daugiau — duomenų bazės dokumentacijoje.
Kodėl ne viena didelė bendra duomenų bazė?
Bendra duomenų bazė su stulpeliu, nurodančiu, kuriai programėlei priklauso kiekviena eilutė, pigesnė paleisti ir paprastesnė valdyti. Mes to nedarėme dėl keturių priežasčių.
1. Izoliacija, kuriai nereikia pasitikėti
DI parašytas kodas kartais klysta. Bendroje duomenų bazėje vienas trūkstamas WHERE app_id = … vienos programėlės užklausoje galėtų perskaityti ar perrašyti kito kliento duomenis. Su duomenų baze kiekvienai programėlei jokių kito kliento duomenų nepasiekiama — klaida lieka savo programėlės ribose.
2. Tikras Postgres, o ne patentuotas sluoksnis
Jūsų programėlė kalba su standartiniu Postgres per įprastą jungties eilutę. Čia veikia bet kuri biblioteka, ORM ar įrankis, kuris veikia su Postgres. Jei eksportuojate projektą, kad jį paleistumėte kitur, jam reikia Postgres duomenų bazės — tokią siūlo kiekvienas hostingo tiekėjas — o ne Mythex specifinio API.
3. Kiekviena programėlė gali būti sudaryta taip, kaip jai reikia
Vienai programėlei reikia bookings lentelės su unikalumo apribojimu laiko tarpams, kitai — viso teksto paieškos per produktus. Turėdama savo duomenų bazę, kiekvienos programėlės schema ir migracijos yra jos pačios reikalas. Niekas nepriverčiamas tilpti į bendriausią dizainą.
4. Kaina seka naudojimą
Kadangi kiekviena duomenų bazė užmiega atskirai, programėlė, kurios niekas nenaudoja, beveik nieko nekainuoja, o aktyvios programėlės kaina matoma kaip atskira eilutė. Publikuotos duomenų bazės naudojimas apmokestinamas pagal tai, ką duomenų bazė iš tikrųjų išmatavo — kaip veikia šis apmokestinimas.
Kompromisai
Šis dizainas nemokamas:
- Šalto paleidimo laikas. Užmigusi duomenų bazė po ramaus laikotarpio pirmai užklausai pabunda šiek tiek ilgiau. Daugumai programėlių tai beveik nepastebima; programėlei, kuri turi atsakyti akimirksniu bet kuriuo metu, tai svarbu.
- Kaina, kai ji budi. Duomenų bazė lieka pabudusi, kol ją kas nors pasiekia. Programėlė, kuri kas kelias sekundes klausia duomenų bazės, ją laiko budrią visą parą ir kainuoja daugiau nei ta, kuri užklausia pagal poreikį. Jei naudojimas atrodo didesnis, nei tikėjotės, dažniausiai būtent dėl to — paprašykite DI nebeklausinėti, o įkelti duomenis, kai jų prireikia.
- Daugiau judančių dalių mums. Tūkstančių duomenų bazių kūrimas, sekimas ir valymas yra daugiau darbo nei vienos. Tai mūsų našta, ne jūsų.
Jei esate naujokas duomenų bazėms
Duomenų bazė yra vieta, kur programėlė saugo tai, ką turi prisiminti. Jei ši idėja nauja, pradėkite nuo kas yra duomenų bazė ir kas yra Postgres. Kai būsite pasiruošę kurti ką nors, kas saugo duomenis, kaip sukurti programėlę su DI parodo, kaip tai pridėti.