Oppaat

Mitä on Postgres? Monien sovellusten tietokanta selitettynä

Postgres (virallisesti PostgreSQL) on ilmainen, avoimen lähdekoodin relaatiotietokanta: ohjelma, joka tallentaa sovelluksen datan tauluihin, joissa on rivejä ja sarakkeita, yhdistää taulut toisiinsa ja vastaa kysymyksiin SQL-kielellä. Se tunnetaan luotettavuudestaan, tiukkuudestaan datan oikeellisuuden suhteen ja joustavuudestaan. Sama tietokanta riittää yhtä hyvin yksinkertaiseen ilmoittautumislistaan kuin suuren yrityksen tietueisiin. Monet verkkosovellukset, ja monet palvelut, jotka niitä hostaavat, perustuvat siihen.

Miksi tämä on tärkeää tekoälyllä rakennettaessa

Kun tekoälysovellusrakentaja lisää projektiisi "tietokannan", se on hyvin todennäköisesti Postgres. Et tarvitse SQL:ää käyttääksesi sitä, mutta pieni ymmärrys auttaa paljon:

  • Voit kuvata datan siinä muodossa, jota tietokanta tarvitsee. "Asiakkailla on monta tilausta; jokaisessa tilauksessa on monta tuotetta" kääntyy suoraan tauluiksi.
  • Voit pyytää oikeat suojaukset. Postgres voi hylätä huonon datan itse, kuten kaksoiskappaleen sähköpostiosoitteen tai tilauksen asiakkaalle, jota ei ole, jos tekoäly on asettanut säännöt.
  • Voit lukea, mitä tekoäly teki. Taulujen nimet, sarakkeet ja suhteet ovat helppo tarkistaa taulukkonäkymässä, vaikka et koskaan koskisi koodiin.

Arkinen vertaus: hyvin tiukka arkistotoimisto

Kuvittele arkistotoimisto, jossa on kaappi jokaiselle asialle: yksi asiakkaille, yksi tilauksille, yksi tuotteille. Jokaisessa laatikossa olevassa kortissa on samat painetut ruudut täytettäväksi. Jokaisella kortilla on yksilöllinen numero, eikä tilauskortti toista asiakkaan tietoja. Se vain sanoo "asiakas #214", ja osoittaa asiakaslaatikkoon.

Virkailija on tiukka. Hän ei arkistoi tilausta, joka osoittaa asiakkaaseen, jota ei ole. Hän ei hyväksy korttia, jonka pakollinen päivämäärä on tyhjä. Ja jos pyydät siirtämään rahaa yhdeltä tilikortilta toiselle, hän tekee molemmat puolikkaat tai ei kumpaakaan, ei koskaan vain toista.

Tuo virkailija on Postgres. Laatikot ovat tauluja, ruudut sarakkeita, jokainen kortti rivi, ja "asiakas #214" -linkki on vierasavain (foreign key).

Mihin Postgres on hyvä

OminaisuusMitä se tarkoittaa selkokielellä
Taulut ja suhteetData asuu tauluissa, jotka osoittavat toisiinsa, joten mitään ei kopioida viidessä paikassa
SQLStandardikieli kysymyksille: "kaikki maksamattomat tilaukset viime kuukaudelta, uusin ensin"
Transaktiot (ACID)Muutosryhmä tapahtuu kokonaan tai ei lainkaan, vaikka palvelin kaatuisi puolivälissä
Rajoitteet (constraints)Säännöt, jotka tietokanta pakottaa itse: pakolliset kentät, uniikit sähköpostit, kelvolliset linkit taulujen välillä
IndeksitHakuoikopolut, jotta haut pysyvät nopeina taulujen kasvaessa
JSONBJoustavan, dokumenttimaisen datan tallentaminen sarakkeeseen, kun kiinteä rakenne ei sovi
KokotekstihakuSanojen etsiminen tekstikentistä ilman erillistä hakupalvelua yksinkertaisissa tapauksissa
LaajennuksetLisäosat, kuten PostGIS karttoja ja sijainteja varten tai pgvector tekoälyn upotusten (embeddings) tallentamiseen
Rivitason suojaus (row-level security)Tietokannan sisäiset säännöt siitä, mitkä rivit tietty käyttäjä saa nähdä

