Blogi

Miks igal Mythexi rakendusel on oma andmebaas

Kui rakendus, mida ehitad Mythexis, vajab andmete salvestamist — registreerumisi, broneeringuid, tellimusi —, annab Mythex sellele projektile oma Postgres-andmebaasi. Mitte tabelit jagatud andmebaasis, mitte skeemi kellegi teise kõrval: eraldi andmebaasi, mis luuakse vajaduse korral ja magab, kui keegi seda ei kasuta. Siin on, miks me selle nii ehitasime ja mida see maksab.

Mida sa saad

Kui küsid andmeid („salvesta ootenimekirja e-kirjad“, „hoia broneeringuid“) või kasutad käsku /database, Mythex:

  • loob projektile pühendatud Postgres-andmebaasi (praegu Postgres 17),
  • süstib ühendusandmed sinu töökeskkonda ja avaldatud rakendusse keskkonnamuutujatena, nii et need ei ilmu kunagi sinu koodis, ja
  • laseb agendil luua tabeleid ning lugeda ja kirjutada andmeid sinu eest.

Sama andmebaas on kasutusel elavas eelvaates ja avaldatud rakenduses. See läheb magama pärast 5 tühikäigu minutit ja ärkab järgmise päringu peale. Uued andmebaasid algavad väikesena ja saavad koormuse all suuremaks, koos ülemise piiriga, nii et käitamatu päring ei saa piiramatult kasvada. Rohkem leiad andmebaasi dokumentatsioonist.

Miks mitte üks suur jagatud andmebaas?

Jagatud andmebaas, kus veerg ütleb, millisele rakendusele iga rida kuulub, on odavam käitada ja lihtsam hallata. Me ei valinud seda neljal põhjusel.

1. Isolatsioon, mida pole vaja usaldada

Tehisintellekti kirjutatud kood teeb vigu. Jagatud andmebaasis võib ühest rakenduse päringust puuduv WHERE app_id = … lugeda või üle kirjutada teise kliendi andmed. Igal rakendusel oma andmebaasiga ei ole teise kliendi andmeid kättesaadavad — viga jääb oma rakendusse.

2. See on päris Postgres, mitte omanikukihi

Sinu rakendus räägib standardse Postgresiga tavalise ühendusstringi kaudu. Iga teek, ORM või tööriist, mis töötab Postgresiga, töötab siin. Kui ekspordid oma projekti, et seda mujal käitada, eeldab see Postgres-andmebaasi — midagi, mida igal hostimisteenuse pakkujal on —, mitte Mythexi-spetsiifilist API-d.

3. Iga rakendus saab kujuneda vajaduse järgi

Üks rakendus tahab tabelit bookings ajavahemike ainulaadse piiranguga; teine tahab tootekataloogis täistekstiotsingut. Oma andmebaasiga on iga rakenduse skeem ja migratsioonid tema enda asi. Miski ei pea sobima madalaima ühise nimetajaga disainiga.

4. Kulu järgib kasutust

Kuna iga andmebaas magab omaette, maksab rakendus, mida keegi ei kasuta, peaaegu mitte midagi, ja hõivatud rakenduse kulu on nähtav omal real. Avaldatud andmebaasi kasutus arveldatakse sellest, mida andmebaas tegelikult mõõtis — kuidas see arveldamine töötab.

Kompromissid

See disain pole tasuta:

  • Külmkäivitused. Magav andmebaas vajab esimesel päringul pärast vaikset perioodi hetke ärkamiseks. Enamiku rakenduste puhul on see peaaegu märkamatu; rakenduse puhul, mis peab alati kohe vastama, on see arvestamist väärt.
  • Ärkvel, aga tühikäigul olles. Andmebaas jääb ärkvel, kui miski seda päringuid teeb. Rakendus, mis küsitleb oma andmebaasi iga paari sekundi tagant, hoiab selle ööpäev läbi ärkvel ja maksab rohkem kui see, mis laeb andmeid nõudmisel. Kui su kasutus tundub kõrgem kui oodatud, on tavaliselt selle põhjus — palu tehisintellektil lõpetada küsitlemine ja laadida andmed siis, kui neid vaja on.
  • Rohkem liikuvaid osi meie jaoks. Tuhandete andmebaaside loomine, jälgimine ja puhastamine on rohkem tööd kui ühe oma. See on meie probleem kanda, mitte sinu oma.

Kui oled andmebaaside suhtes uus

Andmebaas on koht, kus rakendus hoiab seda, mida ta peab meeles pidama. Kui idee on uus, alusta mis on andmebaas ja mis on Postgres selgitustega. Kui oled valmis ehitama midagi, mis salvestab andmeid, käib kuidas ehitada rakendust tehisintellektiga läbi selle lisamise.

Mythex · Pricing · Ehita kõike AI-ga · Veebilehtede ja rakenduste mallid · Mythex võrdluses · Tehisintellektiga rakenduste ehitamise sõnastik · Tasuta tööriistad tehisintellektiga rakenduste ehitamiseks · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) فارسی 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 简体中文 繁體中文(香港) 繁體中文(台灣)