Kas yra duomenų bazė? Vadovas žmonėms, kurie kuria programas
Duomenų bazė – tai sutvarkyta informacijos saugykla, į kurią programa įrašo ir iš kurios skaito: jos naudotojus, užsakymus, rezervacijas, žinutes. Skirtingai nei informacija, laikoma tik naršyklės skirtuke, duomenų bazės duomenys išlieka po perkrovimo ar perkrovimo serveryje, o visi programą naudojantys žmonės mato tuos pačius įrašus. Dauguma duomenų bazių duomenis sutvarko lentelėmis, panašiai kaip skaičiuoklės lapuose, bet su griežtomis taisyklėmis, kurios išlaiko duomenų nuoseklumą.
Kodėl tai svarbu kuriant su DI
Dažniausias netikėtumas žmonėms, kuriantiems su DI, yra programa, kuri atrodo baigta, bet viską pamiršta. Pridedate klientą, perkraunate puslapį – ir jo nebėra. Tai paprastai reiškia, kad programa laikė duomenis naršyklės atmintyje, o ne duomenų bazėje.
Duomenų bazė taip pat yra vieta, kur slypi daugelis svarbiausių sprendimų, net jei to ir nesuvokiate:
- Ką įrašote. Jei neišsaugote rezervacijos būsenos, negalėsite parodyti, kurios rezervacijos atšauktos.
- Kaip viskas susiję. Ar vienas klientas gali turėti daug rezervacijų, ar viena rezervacija – daug paslaugų, formuoja visą programą.
- Kas ką gali matyti. Dauguma privatumo klaidų susijusios su tuo, kuriuos įrašus naudotojas gali skaityti.
Neturite patys projektuoti duomenų bazės. Bet supratimas apie pagrindus leidžia aiškiai apibūdinti savo duomenis ir anksti pastebėti problemas.
Kasdienis palyginimas
Įsivaizduokite gerai tvarkomą segtuvų spintą mažame biure.
Kiekvienoje skiltyje laikoma viena rūšies daiktai: viena – klientams, kita – susitikimams, trečia – sąskaitoms. Kiekvienoje skiltyje visi aplankai turi tą patį formatą, su tais pačiais užpildytais laukais. Kiekvienas aplankas turi unikalų numerį, o kai sąskaita priklauso klientui, sąskaitos aplanke nurodomas to kliento numeris, o ne kopijuojamas visas jo failas.
Tai reliacinė duomenų bazė. Skiltys yra lentelės, aplankai – eilutės, laukai – stulpeliai, unikalūs numeriai – pagrindiniai raktai, o nuorodos į kitą aplanką – užsienio raktai. Geras biuro vadovas taip pat taiko taisykles – be susitikimo be datos, du klientai negali turėti to paties numerio – lygiai taip kaip ir duomenų bazė.
Darbo pavyzdys: kirpyklos rezervacijų programa
Tarkime, paprašote DI sukurti kirpyklos rezervacijų svetainę. Protinga duomenų bazė turėtų keturias lenteles.
paslaugos
| id | pavadinimas | trukmė_min | kaina |
|---|---|---|---|
| 1 | Kirpimas | 45 | 40,00 |
| 2 | Dažymas | 90 | 95,00 |
darbuotojai
| id | vardas | el_paštas |
|---|---|---|
| 1 | Sara | sara@example.com |
| 2 | Omaras | omar@example.com |
klientai
| id | vardas | el_paštas | telefonas |
|---|---|---|---|
| 101 | Lena Park | lena@example.com | 555-0100 |
rezervacijos
| id | kliento_id | paslaugos_id | darbuotojo_id | prasideda | būsena |
|---|---|---|---|---|---|
| 5001 | 101 | 1 | 2 | 2026-10-03 14:00 | patvirtinta |
Pažiūrėkite į lentelę rezervacijos. Ji nekopijuoja Lenos vardo ir telefono numerio į kiekvieną rezervaciją; ji saugo kliento_id = 101. Jei Lena pakeičia telefono numerį, jis pasikeičia vienoje vietoje, ir kiekviena rezervacija rodo naują numerį. Tai pagrindinė reliacinės duomenų bazės idėja: kiekvieną faktą saugokite vieną kartą ir į jį nurodykite nuorodą.
Ta pati struktūra atsako į naudingus klausimus:
- „Kurie laikai laisvi Omarui penktadienį?“ – pažiūrėkite Omaro rezervacijas tą dieną.
- „Kiek uždirbta už dažymus šį mėnesį?“ – sujunkite rezervacijas su paslaugomis ir sudėkite kainas.
- „Kurie klientai nesiregistravo per 90 dienų?“ – palyginkite klientus su jų paskutine rezervacija.
Dažnai naudojamos sąvokos
| Sąvoka | Ką reiškia |
|---|---|
| Lentelė | Vienos rūšies įrašų rinkinys, pavyzdžiui klientai ar rezervacijos. |
| Eilutė (įrašas) | Vienas lentelės elementas – vienas klientas, viena rezervacija. |
| Stulpelis (laukas) | Viena informacijos dalis, kurią turi kiekviena eilutė, pavyzdžiui el. paštas ar kaina. |
| Pagrindinis raktas | Unikalus kiekvienos eilutės ID, dažniausiai skaičius ar atsitiktinė eilutė. |
| Užsienio raktas | Stulpelis, kuris nurodo į eilutę kitoje lentelėje, pavyzdžiui kliento_id rezervacijose. |
| Schema | Bendras projektas: kokios lentelės egzistuoja, jų stulpeliai ir kaip jos susietos. |
| Užklausa (query) | Prašymas skaityti ar keisti duomenis, pavyzdžiui „visos rezervacijos rytojui“. |
| SQL | Structured Query Language – standartinė reliacinių duomenų bazių užklausų kalba. |
| Migracija | Išsaugotas, pakartojamas schemos pakeitimas, pavyzdžiui stulpelio pridėjimas. |
| Indeksas | Paieškos struktūra, kuri pagreitina paiešką stulpelyje, kaip knygos rodyklė. |
| CRUD | Create, Read, Update, Delete – keturi pagrindiniai veiksmai su duomenimis. |
| Atsarginė kopija | Duomenų kopija, kurią galima atkurti, jei kas nors nutinka. |
Duomenų bazių tipai
| Tipas | Kaip saugo duomenis | Pavyzdžiai | Tinka |
|---|---|---|---|
| Reliacinė (SQL) | Lentelės su fiksuotais stulpeliais ir ryšiais tarp jų | Postgres, MySQL, SQLite | Daugumai verslo programų: rezervacijoms, parduotuvėms, CRM, SaaS |
| Dokumentų (NoSQL) | Lankstūs JSON tipo dokumentai | MongoDB, Firestore | Duomenims, kurių struktūra labai skiriasi tarp įrašų |
| Raktas-reikšmė | Reikšmė, saugoma pagal raktą | Redis | Talpyklai, trumpalaikiams duomenims, pavyzdžiui sesijoms |
Beveik viskam, ką verslininkas ar mažas verslas kuria pirmiausia, reliacinė duomenų bazė yra saugus pasirinkimas.
Kur duomenų bazė yra jūsų programoje
Lankytojai niekada tiesiogiai nebendrauja su duomenų baze. Puslapis jų naršyklėje (frontend) prašo duomenų iš jūsų serverio (backend), dažniausiai per API. Serveris patikrina, kas prašo ir ar tam asmeniui leidžiama, tada užklausia duomenų bazę ir grąžina tik tai, ką tas asmuo turi matyti.
Tas tarpinis žingsnis svarbus. Jei naršyklė galėtų tiesiogiai užklausti duomenų bazę su pilnomis teisėmis, bet kas galėtų atidaryti kūrėjo įrankius ir perskaityti viską.
Dažniausios klaidos ir klaidingi įsitikinimai
- Duomenų laikymas tik naršyklėje. Naršyklės saugykla (pavyzdžiui localStorage) gyvena viename įrenginyje ir vienoje naršyklėje. Tinka įsiminti filtrui, bet ne užsakymams.
- Viso įrašymo į vieną lentelę. Viena lentelė „rezervacijos“, kurioje kiekvienoje eilutėje nukopijuotas kliento vardas, telefonas ir paslaugos kaina, greitai nesutaps.
- Slaptažodžių saugojimas kaip grynas tekstas. Slaptažodžiai turi būti maišomi (hashed), niekada nelaikomi skaitomai. Žr. kas yra autentifikacija.
- Jokių duomenų taisyklių. Be privalomų laukų ir unikalumo taisyklių gausite rezervacijas be datos ir dublikuotus klientus.
- Pamiršta, kas nutinka ištrynus. Nuspręskite, ar ištrynus klientą ištrinamos ir jo rezervacijos, ar jos išsaugomos, ar veiksmas užblokuojamas.
- Gamybiniai duomenys eksperimentams. Pirma išbandykite rizikingus pakeitimus saugioje vietoje ir saugokite atsargines kopijas.
- Skaičiuoklė laikoma duomenų baze amžinai. Skaičiuoklės puikiai tinka pradžiai, bet sunkiai veikia su daugybe vienu metu dirbančių naudotojų ir teisėmis. Žr. kaip paversti skaičiuoklę programa.
Ko prašyti savo DI kūrimo įrankio
- „Išsaugok tai duomenų bazėje, o ne naršyklėje. Pasakyk, kokias lenteles sukursi.“
- „Parodyk schemą paprasta lentele: kiekvieną lentelę, jos stulpelius ir kaip jos susietos.“
- „Klientas gali turėti daug rezervacijų; kiekviena rezervacija turi tiksliai vieną paslaugą ir vieną darbuotoją.“
- „Padaryk el. paštą klientams privalomą ir unikalų.“
- „Sustabdyk dviejų rezervacijų persidengimą tam pačiam darbuotojui.“
- „Tik prisijungęs savininkas gali skaityti visas rezervacijas; klientai mato tik savo. Įgyvendink tai serveryje.“
- „Kai ištrinu paslaugą, neištrink praeities rezervacijų – vietoj to pažymėk paslaugą kaip neaktyvią.“
Duomenų bazės Mythex platformoje
Kai programai reikia išsaugoti duomenis, Mythex prie projekto prideda atskirą Postgres duomenų bazę – galite paprašyti pokalbyje („išsaugok laukiančiųjų sąrašo registracijas duomenų bazėje“) arba naudoti komandą /database. Ryšio duomenys automatiškai perduodami programai, o lenteles sukuria agentas. Duomenų bazė užmiega po penkių neaktyvumo minučių ir pabunda kitos užklausos metu; publikuotos programos naudojimas apmokestinamas už laiką, kurį ji buvo budi, iš to paties kredito balanso kaip ir kūrimas. Ji pasiekiama su Free ir Pro planais. Duomenų bazės dokumentacija aprašo smulkmenas, o programų šablonai apima duomenimis grįstus pradinius taškus.
Klausimai
Kas yra duomenų bazė paprastais žodžiais?
Duomenų bazė – tai sutvarkyta informacijos saugykla, į kurią programa įrašo ir iš kurios skaito, pavyzdžiui naudotojus, užsakymus ar rezervacijas. Skirtingai nei naršyklės skirtuke laikomi duomenys, duomenų bazėje esantys įrašai išlieka po perkrovimo, perkrovimo serveryje ar tada, kai programą atidaro kitas įrenginys.
Ar skaičiuoklė yra duomenų bazė?
Skaičiuoklėje galima laikyti tokio pat tipo duomenis, bet ji nėra skirta programoms. Tikra duomenų bazė taiko taisykles, kas gali būti kiekviename stulpelyje, patikimai susieja lenteles, aptarnauja daug žmonių, rašančių vienu metu, ir kontroliuoja, kas ką gali skaityti.
Kuo skiriasi SQL ir NoSQL duomenų bazės?
SQL (reliacinės) duomenų bazės, pavyzdžiui Postgres ir MySQL, duomenis saugo lentelėse su apibrėžtais stulpeliais ir ryšiais tarp jų. NoSQL duomenų bazės, pavyzdžiui MongoDB, saugo lankstesnius dokumentus. Daugumai verslo programų – rezervacijoms, CRM, parduotuvėms – reliacinis modelis tinka gerai.
Ar mano programai reikia duomenų bazės?
Jei ji turi prisiminti ką nors, ką žmonės įveda – registracijas, užsakymus, žinutes, nustatymus – ir rodyti tai vėliau ar kitam žmogui, taip. Grynai informacinei svetainei be formų, kurios išsaugo duomenis, paprastai nereikia.