Juhendid

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

FunktsioonMida see lihtsates sõnades tähendab
Tabelid ja seosedAndmed elavad tabelites, mis osutavad üksteisele, nii et midagi ei kopeerita viies kohas
SQLStandardne 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
PiirangudReeglid, mida andmebaas ise jõustab: kohustuslikud väljad, unikaalsed e-posti aadressid, kehtivad seosed tabelite vahel
IndeksidOtsinguteed, mis hoiavad otsingud kiirena, kui tabelid kasvavad
JSONBPaindlike, dokumendilaadsete andmete hoidmine veerus, kui fikseeritud struktuur ei sobi
TäistekstiotsingSõnade otsimine tekstiväljadest ilma eraldi otsinguteenuseta lihtsate juhtumite jaoks
LaiendusedLisad nagu PostGIS kaartide ja asukohtade jaoks või pgvector AI vektorite hoidmiseks
Rea tasemel turvalisusReeglid 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:

TabelVeerudMärkused
clientsid, name, phone, emailE-post peab olema unikaalne
eventsid, client_id, date, venue, statusclient_id peab vastama päris kliendile
menu_itemsid, name, unit_priceÜks rida igale roale
event_itemsevent_id, menu_item_id, quantitySeob 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.

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 简体中文 繁體中文(香港) 繁體中文(台灣)