Kako dodati bazo podatkov v svojo aplikacijo (brez poznejše izgube podatkov)
Bazo podatkov svoji aplikaciji dodate tako, da izberete upravljano relacijsko bazo (običajno Postgres), povezovalni niz shranite kot tajnost na strežniku, za vsako vrsto stvari, ki jo aplikacija shranjuje, ustvarite eno tabelo, vaš zaledni del pa — nikoli brskalnik — bere in piše v to bazo. Če gradite z AI graditeljem aplikacij, običajno zadostuje, da rečete »shrani to v bazo podatkov«, agent pa nastavi tabele in kodo; vaša naloga je jasno opisati podatke in preveriti, da se res shranjujejo.
Ta vodnik pokriva, kdaj potrebujete bazo podatkov, glavne možnosti, kako opisati svoje podatke in napake, ki povzročijo izgubo ali uhajanje podatkov.
Kdaj vaša aplikacija potrebuje bazo podatkov
Bazo podatkov potrebujete, ko mora vaša aplikacija zapomniti nekaj po zaprtju strani ali deliti podatke med ljudmi. Tipični znaki:
- Obiskovalci oddajo nekaj: obrazec, prijavo, rezervacijo ali naročilo
- Uporabniki imajo račune s svojo shranjeno vsebino
- Skrbnik mora videti ali urejati, kar so ustvarili drugi
- Želite poročila ali števce skozi čas
Bazo ne potrebujete za statično stran, kjer vsi vidijo isto vsebino, na primer za portfelj ali preprosto pristajalno stran. Če niste prepričani, kaj baza podatkov dejansko je, najprej preberite kaj je baza podatkov.
Vaše možnosti
| Možnost | Kaj je | Primerno za | Kompromisi |
|---|---|---|---|
| Vgrajena baza podatkov iz vašega graditelja aplikacij | Baza, ustvarjena in povezana za vaš projekt | Večino aplikacij, zgrajenih z AI graditeljem | Vezana na gostovanje te platforme; izvoz in varnostne kopije so odvisni od platforme |
| Upravljani Postgres ali MySQL | Gostovana relacijska baza, ki jo ločeno naročite | Aplikacije, ki jih gostite sami ali jih deli več storitev | Sami upravljate ključe, omejitve povezav in načrte |
| Backend kot storitev | Baza podatkov skupaj s prijavo, shrambo in API-ji v enem izdelku | Aplikacije, osredotočene na frontend, ki želijo pripravljeno prijavo | Več pojmov, specifičnih za ponudnika, za učenje |
| Dokumentna (NoSQL) baza | Shranjuje prilagodljive dokumente, podobne JSON-u | Zelo nepravilne podatke | Relacije in poročanje sta težja |
| Preglednica kot baza | Google Sheets ali podobno prek API-ja | Majhna notranja orodja, prototipe | Počasno, brez pravih omejitev, ob hkratnem urejanju se pokvari |
Za večino manjših in srednjih spletnih aplikacij je pravilna privzeta izbira relacijska baza, kot je Postgres. Dobra je pri relacijah (ena stranka ima več naročil), ohranja doslednost podatkov in omogoča kasnejša vprašanja prek SQL-a. Za preprost pregled glejte kaj je Postgres.
Pred gradnjo opišite svoje podatke
Najkoristnejša stvar, ki jo lahko naredite, je, da zapišete stvari, ki jih aplikacija shranjuje, in kako so povezane. Nimate potrebe po strokovnem žargonu baz. Za aplikacijo za rezervacije:
- Stranke: ime, e-pošta, telefon
- Storitve: ime, trajanje, cena
- Rezervacije: katera stranka, katera storitev, začetni čas, status (čaka, potrjeno, preklicano)
To so tri tabele. »Katera stranka« in »katera storitev« postaneta povezavi (tuji ključi) med njimi. Če to pravilno določite na začetku, je to pomembneje kot katerakoli tehnološka izbira, ker je spreminjanje oblike podatkov, ki že imajo prave vrstice, težje kot spreminjanje postavitve strani.
Nekaj praktičnih pravil:
- Ena tabela za vsako vrsto stvari. Naročil ne stiskajte v besedilni stolpec pri stranki.
- Vsaka vrstica naj ima ID in čas ustvarjanja. Oboje boste kasneje potrebovali.
- Uporabljajte ustrezne tipe. Datumi naj bodo datumi, denar naj bo v celih centih ali decimalnem tipu, ne v besedilu.
- Obvezna polja označite kot obvezna. Naj zavrne slabe podatke baza, ne samo obrazec.
Primeri pozivov
Začnite z eno funkcijo naenkrat, ne z vsako shemo naenkrat:
Dodaj bazo podatkov v to aplikacijo. Ustvari tabelo bookings s imenom stranke, e-pošto, storitvijo, začetnim časom in statusom (čaka, potrjeno, preklicano; privzeto čaka). Shrani oddaje iz obrazca za rezervacije vanjo, prikaži sporočilo o uspehu in dodaj skrbniško stran, ki prikaže rezervacije od najnovejše do najstarejše.
Nato jo razširite:
Dodaj tabelo services (ime, trajanje v minutah, cena v centih). Prosto besedilno polje za storitev pri rezervacijah zamenjaj s povezavo na services in obstoječe rezervacije prenesi, ne da bi jih izbrisal.
Nato jo zaostrite:
Poskrbi, da se vsi branja in pisanja v bazo izvajajo na strežniku. Brskalnik nikoli ne sme prejeti povezovalnega niza do baze. Pred vstavljanjem na strežniku preveri e-pošto in začetni čas.
Korak za korakom
- Naštejte svoje podatke kot zgoraj: stvari, polja, povezave med njimi.
- Ustvarite bazo. V AI graditelju jo zahtevajte v klepetu. Drugje ustvarite upravljano instanco Postgres in kopirajte njen povezovalni niz.
- Povezovalni niz shranite kot tajnost (okoljska spremenljivka na strežniku), nikoli v kodi. Glejte okoljske spremenljivke in tajnosti.
- Ustvarite tabele. Uporabljajte migracije — različicirane skripte, ki spreminjajo shemo, da so spremembe ponovljive in povratne.
- Zgradite strežniške poti, ki ustvarjajo, berejo, posodabljajo in brišejo vrstice (CRUD). Brskalnik kliče te poti; nikoli ne govori neposredno z bazo.
- Povežite uporabniški vmesnik s temi potmi: obrazci, ki shranjujejo, seznami, ki se nalagajo, prazna stanja, kadar še ni ničesar.
- Preizkusite trajnost. Oddajte nekaj, osvežite stran, odprite v drugem brskalniku. Če podatkov ni, se niso shranili v bazo.
- Preverite dostop. Prijavite se kot drugi uporabnik in preverite, da ne vidite ali urejate podatkov prvega uporabnika.
- Objavite, nato znova preizkusite na živem naslovu URL, saj objavljena aplikacija morda uporablja drugačno povezavo kot predogled.
Pogoste napake
- Shranjevanje v brskalnik in misel, da je shranjeno. localStorage deluje, dokler nekdo ne odpre aplikacije na drugi napravi. Vedno preizkusite v drugem brskalniku.
- Povezovalni niz v kodi frontenda. Vsak lahko prebere kodo frontenda. To mu da celotno bazo.
- Brez preverjanja dostopa. »Pokaži moja naročila« mora filtrirati po prijavljenem uporabniku na strežniku, ne v uporabniškem vmesniku. To je najpogostejša varnostna luknja pri aplikacijah, zgrajenih z AI; naš varnostni kontrolni seznam to pokriva.
- Destruktivne spremembe sheme. Zahteva za »preimenovanje tabele« ali »spremembo strukture« lahko tabelo izbriše in ponovno ustvari. Ko obstajajo pravi podatki, recite »prenesi obstoječe vrstice, ničesar ne briši«.
- Shranjevanje datotek v bazo. Slike in PDF-ji sodijo v shrambo datotek, v tabeli naj bo samo njihov URL ali ključ. Glejte kako dodati nalaganje datotek.
- Brez varnostnih kopij. Preden imate stranke, vedite, kako vaša platforma izdeluje varnostne kopije in kako jih obnovite.
Kontrolni seznam
- Vsaka vrsta stvari ima svojo tabelo z ID-jem in časom ustvarjanja
- Obvezna polja in tipe uveljavlja baza
- Povezovalni niz je samo v tajnostih na strežniku
- Vsa branja in pisanja potekajo prek strežniških poti
- Vsak uporabnik lahko bere in spreminja samo svoje vrstice
- Podatki preživijo osvežitev strani in se prikažejo v drugem brskalniku
- Spremembe sheme uporabljajo migracije in ohranijo obstoječe vrstice
- Veste, kako delujejo varnostne kopije in obnova
- Živa aplikacija je preizkušena po objavi
Dodajanje baze podatkov v Mythex
V Mythexu lahko vsak projekt dobi svojo namensko bazo Postgres, tako v načrtu Free kot Pro. Običajno ne klikate ločenega gumba »priključi«: v klepetu zahtevajte (»shrani e-poštne naslove za čakalni seznam v bazo podatkov«) ali vtipkajte /database, povezovalni podatki pa se vstavijo v delovni prostor in vašo objavljeno aplikacijo. Nastavitve projekta prikazujejo, ali je baza aktivna.
Baza po 5 minutah nedejavnosti zaspi in se prebudi ob naslednji zahtevi. Objavljena poraba se zaračuna za čas, ko je bila dejansko budna, iz istega stanja kreditov, ki ga uporabljate za gradnjo. Če bazo dodate po objavi, znova objavite, da jo živa aplikacija prevzame.
Glejte Baza podatkov in recept Zgradite aplikacijo CRUD v dokumentaciji. Za prijavo, ki je potrebna za podatke posameznih uporabnikov, preberite kako dodati prijavo v svojo aplikacijo.
Vprašanja
Ali za svojo aplikacijo potrebujem bazo podatkov?
Potrebujete jo takoj, ko mora aplikacija med obiskoma kaj zapomniti ali deliti podatke med uporabniki: prijave, naročila, rezervacije, objave ali nastavitve. Statična spletna stran, ki vsem prikazuje isto vsebino, je ne potrebuje.
Katero bazo podatkov naj uporabim za manjšo spletno aplikacijo?
Relacijska baza, kot je Postgres, je varna privzeta izbira za večino manjših spletnih aplikacij. Dobro obvladuje uporabnike, naročila, povezave in poročanje, je zelo podprta in pri majhnem obsegu jo redko prerastete.
Ali lahko podatke shranim v brskalnik namesto v bazo podatkov?
Shramba v brskalniku, na primer localStorage, obstaja samo na eni napravi in v enem brskalniku, uporabnik pa jo lahko kadarkoli izbriše. Primerna je za nastavitve, kot je izbira teme, ne pa za podatke, ki jih morate vi ali drugi uporabniki videti pozneje.
Ali Mythex vključuje bazo podatkov?
Da. Projekt v Mythexu lahko dobi lastno namensko bazo Postgres v načrtih Free in Pro. Zanjo zaprosite v klepetu ali uporabite ukaz /database, povezovalni podatki pa se vam samodejno vstavijo. Poraba se plačuje iz istega stanja kreditov kot gradnja.