Mis on Postgres? Paljude rakenduste taga olev andmebaas selgitatuna
Postgres (ametlikult PostgreSQL) on tasuta, avatud lähtekoodiga relatsiooniline andmebaas: programm, mis hoiab rakenduse andmeid ridade ja veergudega tabelites, seob need tabelid omavahel ning vastab nende kohta küsimustele keeles nimega SQL. See on tuntud usaldusväärsuse, range suhtumise poolest andmete õigsuse hoidmisel ja paindlikkuse poolest — sobib nii ootenimekirjast kui ka suurettevõtte kirjetest. Paljud veebirakendused ja paljud teenused, mis neid hostivad, on ehitatud selle peale.
Miks see AI-ga ehitamisel oluline on
Kui AI rakenduste ehitaja lisab sinu projekti „andmebaasi“, on hea võimalus, et see on Postgres. Selle kasutamiseks ei pea SQL-i kirjutama, aga veidi arusaamist aitab palju:
- Saad andmeid kirjeldada kujul, mida andmebaas vajab. „Kliendil on palju tellimusi; igal tellimusel on palju artikleid“ tõlgitakse otse tabeliteks.
- Saad paluda õigeid kaitsemehhanisme. Postgres võib ise keelduda halbadest andmetest — dubleeritud e-posti aadressist, tellimusest kliendile, keda pole olemas — kui AI need reeglid seadistab.
- Saad lugeda, mida AI tegi. Tabelite nimed, veerud ja seosed on lihtne üle kontrollida tabelivaatajas, isegi kui sa koodi kunagi ei puutu.
Igapäevane analoogia: väga range dokumendikontor
Kujuta ette dokumendikontorit, kus on kapp iga asja jaoks — üks klientidele, üks tellimustele, üks toodetele. Iga kaardi igas sahtlis on samad trükitud lahtrid täitmiseks. Igal kaardil on unikaalne number ning tellimuse kaart ei korda kliendi andmeid; ta ütleb lihtsalt „klient nr 214“ ja osutab kliendisahtlile.
Ametnik on range. Ta ei registreeri tellimust, mis viitab kliendile, keda ei ole olemas. Ta ei võta vastu kaarti, millel nõutav kuupäeva lahter on tühi. Ja kui palud tal kanda raha ühelt konto kaardilt teisele, teeb ta kas mõlemad pooled või ei tee kumbagi — kunagi ainult ühte.
See ametnik on Postgres. Sahtlid on tabelid, trükitud lahtrid on veerud, iga kaart on rida ja „klient nr 214“ link on võõrvõti.
Milles Postgres on hea
| Funktsioon | Mida see lihtsates sõnades tähendab |
|---|---|
| Tabelid ja seosed | Andmed elavad tabelites, mis osutavad üksteisele, nii et midagi ei kopeerita viies kohas |
| SQL | Standardne keel küsimuste esitamiseks: „kõik eelmise kuu tasustamata tellimused, uuemad ees“ |
| Tehingud (ACID) | Muudatuste rühm toimub kas täielikult või mitte üldse, isegi kui server poole pealt kokku jookseb |
| Piirangud | Reeglid, mida andmebaas ise jõustab: kohustuslikud väljad, unikaalsed e-posti aadressid, kehtivad seosed tabelite vahel |
| Indeksid | Otsinguteed, mis hoiavad otsingud kiirena, kui tabelid kasvavad |
| JSONB | Paindlike, dokumendilaadsete andmete hoidmine veerus, kui fikseeritud struktuur ei sobi |
| Täistekstiotsing | Sõnade otsimine tekstiväljadest ilma eraldi otsinguteenuseta lihtsate juhtumite jaoks |
| Laiendused | Lisad nagu PostGIS kaartide ja asukohtade jaoks või pgvector AI vektorite hoidmiseks |
| Rea tasemel turvalisus | Reeglid andmebaasi sees selle kohta, milliseid ridu konkreetne kasutaja näha tohib |
Postgres sai alguse teadusprojektina Kalifornia ülikoolis Berkeleys 1980. aastatel ning seda on alates 1990. aastatest avatult arendanud ülemaailmne kogukond. Just see pikk ajalugu teeb sellest sageli vaikevaliku: see on hästi dokumenteeritud, laialt toetatud ning iga suurem pilvepakkuja pakub hallatavat versiooni.
Töötav näide: tabeli muutmine tabeliteks
Oletame, et juhid väikest catering-ettevõtet ja jälgid kõike ühes tabelis: iga rida on sündmus, kus on kliendi nimi, telefon ja e-post, kuupäev, menüüelemendid ja hind.
Probleemid ilmnevad kiiresti. Sama klient esineb kuues reas kahe erineva telefoninumbriga. Menüüelemendid on ühte lahtrisse kirjutatud kujul „canapés x40, salad x2“, nii et sa ei saa kokku lüüa, mitu canapés’t sel kuul valmistasid.
Postgres’is muutub sama info neljaks tabeliks:
| Tabel | Veerud | Märkused |
|---|---|---|
| clients | id, name, phone, email | E-post peab olema unikaalne |
| events | id, client_id, date, venue, status | client_id peab vastama päris kliendile |
| menu_items | id, name, unit_price | Üks rida igale roale |
| event_items | event_id, menu_item_id, quantity | Seob sündmused roogadega koos koguses |
Nüüd elab kliendi telefoninumber ühes kohas. „Mitu canapés’t me märtsis valmistasime?“ on üks SQL-päring. Ja kui salvestad uue sündmuse koos selle elementidega, tagab tehing, et sul ei jää kunagi sündmust, mille pooled elemendid on salvestatud.
See on samm, mida inimesed jätavad vahele, kui paluvad AI-l „tee rakendus minu tabelist“. Juhend tabeli rakenduseks muutmise kohta läheb sellest kaugemale.
Põhimõisted
- Tabel, rida, veerg: asja liik, selle üks esinemine ja üks teave selle kohta.
- Põhivõti (primary key): iga rea unikaalne ID, tavaliselt
id. - Võõrvõti (foreign key): veerg, mis osutab teise tabeli reale, nagu
client_id. - Skeem (schema): kõigi sinu tabelite ja veergude disain.
- Migratsioon: salvestatud ja korratav muudatus skeemis, näiteks „lisa events-tabelisse veerg
venue“. - Päring (query): SQL-is kirjutatud küsimus või käsk.
- Ühendusstring: aadress ja salasõna, mille abil su tagaosa andmebaasini jõuab. See on saladus — vt keskkonnamuutujad ja saladused.
- Hallatud Postgres: teenus, mis käitab, varundab ja uuendab Postgresit sinu eest.
Igapäevaste toimingute kohta, mida iga rakendus nende tabelitega teeb — loomine, lugemine, muutmine, kustutamine — vt mida tähendab CRUD.
Levinud vead ja väärarusaamad
- Üks hiiglaslik tabel. Tabeli kopeerimine veerust veergu viib samade dubleerimisprobleemideni. Tõsta korduvad asjad eraldi tabelitesse.
- Loendite hoidmine ühes tekstiväljas. „canapés x40, salad x2“ ühes veerus ei saa korralikult lugeda ega otsida. Kasuta seostabelit.
- Piirangute puudumine. Ilma reeglita „e-post peab olema unikaalne“ või „iga sündmus vajab klienti“ satub halbu andmeid vaikselt sisse ja need ilmnevad kuude pärast.
- Andmebaasi käsitsi muutmine tootmises. Pärige skeemi muudatusi migratsioonidena, nii et muutus oleks salvestatud ja korratav.
- Brauseril lubamine andmebaasiga otse rääkida. Esilehekülg peaks käima läbi sinu tagaosa, mis kontrollib õigusi. Andmebaasi salasõna ei kuulu kunagi lehekoodi.
- „Postgres on ainult suurfirmadele.“ See töötab sama hästi 50-realise ootenimekirja jaoks ning kasvades ei pea sellelt lahkuma.
- Eeldamine, et andmebaas on varukoopia. See hoiab andmeid, aga ei kaitse automaatselt nende kustutamise eest. Kontrolli, milliseid varukoopiaid su host pakub.
Mida AI ehitajalt paluda
- „Salvesta [asjad] andmebaasi. Tabelid: … nende väljadega: … Seo iga [tellimus] [kliendiga].“
- „Tee kliendi e-post unikaalseks. Need väljad on kohustuslikud. Ära luba tellimust ilma kliendita.“
- „Kasuta igas skeemi muutuses migratsioone.“
- „Lisa indeksid kõige sagedamini tehtavatele otsingutele: tellimused kliendi ja kuupäeva järgi.“
- „Kogu andmebaasile juurdepääs käib läbi serveri. Hoia ühendusstring keskkonnamuutujates.“
Kui sa pole andmebaasi mõistega üldse kokku puutunud, alusta mis on andmebaas lugemisest ja tule siia tagasi. Täisvirnaga rakendus näitab, kuidas andmebaas asub esilehe ja tagaosa kõrval.
Postgres Mythexis
Mythex annab igale projektile, mis seda vajab, oma pühendatud Postgres-andmebaasi. Seda ei pea seadistama: küsi vestluses („salvesta ootenimekirja e-kirjad andmebaasi“) või kasuta käsku /database, ja Mythex ühendab selle, lisab ühendusandmed su rakendusse ning võib tabelid sinu eest luua. Avaldatud rakenduse andmebaas magab pärast viit tegevusetut minutit ja ärkab järgmise päringu peale ning sind arvestatakse selle aja eest, mil see tegelikult ärkvel oli, ehitamisega samast krediidisaldost. Üksikasjad on andmebaasi dokumentatsioonis ning armatuurlaua mallid on hea koht näha andmepõhiseid rakendusi.
Küsimused
Kas Postgres on sama mis PostgreSQL?
Jah. PostgreSQL on ametlik nimi ja Postgres on tavaline lühinimi; mõlemad viitavad samale avatud lähtekoodiga relatsioonilisele andmebaasile.
Kas Postgres on tasuta?
Jah. PostgreSQL on avatud lähtekoodiga vabalt kasutatava PostgreSQL litsentsi all, nii et seda saab kasutada tasuta, sealhulgas kommertstoodetes. Maksad ainult serverite või selle käitava hallatava teenuse eest.
Mis vahe on Postgresil ja MySQL-il?
Mõlemad on tasuta relatsioonilised SQL-andmebaasid ja mõlemad sobivad enamiku rakenduste jaoks. Postgres on tuntud range andmete terviklikkuse, rikaste andmetüüpide nagu JSONB ja massiivide ning suure laienduste ökosüsteemi poolest; MySQL on tuntud lihtsuse ja pika ajaloo poolest veebihostingus.
Kas Postgres sobib väikese rakenduse jaoks?
Jah. See toimib hästi nii ühe tabeliga ootenimekirja kui ka suurte tootmissüsteemide jaoks, nii et rakenduse kasvades ei pea andmebaasi vahetama. Hallatavad teenused muudavad käitamise lihtsaks ilma andmebaasi administraatorita.