Hvað er Postgres? Gagnagrunnurinn á bak við mörg öpp, útskýrt
Postgres (opinberlega PostgreSQL) er ókeypis, opinn tengslagagnagrunnur: forrit sem geymir gögn app í töflum af röðum og dálkum, tengir töflurnar saman og svarar spurningum um þær á tungumáli sem heitir SQL. Hann er þekktur fyrir að vera áreiðanlegur, strangur við að halda gögnunum réttum og nógu sveigjanlegur til að ráða við allt frá lista yfir skráningar upp í gögn stórs fyrirtækis. Mörg vefforrit, og margar þjónustur sem hýsa þau, byggja á honum.
Af hverju þetta skiptir máli þegar þú smíðar með gervigreind
Þegar smíðatól fyrir öpp með gervigreind bætir „gagnagrunni“ við verkefnið þitt eru góðar líkur á að það sé Postgres. Þú þarft ekki að skrifa SQL til að nota hann, en smá skilningur skilar miklu:
- Þú getur lýst gögnum í því formi sem gagnagrunnurinn þarf. „Viðskiptavinir eiga margar pantanir; hver pöntun hefur marga liði“ þýðir beint í töflur.
- Þú getur beðið um réttar varnir. Postgres getur hafnað slæmum gögnum af sjálfsdáðum, til dæmis tvíteknu netfangi eða pöntun fyrir viðskiptavin sem er ekki til, ef gervigreindin setur reglurnar upp.
- Þú getur lesið það sem gervigreindin gerði. Heiti taflna, dálkar og tengsl eru auðveld að yfirfara í töfluskoðara, jafnvel þótt þú snertir aldrei kóðann.
Hliðstæða úr daglegu lífi: mjög strangt skjalasafn
Ímyndaðu þér skjalasafn með skáp fyrir hverja tegund hluta: einn fyrir viðskiptavini, einn fyrir pantanir, einn fyrir vörur. Sérhver spjald í skúffu hefur sömu prentuðu reitina til að fylla út. Hvert spjald hefur einstakt númer, og pöntunarspjald endurtekur ekki upplýsingar viðskiptavinarins; það segir bara „viðskiptavinur #214“, sem vísar í viðskiptavinaskúffuna.
Starfsmaðurinn er strangur. Hann tekur ekki við pöntunarspjaldi sem vísar á viðskiptavin sem er ekki til. Hann tekur ekki við spjaldi þar sem dagsetningarreitur sem krafist er er auður. Og ef þú biður hann að færa fé af einu reikningsspjaldi á annað, gerir hann annaðhvort báða helmingana eða engan, aldrei bara annan.
Sá starfsmaður er Postgres. Skúffurnar eru töflur, reitirnir eru dálkar, hvert spjald er röð, og tengingin „viðskiptavinur #214“ er erlendur lykill (foreign key).
Það sem Postgres gerir vel
| Eiginleiki | Hvað hann þýðir í einföldu máli |
|---|---|
| Töflur og tengsl | Gögn búa í töflum sem benda hver á aðra, svo ekkert er afritað á fimm staði |
| SQL | Staðlað tungumál til að spyrja spurninga: „allar ógreiddar pantanir síðasta mánaðar, nýjustu fyrst“ |
| Færslur (ACID) | Hópur breytinga gerist allur eða ekkert, jafnvel þótt þjónninn hrynji á miðri leið |
| Þvinganir (constraints) | Reglur sem gagnagrunnurinn framfylgir sjálfur: skyldureitir, einstök netföng, gild tengsl milli taflna |
| Vísitölur (indexes) | Flýtileiðir fyrir leit svo leitirnar haldist hraðar þegar töflurnar stækka |
| JSONB | Geymir sveigjanleg, skjalaleg gögn í dálki þegar fastur strúktúr passar ekki |
| Leit í texta (full-text search) | Leitar orðum í textareitum án sérstakrar leitarþjónustu, í einföldum tilvikum |
| Viðbætur (extensions) | Viðbætur eins og PostGIS fyrir kort og staðsetningar, eða pgvector til að geyma gervigreindarvigra (embeddings) |
| Öryggi á línustigi (row-level security) | Reglur inni í gagnagrunninum um hvaða raðir tiltekinn notandi má sjá |
Postgres byrjaði sem rannsóknarverkefni við háskólann í Kaliforníu í Berkeley á níunda áratugnum og hefur verið þróaður opinskátt af alþjóðlegu samfélagi frá tíunda áratugnum. Sú langa saga er ástæðan fyrir því að hann er oft sjálfgefið val: hann er vel skjalfestur, víða studdur, og sérhver helsti skýjaveitandi býður upp á stýrða útgáfu af honum.
Dæmi: að breyta töflureikni í töflur
Segjum að þú rekir lítið veisluþjónustufyrirtæki og heldur utan um allt í einum töflureikni: hver röð er viðburður, með nafni viðskiptavinarins, síma, netfangi, dagsetningu, matseðilsliðum og verði.
Vandamál birtast fljótt. Sami viðskiptavinur er á sex röðum með tvö mismunandi símanúmer. Matseðilsliðum er skrifað í einn reit sem „canapés x40, salad x2“, svo þú getur ekki lagt saman hversu mörg canapés þú gerðir í mánuðinum.
Í Postgres verða sömu upplýsingar að fjórum töflum:
| Tafla | Dálkar | Athugasemdir |
|---|---|---|
| clients | id, name, phone, email | Netfang verður að vera einstakt |
| events | id, client_id, date, venue, status | client_id verður að passa við raunverulegan viðskiptavin |
| menu_items | id, name, unit_price | Ein röð fyrir hvern rétt |
| event_items | event_id, menu_item_id, quantity | Tengir viðburði við rétti, með magni |
Nú býr símanúmer viðskiptavinar á einum stað. „Hversu mörg canapés gerðum við í mars?“ er ein SQL-fyrirspurn. Og þegar þú skráir nýjan viðburð með liðum sínum tryggir færsla að þú endir aldrei með viðburð sem hefur aðeins helming liða sinna vistaðan.
Þetta er skrefið sem fólk sleppir þegar það biður AI um að „búa til app úr töflureikninum mínum“. Leiðsögnin um að breyta töflureikni í app fer lengra.
Lykilhugtök
- Tafla, röð, dálkur: tegund hlutar, eitt tilvik hans, ein upplýsing um hann.
- Frumlykill (primary key): einstakt auðkenni hverrar raðar, yfirleitt
id. - Erlendur lykill (foreign key): dálkur sem bendir á röð í annarri töflu, eins og
client_id. - Skema (schema): hönnun allra taflna þinna og dálka.
- Flutningur (migration): vistuð, endurtekanleg breyting á skemanu, eins og „bæta dálkinum
venuevið events“. - Fyrirspurn (query): spurning eða skipun skrifuð í SQL.
- Tengistrengur (connection string): vistfang og lykilorð sem bakendinn notar til að ná í gagnagrunninn. Það er leyndarmál; sjá umhverfisbreytur og leyndarmál.
- Stýrður Postgres (managed Postgres): þjónusta sem keyrir, tekur öryggisafrit af og uppfærir Postgres fyrir þig.
Fyrir þær daglegu aðgerðir sem sérhvert app framkvæmir á þessum töflum, búa, lesa, uppfæra og eyða, sjá hvað CRUD þýðir.
Algeng mistök og ranghugmyndir
- Ein risastór tafla. Að afrita töflureikninn dálk fyrir dálk leiðir til sömu vandamála með afrit. Skiptu hlutum sem endurtaka sig í sínar eigin töflur.
- Geyma lista í einum textareit. „canapés x40, salad x2“ í einum dálki er hvorki hægt að telja né leita í almennilega. Notaðu tengitöflu.
- Engar þvinganir. Án „netfang verður að vera einstakt“ eða „sérhver viðburður þarf viðskiptavin“ kemst slæm gögn inn hljóðlega og koma í ljós mánuðum síðar.
- Breyta gagnagrunninum með höndunum í framleiðslu. Biddu um breytingar á skemanu sem flutninga, svo breytingin sé skráð og hægt sé að endurtaka hana.
- Að leyfa vafranum að tala beint við gagnagrunninn. Framendinn ætti að fara í gegnum bakendann þinn, sem athugar heimildir. Lykilorð gagnagrunnsins á aldrei heima í síðukóða.
- „Postgres er aðeins fyrir stór fyrirtæki.“ Hann keyrir jafnvel vel fyrir 50 raða biðlista, og þú þarft ekki að flytjast burt frá honum þegar þú vex.
- Að halda að gagnagrunnur sé öryggisafrit. Hann geymir gögn; hann verndar þig ekki sjálfkrafa gegn því að þú eyðir þeim. Athugaðu hvaða öryggisafrit hýsingin þín býður upp á.
Hvað á að biðja AI-smiðinn um
- „Geymdu [hluti] í gagnagrunni. Töflur: … með þessum reitum: … Tengdu hverja [pöntun] við [viðskiptavin].“
- „Gerðu netfang einstakt á viðskiptavinum. Gerðu þessa reiti skylduútfyllta. Leyfðu ekki pöntun án viðskiptavinar.“
- „Notaðu flutninga fyrir sérhverja breytingu á skemanu.“
- „Bættu við vísitölum fyrir leitirnar sem við gerum oftast: pantanir eftir viðskiptavini og dagsetningu.“
- „Allur aðgangur að gagnagrunni fer í gegnum þjóninn. Geymdu tengistrenginn í umhverfisbreytum.“
Ef þú ert nýr í hugmyndinni um gagnagrunn yfirleitt skaltu byrja á hvað er gagnagrunnur og koma svo aftur hingað. Fullt staflaapp sýnir hvar gagnagrunnurinn liggur við hliðina á framenda og bakenda.
Postgres í Mythex
Mythex gefur hverju verkefni sem þarf einn eigin Postgres-gagnagrunn. Þú stillir hann ekki: biður um það í spjallinu („save waitlist emails to a database“) eða notar /database-skipunina, og Mythex tengir hann, setur tengiupplýsingarnar inn í appið þitt og getur búið til töflurnar fyrir þig. Gagnagrunnur birts apps sefur eftir fimm mínútur án umferðar og vaknar við næstu beiðni, og þú ert rukkuð/aður fyrir þann tíma sem hann var vakandi, af sömu inneignarstöðu og smíðin. Nánar í skjölunum um gagnagrunninn, og mælaborðssniðmát eru góður staður til að sjá öpp sem byggja á gögnum.
Spurningar
Er Postgres það sama og PostgreSQL?
Já. PostgreSQL er opinbert heiti og Postgres er algengt stutt heiti; hvort tveggja vísar í sama opna tengslagagnagrunninn.
Er Postgres ókeypis?
Já. PostgreSQL er opinn hugbúnaður undir hinu rúmlega PostgreSQL License, þannig að þú getur notað það ókeypis, líka í viðskiptalegum vörum. Þú borgar aðeins fyrir þjónana eða stýrðu þjónustuna sem keyrir það.
Hver er munurinn á Postgres og MySQL?
Bæði eru ókeypis, tengsla-SQL gagnagrunnar og bæði henta flestum öppum. Postgres er þekkt fyrir strangan gagnaheilleika, ríkar gagnagerðir eins og JSONB og fylki, og stórt viðbótavistkerfi; MySQL er þekkt fyrir einfaldleika og langa sögu í vefhýsingu.
Hentar Postgres litlu appi?
Já. Það virkar vel fyrir einfaldan biðlista í einni töflu og fyrir stór framleiðslukerfi, þannig að þú þarft ekki að skipta um gagnagrunn þegar appið vex. Stýrðar þjónustur gera það auðvelt að keyra það án gagnagrunnsstjóra.