Útmutatók

Mi az a Postgres? Az adatbázis, amely sok alkalmazás mögött áll, magyarázva

A Postgres (hivatalosan PostgreSQL) ingyenes, nyílt forráskódú relációs adatbázis: olyan program, amely az alkalmazás adatait sorokból és oszlopokból álló táblákban tárolja, összeköti ezeket a táblákat, és egy SQL nevű nyelven válaszol a rájuk vonatkozó kérdésekre. Megbízhatóságáról, az adatok helyességének szigorú őrzéséről és rugalmasságáról ismert, így egy regisztrációs listától egészen egy nagy cég nyilvántartásáig bármit képes kezelni. Sok webalkalmazás — és sok szolgáltatás, amely ezeket üzemelteti — ezen alapul.

Miért fontos AI-val építve

Ha egy AI-alkalmazásépítő „egy adatbázist” ad a projektedhez, jó eséllyel Postgres lesz. Nem kell SQL-t írnod a használatához, de egy kis ismeret sokat segít:

  • Az adatot abban az alakban írhatod le, amelyre az adatbázisnak szüksége van. A „az ügyfeleknek sok rendelésük van; minden rendelésnek sok tétele van” mondat közvetlenül táblákká alakul.
  • Kérhetsz megfelelő védelmet. A Postgres maga is elutasíthat rossz adatokat — például duplikált e-mail-címet vagy olyan ügyfélnek szóló rendelést, aki nem létezik —, ha az AI beállítja a szabályokat.
  • Olvashatod, mit csinált az AI. A táblanevek, oszlopok és kapcsolatok könnyen ellenőrizhetők egy táblanézegetőben, még akkor is, ha soha nem nyúlsz a kódhoz.

Hétköznapi hasonlat: egy nagyon szigorú irattár

Képzelj el egy irodát, amelynek minden fajta dologhoz szekrénye van — az egyik az ügyfeleknek, egy a rendeléseknek, egy a termékeknek. Minden kártyán ugyanazok a nyomtatott mezők vannak kitöltésre. Minden kártyának egyedi száma van, és egy rendelés-kártya nem ismétli meg az ügyfél adatait; csak annyit mond: „ügyfél #214”, ami az ügyfélszekrényre mutat.

Az ügyintéző szigorú. Nem iktat olyan rendelést, amely egy nem létező ügyfélre mutat. Nem fogad el olyan kártyát, amelynek kötelező mezője üres. És ha azt kéred tőle, hogy egy számlakártyáról pénzt mozgasson egy másikra, vagy mindkét felét elvégzi, vagy egyiket sem — soha nem csak az egyiket.

Az az ügyintéző a Postgres. A szekrények a táblák, a nyomtatott mezők az oszlopok, minden kártya egy sor, a „ügyfél #214” hivatkozás pedig egy idegen kulcs (foreign key).

Miben jó a Postgres

FunkcióMit jelent egyszerű szavakkal
Táblák és kapcsolatokAz adatok táblákban élnek, amelyek egymásra mutatnak, így semmi nincs öt helyen lemásolva
SQLSzabványos nyelv kérdések feltevésére: „az összes kifizetetlen rendelés az előző hónapból, a legújabb elöl”
Tranzakciók (ACID)A változtatások csoportja vagy mind megtörténik, vagy egy sem, még akkor is, ha a szerver félúton összeomlik
Megszorítások (constraints)Szabályok, amelyeket az adatbázis maga kényszerít ki: kötelező mezők, egyedi e-mail-címek, érvényes hivatkozások a táblák között
IndexekKeresési gyorsutak, hogy a keresések gyorsak maradjanak, ahogy a táblák nőnek
JSONBRugalmas, dokumentumszerű adat tárolása egy oszlopban, ha a rögzített szerkezet nem illeszkedik
Teljes szövegű keresésSzavak keresése szöveges mezőkben külön keresőszolgáltatás nélkül, egyszerű esetekben
BővítményekKiegészítők, például a PostGIS térképekhez és helyekhez, vagy a pgvector AI-beágyazások tárolásához
Sorszintű biztonság (row-level security)Szabályok az adatbázison belül arról, hogy egy adott felhasználó mely sorokat láthatja