Postgres alkoi tutkimusprojektina Kalifornian yliopistossa Berkeleyssä 1980-luvulla, ja avoimesti kehittää sitä globaali yhteisö 1990-luvulta lähtien. Tämä pitkä historia on syy siihen, että se on usein oletusvalinta: se on hyvin dokumentoitu, laajasti tuettu, ja jokainen suuri pilvipalveluntarjoaja tarjoaa hallitun version.

Esimerkki: taulukosta tauluiksi

Oletetaan, että pyörität pientä pitopalveluyritystä ja seuraat kaikkea yhdessä taulukossa: jokainen rivi on tilaisuus, jossa on asiakkaan nimi, puhelin ja sähköposti, päivämäärä, tarjoiltavat tuotteet ja hinta.

Ongelmat ilmaantuvat nopeasti. Sama asiakas esiintyy kuudella rivillä kahdella eri puhelinnumerolla. Tarjoilut on kirjoitettu yhteen soluun muodossa "canapés x40, salad x2", joten et voi laskea, kuinka monta canapéa teit tässä kuussa.

Postgresissa samasta tiedosta tulee neljä taulua:

TauluSarakkeetHuomioita
clientsid, name, phone, emailSähköpostin on oltava uniikki
eventsid, client_id, date, venue, statusclient_id:n on vastattava oikeaa asiakasta
menu_itemsid, name, unit_priceYksi rivi per ruoka
event_itemsevent_id, menu_item_id, quantityYhdistää tilaisuudet ruokiin ja määrään

Nyt asiakkaan puhelinnumero on yhdessä paikassa. "Kuinka monta canapéa teimme maaliskuussa?" on yksi SQL-kysely. Ja kun tallennat uuden tilaisuuden kohteineen, transaktio varmistaa, ettet koskaan jää tilanteeseen, jossa tilaisuus on tallentunut vain puolikkaana.

Tämän vaiheen ihmiset usein ohittavat, kun pyytävät tekoälyä "tekemään sovelluksen taulukostani". Opas taulukon muuttamisesta sovellukseksi menee pidemmälle.

Keskeiset termit

  • Taulu, rivi, sarake: tyyppi asiasta, yksi esiintymä siitä, yksi tieto siitä.
  • Pääavain (primary key): jokaisen rivin yksilöllinen tunniste, yleensä id.
  • Vierasavain (foreign key): sarake, joka osoittaa toisen taulun riviin, kuten client_id.
  • Skeema (schema): kaikkien taulujesi ja sarakkeidesi suunnitelma.
  • Migraatio: tallennettu, toistettavissa oleva muutos skeemaan, kuten "lisää venue-sarake tapahtumiin".
  • Kysely (query): SQL-kielellä kirjoitettu kysymys tai ohje.
  • Yhteysmerkkijono (connection string): osoite ja salasana, jolla taustapalvelusi tavoittaa tietokannan. Se on salaisuus. Katso ympäristömuuttujat ja salaisuudet.
  • Hallittu Postgres (managed Postgres): palvelu, joka ajaa, varmuuskopioi ja päivittää Postgresin puolestasi.

Tason kaikille operaatioille, joita jokainen sovellus tekee näihin tauluihin (luonti, luku, päivitys, poisto), katso mitä CRUD tarkoittaa.

Yleisiä virheitä ja väärinkäsityksiä

  • Yksi jättimäinen taulu. Taulukon kopioiminen sarake sarakkeelta johtaa samoihin kaksoiskappale-ongelmiin. Erota toistuvat asiat omiin tauluihinsa.
  • Listojen tallentaminen yhteen tekstikenttään. "canapés x40, salad x2" yhdessä sarakkeessa ei ole laskettavissa tai haettavissa kunnolla. Käytä yhdistävää taulua.
  • Ei rajoitteita. Ilman sääntöä "sähköpostin on oltava uniikki" tai "jokaisella tilaisuudella on oltava asiakas" huono data pääsee sisään hiljaa ja tulee esiin kuukausia myöhemmin.
  • Tietokannan muuttaminen käsin tuotannossa. Pyydä skeemamuutokset migraatioina, jotta muutos tallentuu ja sen voi toistaa.
  • Selaimen antaminen puhua suoraan tietokantaan. Frontendin tulisi kulkea taustapalvelun kautta, joka tarkistaa oikeudet. Tietokannan salasana ei koskaan kuulu sivun koodiin.
  • "Postgres on vain suurille yrityksille." Se toimii yhtä hyvin 50 rivin odotuslistalle, eikä sinun tarvitse siirtyä pois siitä kasvaessasi.
  • Oletus, että tietokanta on varmuuskopio. Se tallentaa dataa, mutta se ei suojaa automaattisesti siltä, että data poistetaan. Tarkista, mitkä varmuuskopiot hostisi tarjoaa.

