Kas ir datubāze? Ceļvedis cilvēkiem, kas veido lietotnes
Datubāze ir sakārtota informācijas krātuve, kurā lietotne saglabā un no kuras nolasa datus — tās lietotājus, pasūtījumus, rezervācijas, ziņas. Atšķirībā no informācijas, kas glabājas tikai pārlūkprogrammas cilnē, datubāzē esošie dati pēc lapas pārlādēšanas vai restartēšanas joprojām ir tur, un visi, kas lieto lietotni, redz vienus un tos pašus ierakstus. Lielākā daļa datubāžu dati organizē tabulās, līdzīgi kā lapās izklājlapā, bet ar stingriem noteikumiem, kas uztur datus konsekventus.
Kāpēc tas ir svarīgi, veidojot ar AI
Visbiežākais pārsteigums cilvēkiem, kas veido ar AI, ir lietotne, kas izskatās pabeigta, bet aizmirst visu. Jūs pievienojat klientu, pārlādējat lapu, un viņš ir pazudis. Tas parasti nozīmē, ka lietotne glabāja datus pārlūkprogrammas atmiņā, nevis datubāzē.
Datubāze ir arī vieta, kur dzīvo daudzi jūsu svarīgākie lēmumi, neatkarīgi no tā, vai to apzināties:
- Ko jūs ierakstāt. Ja neglabājat rezervācijas statusu, nevarat parādīt, kuras rezervācijas tika atceltas.
- Kā lietas savienojas. Vai viens klients var būt ar daudzām rezervācijām, vai viena rezervācija — ar vairākiem pakalpojumiem — nosaka visu lietotni.
- Kas ko var redzēt. Lielākā daļa privātuma kļūdu ir par to, kurus ierakstus lietotājs var lasīt.
Jums pašam nav jāprojektē datubāze. Taču pamatu izpratne ļauj skaidri aprakstīt savus datus un agri pamanīt problēmas.
Ikdienas salīdzinājums
Iedomājieties labi sakārtotu dokumentu skapi mazā birojā.
Katrā atvilktnē ir viena veida lietas: viena atvilktne klientiem, cita tikšanās laikiem, trešā rēķiniem. Katrā atvilktnē katra mape seko vienam un tam pašam formātam ar vienādiem aizpildītiem laukiem. Katrai mapei ir unikāls atsauces numurs, un, ja rēķins pieder klientam, rēķina mapē ir norādīts šī klienta numurs, nevis nokopēts viss viņa dosjē.
Tas ir relāciju datubāze. Atvilktnes ir tabulas, mapes ir rindas, lauki ir kolonnas, atsauces numuri ir primārās atslēgas, bet piezīmes, kas norāda uz citu mapi, ir ārējās atslēgas. Labs biroja vadītājs arī ievēro noteikumus — nav tikšanās bez datuma, nav diviem klientiem ar vienu numuru —, tāpat kā to dara datubāze.
Praktisks piemērs: frizētavas rezervāciju lietotne
Pieņemsim, ka lūdzat AI izveidot rezervāciju vietni frizētavai. Saprātīga datubāze būtu ar četrām tabulām.
services
| id | name | duration_minutes | price |
|---|---|---|---|
| 1 | Griezums | 45 | 40.00 |
| 2 | Krāsošana | 90 | 95.00 |
staff
| id | name | |
|---|---|---|
| 1 | Sāra | sara@example.com |
| 2 | Omārs | omar@example.com |
customers
| id | name | phone | |
|---|---|---|---|
| 101 | Lena Park | lena@example.com | 555-0100 |
bookings
| id | customer_id | service_id | staff_id | starts_at | status |
|---|---|---|---|---|---|
| 5001 | 101 | 1 | 2 | 2026-10-03 14:00 | confirmed |
Apskatiet tabulu bookings. Tajā Lenas vārds un tālruņa numurs netiek kopēts katrā rezervācijā; tur ir customer_id = 101. Ja Lena nomaina tālruņa numuru, tas mainās vienā vietā, un katra rezervācija rāda jauno. Tā ir relāciju datubāzes galvenā ideja: katru faktu glabāt vienu reizi un uz to atsaukties.
Tā pati struktūra atbild uz noderīgiem jautājumiem:
- „Kuri laiki ir brīvi Omāram piektdienā?” — paskatieties Omāra rezervācijas šajā dienā.
- „Cik nopelnīja krāsošanas vizītes šajā mēnesī?” — savienojiet rezervācijas ar pakalpojumiem un saskaitiet cenas.
- „Kuri klienti nav rezervējuši 90 dienas?” — salīdziniet klientus ar viņu pēdējo rezervāciju.
Galveno terminu skaidrojums
| Termins | Ko nozīmē |
|---|---|
| Tabula | Viena veida ierakstu kopa, piemēram, klienti vai rezervācijas. |
| Rinda (ieraksts) | Viens vienums tabulā — viens klients, viena rezervācija. |
| Kolonna (lauks) | Viena informācijas daļa, kas ir katrā rindā, piemēram, e-pasts vai cena. |
| Primārā atslēga | Unikāls ID katrai rindai, parasti skaitlis vai nejaušs teksts. |
| Ārējā atslēga | Kolonna, kas norāda uz rindu citā tabulā, piemēram, customer_id rezervācijās. |
| Shēma (schema) | Vispārējais dizains: kādas tabulas pastāv, to kolonnas un kā tās saistās. |
| Vaicājums (query) | Pieprasījums nolasīt vai mainīt datus, piemēram, „visas rezervācijas rītdienai”. |
| SQL | Structured Query Language, standarta valoda relāciju datubāzu vaicājumiem. |
| Migrācija | Saglabāta, atkārtojama shēmas izmaiņa, piemēram, kolonnas pievienošana. |
| Indekss | Meklēšanas struktūra, kas paātrina meklēšanu pēc kolonnas, kā grāmatas rādītājs. |
| CRUD | Create, Read, Update, Delete — četras pamatdarbības, ko lietotnes veic ar datiem. |
| Dublējums | Datu kopija, ko var atjaunot, ja kaut kas noiet greizi. |
Datubāzu veidi
| Veids | Kā glabā datus | Piemēri | Labi piemērota |
|---|---|---|---|
| Relāciju (SQL) | Tabulas ar fiksētām kolonnām un saiknēm starp tām | Postgres, MySQL, SQLite | Lielākajai daļai biznesa lietotņu: rezervācijām, veikaliem, CRM, SaaS |
| Dokumentu (NoSQL) | Elastīgi dokumenti līdzīgi JSON | MongoDB, Firestore | Datiem, kuru forma stipri atšķiras no ieraksta uz ierakstu |
| Atslēga–vērtība | Vērtība, kas glabājas zem atslēgas | Redis | Kešatmiņai, īslaicīgiem datiem, piemēram, sesijām |
Praktiski visam, ko uzņēmējs vai neliels bizness veido pirmo, relāciju datubāze ir drošā noklusējuma izvēle.
Kur datubāze atrodas jūsu lietotnē
Apmeklētāji nekad tieši nesazinās ar datubāzi. Lapa viņu pārlūkprogrammā (frontend) prasa datus no jūsu servera (backend), parasti caur API. Serveris pārbauda, kas prasa un vai tam ir atļauts, tad vaicā datubāzi un nosūta atpakaļ tikai to, ko šai personai vajadzētu redzēt.
Šis vidējais solis ir svarīgs. Ja pārlūkprogramma varētu vaicāt datubāzi tieši ar pilnām tiesībām, ikviens varētu atvērt izstrādātāja rīkus un nolasīt visu.
Biežākās kļūdas un nepareizi priekšstati
- Datu glabāšana tikai pārlūkprogrammā. Pārlūkprogrammas krātuve (piemēram, localStorage) dzīvo vienā ierīcē un vienā pārlūkprogrammā. Tā ir labi piemērota atcerētam filtram, bet ne pasūtījumiem.
- Viss vienā tabulā. Viena tabula „rezervācijas”, kurā katrā rindā nokopēts klienta vārds, tālrunis un pakalpojuma cena, ātri nesakrīt.
- Paroļu glabāšana kā vienkāršs teksts. Paroles jāsašifrē ar hash, nekad nedrīkst glabāt salasāmas. Skatiet kas ir autentifikācija.
- Nav noteikumu datiem. Bez obligātiem laukiem un unikalitātes noteikumiem iegūsiet rezervācijas bez datuma un dublētus klientus.
- Dzēšanas aizmiršana. Izlemiet, vai klienta dzēšana dzēš arī viņa rezervācijas, tās saglabā vai bloķē dzēšanu.
- Ražošanas datu izmantošana eksperimentiem. Vispirms pārbaudiet riskantas izmaiņas drošā vietā un glabājiet dublējumus.
- Izklājlapas uzskatīšana par datubāzi uz visiem laikiem. Izklājlapas ir lieliskas sākumam, bet grūti tiek galā ar daudziem vienlaicīgiem lietotājiem un tiesībām. Skatiet kā pārvērst izklājlapu lietotnē.
Ko prasīt no sava AI veidotāja
- „Saglabā to datubāzē, nevis pārlūkprogrammā. Pasaki, kurus tabulas izveidosi.”
- „Parādi shēmu vienkāršā tabulā: katru tabulu, tās kolonnas un to saiknes.”
- „Klients var būt ar daudzām rezervācijām; katrai rezervācijai ir tieši viens pakalpojums un viens darbinieks.”
- „Padari e-pastu obligātu un unikālu klientiem.”
- „Neļauj diviem rezervācijām vienam darbiniekam pārklāties laikā.”
- „Tikai pieteikies īpašnieks var lasīt visas rezervācijas; klienti var redzēt tikai savas. Ievieso to serverī.”
- „Kad dzēšu pakalpojumu, nedzēs pagātnes rezervācijas — tā vietā atzīmē pakalpojumu kā neaktīvu.”
Datubāzes Mythex
Kad lietotnei jāsaglabā dati, Mythex projektam pievieno īpašu Postgres datubāzi — to var lūgt tērzēšanā ("saglabā gaidītāju reģistrācijas datubāzē") vai izmantot komandu /database. Savienojuma dati automātiski tiek nodoti jūsu lietotnei, un aģents izveido tabulas. Datubāze pēc piecām dīkstāves minūtēm iemieg un pamostas nākamajā pieprasījumā, un publicētās lietotnes lietojums tiek maksāts par laiku, kad tā bija nomodā, no tā paša kredītu atlikuma, kas tiek izmantots veidošanai. Tā ir pieejama Free un Pro plānos. Datubāzes dokumentācija apraksta detaļas, bet lietotņu veidnes ietver ar datiem darbojošās sākumpunktus.
Jautājumi
Kas ir datubāze vienkāršos vārdos?
Datubāze ir sakārtota informācijas krātuve, kurā lietotne var saglabāt un no kuras var nolasīt datus, piemēram, lietotājus, pasūtījumus vai rezervācijas. Atšķirībā no datiem, kas glabājas tikai pārlūkprogrammas cilnē, datubāzes dati paliek arī pēc lapas pārlādēšanas, restartēšanas vai tad, kad kāds atver lietotni citā ierīcē.
Vai izklājlapa ir datubāze?
Izklājlapā var glabāt tāda paša veida datus, taču tā nav veidota lietotnēm. Īsta datubāze ievēro noteikumus par to, ko satur katra kolonna, uzticami saista tabulas, apkalpo daudzus cilvēkus, kas raksta vienlaikus, un kontrolē, kas ko drīkst lasīt.
Kāda ir atšķirība starp SQL un NoSQL datubāzēm?
SQL (relāciju) datubāzes, piemēram, Postgres un MySQL, glabā datus tabulās ar definētām kolonnām un saiknēm starp tām. NoSQL datubāzes, piemēram, MongoDB, glabā elastīgākus dokumentus. Lielākā daļa biznesa lietotņu — rezervāciju, CRM, veikalu — labi atbilst relāciju modelim.
Vai manai lietotnei vajag datubāzi?
Ja tai jāatceras kaut kas, ko cilvēki ievada — reģistrācijas, pasūtījumus, ziņas, iestatījumus —, un tas jāparāda vēlāk vai kādam citam, tad jā. Tīri informatīva vietne bez formām, kas saglabā datus, parasti nevajag.