A Postgres az 1980-as években a kaliforniai Berkeley Egyetemen kutatási projektként indult, és az 1990-es évek óta nyílt módon fejleszti egy globális közösség. Ez a hosszú múlt magyarázza, miért ez a gyakori alapértelmezett választás: jól dokumentált, széles körben támogatott, és minden nagy felhőszolgáltató kínál felügyelt változatot.

Példa: táblázatból táblák

Tegyük fel, hogy egy kis catering-vállalkozást vezetsz, és mindent egyetlen táblázatban követsz: minden sor egy rendezvény, a kliens nevével, telefonszámával és e-mail-címével, a dátummal, a menütételekkel és az árral.

Gyorsan jelentkeznek a problémák. Ugyanaz a kliens hat sorban szerepel, két különböző telefonszámmal. A menütételek egyetlen cellába vannak beírva, „canapés x40, salad x2” formában, így nem tudod összeadni, hány canapét készítettetek a hónapban.

A Postgresben ugyanez az információ négy táblává válik:

TáblaOszlopokMegjegyzések
clientsid, name, phone, emailAz e-mailnek egyedinek kell lennie
eventsid, client_id, date, venue, statusA client_id-nek valódi kliensre kell mutatnia
menu_itemsid, name, unit_priceEgy sor egy ételnek
event_itemsevent_id, menu_item_id, quantityÖsszeköti a rendezvényeket az ételekkel, mennyiséggel

Mostantól egy kliens telefonszáma egy helyen él. „Hány canapét készítettünk márciusban?” egyetlen SQL-lekérdezés. Amikor pedig egy új rendezvényt a tételeivel együtt rögzítesz, egy tranzakció biztosítja, hogy soha ne legyen olyan rendezvényed, amelynek csak a fele tétele mentődött el.

Ezt a lépést hagyják ki gyakran, amikor azt kérik az AI-tól, hogy „csinálj alkalmazást a táblázatomból”. A táblázatból alkalmazás útmutató ezt részletesebben tárgyalja.

Kulcsfogalmak

  • Tábla, sor, oszlop: egy fajta dolog, annak egy példánya, és egy információ róla.
  • Elsődleges kulcs (primary key): minden sor egyedi azonosítója, általában id.
  • Idegen kulcs (foreign key): egy másik táblában lévő sorra mutató oszlop, például client_id.
  • Séma (schema): az összes táblád és oszlopod felépítése.
  • Migráció: a sémán végrehajtott, mentett és megismételhető változtatás, például „adj egy venue oszlopot az events táblához”.
  • Lekérdezés (query): SQL-ben írt kérdés vagy utasítás.
  • Kapcsolati sztring (connection string): a cím és a jelszó, amelyen a háttérrendszered eléri az adatbázist. Ez titok — lásd: környezeti változók és titkok.
  • Felügyelt Postgres: olyan szolgáltatás, amely helyetted futtatja, menti és frissíti a Postgres-t.

Az alkalmazások minden ilyen táblán végzett alapművelethez — létrehozás, olvasás, módosítás, törlés — lásd: mit jelent a CRUD.

Gyakori hibák és tévhitek

  • Egyetlen óriás tábla. Ha a táblázat oszlopait egy az egyben átmásolod, ugyanazok az ismétlődési problémák lesznek. Az ismétlődő dolgokat külön táblákba kell bontani.
  • Listák tárolása egyetlen szöveges mezőben. A „canapés x40, salad x2” egyetlen oszlopban nem számolható és nem kereshető megfelelően. Használj összekötő táblát.
  • Nincsenek megszorítások. Az „az e-mail legyen egyedi” vagy „minden rendezvénynek legyen kliense” szabályok nélkül a rossz adat csendben bekerül, és hónapokkal később derül ki.
  • Az adatbázis kézi módosítása élesben. A séma-változtatásokat migrációként kérd, hogy a változtatás rögzített és megismételhető legyen.
  • Hagyni, hogy a böngésző közvetlenül beszéljen az adatbázissal. A frontend a háttérrendszereden keresztül érjen el mindent, amely ellenőrzi a jogosultságokat. Az adatbázis jelszava soha nem tartozik oldalkódba.
  • „A Postgres csak nagy cégeknek való.” Ugyanúgy megfelel egy 50 soros várólistához, és a növekedés során sem kell majd elhagynod.
  • Azt feltételezni, hogy az adatbázis biztonsági mentés. Az adatokat tárolja; nem véd meg automatikusan attól, hogy törölsd őket. Nézd meg, milyen mentéseket biztosít a tárhelyszolgáltatód.