Mitä pyytää tekoälysovellusrakentajalta

  • "Tallenna [asiat] tietokantaan. Taulut: … näillä kentillä: … Linkitä jokainen [tilaus] [asiakkaaseen]."
  • "Tee sähköposti uniikiksi asiakkaissa. Tee nämä kentät pakollisiksi. Älä salli tilausta ilman asiakasta."
  • "Käytä migraatioita jokaiseen skeemamuutokseen."
  • "Lisää indeksit yleisimmille hauille: tilaukset asiakkaan ja päivämäärän mukaan."
  • "Kaikki tietokantakäyttö kulkee palvelimen kautta. Pidä yhteysmerkkijono ympäristömuuttujissa."

Jos tietokanta on sinulle uusi käsite, aloita mitä tietokanta on -oppaasta ja palaa tänne. Full-stack-sovellus näyttää, missä tietokanta sijaitsee frontendin ja taustapalvelun vieressä.

Postgres Mythexissä

Mythex antaa jokaiselle projektille, joka sitä tarvitsee, oman omistetun Postgres-tietokannan. Et määritä sitä itse: pyydät chatissa ("tallenna odotuslistan sähköpostit tietokantaan") tai käytät /database-komentoa, ja Mythex liittää tietokannan, syöttää yhteystiedot sovellukseesi ja voi luoda taulut puolestasi. Julkaistun sovelluksen tietokanta nukkuu viiden käyttämättömän minuutin jälkeen ja herää seuraavalla pyynnöllä, ja sinulta veloitetaan vain aika, jona se oli oikeasti hereillä, samasta krediittisaldosta kuin rakentaminen. Yksityiskohdat löytyvät tietokantadokumentaatiosta, ja kojelautapohjat ovat hyvä paikka nähdä dataa hyödyntäviä sovelluksia.

Kysymykset

Onko Postgres sama asia kuin PostgreSQL?

Kyllä. PostgreSQL on virallinen nimi ja Postgres yleinen lyhennys. Molemmat tarkoittavat samaa avoimen lähdekoodin relaatiotietokantaa.

Onko Postgres ilmainen?

Kyllä. PostgreSQL on avointa lähdekoodia sallivan PostgreSQL-lisenssin alla, joten sitä voi käyttää ilmaiseksi, myös kaupallisissa tuotteissa. Maksat vain palvelimista tai hallitusta palvelusta, joka sitä ajaa.

Mikä ero on Postgresilla ja MySQL:llä?

Molemmat ovat ilmaisia relaatiotietokantoja SQL-kielellä, ja molemmat sopivat useimpiin sovelluksiin. Postgres tunnetaan tiukasta tietojen eheydestä, rikkaista tietotyypeistä, kuten JSONB ja taulukot, sekä laajasta laajennusekosysteemistä. MySQL tunnetaan yksinkertaisuudestaan ja pitkästä historiastaan verkkohostauksessa.

Sopiiko Postgres pieneen sovellukseen?

Kyllä. Se toimii hyvin yksittäiseen taulukkoon perustuvalle odotuslistalle ja myös suurille tuotantojärjestelmille, joten tietokantaa ei tarvitse vaihtaa sovelluksen kasvaessa. Hallitut palvelut tekevät sen ajamisesta helppoa ilman tietokantavastaavaa.

Mythex · Pricing · Rakenna mitä tahansa tekoälyllä · Verkkosivu- ja sovellusmallipohjat · Mythex vertailussa · Tekoälysovellusten rakentamisen sanasto · Ilmaiset työkalut tekoälysovellusten rakentamiseen · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی 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 简体中文 繁體中文(香港) 繁體中文(台灣)