Mit kérj az AI-építődtől

  • „Mentsd [dolgokat] adatbázisba. Táblák: … ezekkel a mezőkkel: … Kapcsold minden [rendelést] egy [ügyfélhez].”
  • „Tedd egyedivé az ügyfelek e-mail-címét. Ezek a mezők legyenek kötelezőek. Ne engedj rendelést ügyfél nélkül.”
  • „Minden sémaváltoztatáshoz használj migrációt.”
  • „Adj indexeket a leggyakoribb keresésekhez: a rendelések ügyfél és dátum szerint.”
  • „Minden adatbázis-hozzáférés a szerveren keresztül történjen. A kapcsolati sztring környezeti változókban maradjon.”

Ha egyáltalán új vagy az adatbázis fogalmában, kezdd a mi az adatbázis oldallal, majd térj vissza ide. Egy teljes körű (full-stack) alkalmazás megmutatja, hol helyezkedik el az adatbázis a frontend és a háttérrendszer mellett.

Postgres a Mythexben

A Mythex minden olyan projektnek, amelynek szüksége van rá, saját, dedikált Postgres-adatbázist ad. Nem kell beállítanod: kérd a csevegésben („mentsd a várólista e-mail-címeit adatbázisba”), vagy használd a /database parancsot, és a Mythex csatolja, beilleszti a kapcsolati adatokat az alkalmazásodba, és létre is tudja hozni helyetted a táblákat. A közzétett alkalmazás adatbázisa öt tétlen perc után elalszik, és a következő kérésre felébred; csak azt az időt számlázzuk, amíg valóban ébren volt, ugyanabból a kreditegyenlegből, mint az építés. A részleteket az adatbázis dokumentáció tartalmazza, a műszerfal sablonok pedig jó hely arra, hogy adatvezérelt alkalmazásokat lásd.

Kérdések

A Postgres ugyanaz, mint a PostgreSQL?

Igen. A PostgreSQL a hivatalos név, a Postgres pedig a szokásos rövid név; mindkettő ugyanarra a nyílt forráskódú relációs adatbázisra vonatkozik.

Ingyenes a Postgres?

Igen. A PostgreSQL nyílt forráskódú, a megengedő PostgreSQL-licenc alatt, így ingyen használhatod, akár kereskedelmi termékekben is. Csak a szervereket vagy a működtetését végző felügyelt szolgáltatást fizeted.

Mi a különbség a Postgres és a MySQL között?

Mindkettő ingyenes, relációs SQL-adatbázis, és a legtöbb alkalmazásnál mindkettő megfelelő. A Postgres az adatintegritás szigorúságáról, gazdag adattípusairól, például a JSONB-ről és a tömbökről, valamint nagy bővítményökoszisztémájáról ismert; a MySQL egyszerűségéről és a webtárhelyezésben töltött hosszú múltjáról.

Jó a Postgres egy kis alkalmazáshoz?

Igen. Jól működik egyetlen táblás várólistához is, és nagy éles rendszerekhez is, így az alkalmazás növekedésével nem kell adatbázist váltani. A felügyelt szolgáltatások megkönnyítik az üzemeltetést adatbázis-adminisztrátor nélkül.

Mythex · Pricing · Építs bármit AI-val · Weboldal- és alkalmazássablonok · A Mythex összehasonlítva · AI-alapú alkalmazásépítési szószedet · Ingyenes eszközök AI-alapú alkalmazásépítéshez · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Հայերեն 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 简体中文 繁體中文(香港) 繁體中文(台灣)