PostgreSQL — a weboldalad és a webáruházad adatbázisa
Minden termék, rendelés, érdeklődő és oldal, amit a 4buildsite-on létrehozol, egy PostgreSQL adatbázisban él. Neked nem kell üzemeltetned — de érdemes tudni, miért erre esett a választásunk: tranzakciós integritás a fizetésekhez, közel harminc éve bizonyított megbízhatóság és nulla licencköltség az áradban.
Mi a PostgreSQL, és mit őriz a weboldaladból
A PostgreSQL nyílt forráskódú relációs adatbázisrendszer, amelyet 1996 óta folyamatosan fejlesztenek — gyökerei a Berkeley Egyetem POSTGRES projektjéig (1986) nyúlnak vissza. A 4buildsite-on a PostgreSQL az a hely, ahol a weboldalad adatai élnek: a termékek és a készlet, a rendelések és a fizetések, az űrlapokból érkező érdeklődők és az oldalak tartalma. Te a vizuális szerkesztőben dolgozol; a PostgreSQL pedig minden módosítást biztonságban megőriz.
Miért számít ez neked, ha nem vagy fejlesztő? Mert egy komoly és egy törékeny adatbázis közötti különbség pont a nehéz pillanatokban derül ki: egy akció alatti forgalmi csúcson, egy kétszer lefutó fizetésnél, egy szerverújraindításkor. A PostgreSQL úgy készült, hogy ezeket a helyzeteket adatvesztés és adatsérülés nélkül vészelje át — ezért használja nagy méretekben az Instagram és a Reddit is, és történetileg ez adta a Skype infrastruktúrájának alapját.
- Termékek, változatok és készlet — a webáruházad teljes katalógusa
- Rendelések, Stripe-fizetések és számlák — hiánytalan értékesítési előzmények
- Űrlapokból érkező érdeklődők — minden ajánlatkérés garantáltan elmentve
- Az oldalak és sablonok tartalma — mindaz, amit a vizuális szerkesztőben szerkesztesz
- A weboldalad domainjei, beállításai és publikált verziói
Rendelések és fizetések sérült adatok nélkül — ACID-integritás
Amikor egy vásárló leadja a rendelést, több dolog történik egyszerre: csökken a készlet, létrejön a rendelés, rögzül a Stripe-fizetés. A PostgreSQL mindezt egyetlen tranzakcióként hajtja végre: vagy minden megtörténik, vagy semmi. Ha a fizetés félúton elakad, a készlet automatikusan visszaáll a kiindulási értékre. Ezt a viselkedést hívják ACID-nek (Atomicity, Consistency, Isolation, Durability), és a PostgreSQL minden táblán garantálja, külön beállítás nélkül.
A tranzakciókon túl a PostgreSQL magában az adatbázisban érvényesíti az integritási szabályokat: egy rendeléstétel nem hivatkozhat nem létező termékre, a készlet nem mehet negatívba, egy fiók e-mail-címe nem duplikálódhat. Ezek a megszorítások (idegen kulcs, check, unique) még a bekerülés előtt megállítják a hibás adatot — nem azután, hogy már tönkretette az értékesítési kimutatásodat.
A piactereknél az integritás duplán számít: a jutalékok és a Stripe Connecten keresztül megosztott kifizetések a rendelés adataiból számolódnak. Egy duplán rögzült rendelés vagy egy inkonzisztens összeg azt jelentené, hogy rosszul oszlik el a pénz az eladók között. A PostgreSQL tranzakciói rendelésről rendelésre pontosan tartják ezeket a számításokat.
Gyors keresés a katalógusban és rugalmas tartalom
A PostgreSQL teljes szövegű keresőmotort is hoz magával: a vásárlók rákeresnek a „futócipő” szóra, és megtalálják a hozzá illő termékeket, szótövező szótárak segítségével, amelyek között a magyar is ott van. A pg_trgm kiterjesztés ehhez elgépelés-tűrést ad. Egy webáruház számára ez azt jelenti, hogy a katalógus külön Elasticsearch-szerű szolgáltatás nélkül is jól kereshető — vagyis kevesebb komponens tud elromlani, és alacsonyabb az infrastruktúra költsége.
A vizuális szerkesztőben összerakott oldaltartalomnak nincs kötött szerkezete — egy hero blokk, egy űrlap és egy galéria más-más mezőkből áll. Ezt a PostgreSQL a JSONB-vel oldja meg: natívan tárolja a JSON-t, GIN-indexszel indexelhető, és úgy kérdezhető le, mint bármelyik oszlop. Megkapod egy dokumentumadatbázis rugalmasságát, miközben a rendeléseknél és a fizetéseknél megmarad a relációs integritás — egyetlen rendszerben, nem kettőben.
- tsvector és szótövező szótárak (magyarral együtt) — releváns találatok a katalógusban
- pg_trgm — a vásárló akkor is megtalálja a terméket, ha elüt egy betűt
- JSONB GIN-indexszel — a rugalmas oldalblokkok indexelten is lekérdezhetők
Megbízhatóság: mentés, helyreállítás és nulla meglepetés
A PostgreSQL minden módosítást először egy naplóba ír (WAL — Write-Ahead Log), és csak utána magukba az adatokba. Ha a szerver váratlanul leáll, az adatbázis újraindításkor a naplóból épül vissza, sérült adatok nélkül. Ugyanezen a mechanizmuson alapul az időpontra visszaállítás (PITR) is — ez a motor alapképessége azoknál a telepítéseknél, amelyek archiválják a WAL-naplót. A 4buildsite-on az adatok az alkalmazástól elkülönített, tartós köteteken vannak, így egy újraindítás vagy egy platformfrissítés nem nyúl hozzájuk.
A PostgreSQL streaming replikációt is támogat — vagyis egy szinkronban tartott másolatot az adatbázisról, amely szükség esetén átveheti a forgalmat. A weboldalad szempontjából az adatbázis megbízhatósága a keresőmotorokra is hat: egy folyamatosan válaszoló oldalt folyamatosan be is jár és indexel a kereső, az ismétlődő 5xx hibák pedig rontják a Google-helyezéseket.
Skálázás és költségek — növekedj licencszámlák nélkül
Ahogy a webáruházad nő, a PostgreSQL vele nő: az indexek százezres tételszámú katalógusnál is gyorsan tartják a lekérdezéseket, a particionálás időszakonként bontja szét a rendeléstörténetet, az olvasási replikák pedig átveszik a kimutatások forgalmát. Az Instagram és a Reddit több százmillió felhasználóig skálázott PostgreSQL-en — egy webáruház jóval később ér el ennek a technológiának a határáig, mint gondolnád.
A PostgreSQL szabad licenc alatt áll (PostgreSQL License, BSD jellegű) — nincs licencköltség, és nincs mögötte kereskedelmi tulajdonos, aki egyik napról a másikra megváltoztathatja a szabályokat. A kereskedelmi adatbázisokat általában processzormagonként licencelik, és ez a költség előbb-utóbb a vásárló árában köt ki. A 4buildsite-on az adatbázis a csomag része, a tárhellyel és az SSL-lel együtt — minden külön díj nélkül.
Előnyök és korlátok
Előnyök
- Teljes ACID-tranzakciók — a rendelések és a fizetések hiba vagy szerverleállás esetén is konzisztensek maradnak.
- 1996 óta bizonyított megbízhatóság, éles használatban az Instagramnál, a Redditnél és történetileg a Skype-nál.
- Natív JSONB — rugalmas oldaltartalom a relációs integritás feláldozása nélkül.
- Beépített teljes szövegű keresés magyar szótövezéssel — katalóguskeresés külön szolgáltatás nélkül.
- Szabad licenc — semmilyen rejtett licencköltség nincs a csomagod árában.
- WAL-napló — hirtelen szerverleállás után az adatbázis újraindításkor sérült adatok nélkül épül vissza.
Korlátok
- A haladó üzemeltetés (hangolás, replikáció, feladatátvétel) tapasztalatot kíván — a 4buildsite-on ezt mi visszük, saját üzemeltetésben viszont igényes feladat.
- Az írások egyetlen elsődleges csomóponton futnak — a több csomópontra osztás (sharding) nem natív, külön eszközöket igényel.
- Minden kapcsolat viszonylag sok memóriát fogyaszt — sok kapcsolatnál kapcsolatkészletezés (PgBouncer) kell.
- A teljes szövegű keresés jó, de haladó relevanciában és keresési javaslatokban elmarad a célmotorok mögött.
Rövid értékelés
A PostgreSQL az alapértelmezett választás olyan weboldalakhoz, webáruházakhoz, piacterekhez és SaaS-platformokhoz, ahol a rendelések, a fizetések és az érdeklődők nem veszhetnek el. Egy egyszerű blog kevesebbel is beérné — a szabad licencnek köszönhetően viszont a 4buildsite-on ezt a biztonsági szintet amúgy is felár nélkül kapod meg.
Specifikációs táblázat
| Képesség | Korlát / küszöb | Jellemző felhasználás | |
|---|---|---|---|
| Tranzakciós integritás | Teljes ACID és MVCC, minden táblán | A nagyon hosszú tranzakciók lekötve tartják az erőforrásokat | Rendelések, fizetések, készlet |
| JSONB | Natív JSON, GIN-nel indexelhető | A nagyon összetett JSON-lekérdezések lassabbak, mint a klasszikus oszlopokon | Oldaltartalom, beállítások, terméktulajdonságok |
| Teljes szövegű keresés | tsvector és pg_trgm, többnyelvű (magyarral együtt) | A relevancia elmarad a célzott keresőmotorokétól | Keresés a webáruház katalógusában |
| Mentés és replikáció | WAL, PITR, streaming replikáció | Az automatikus feladatátvétel külső eszközöket kíván (pl. Patroni) | Helyreállítás incidens után, magas rendelkezésre állás |
| Skálázás | Olvasási replikák, táblaparticionálás | Az írások az elsődleges csomóponton maradnak | Nagy katalógusok és rendeléstörténetek |
| Költség | Nyílt forráskódú, szabad licenc | A valódi költség az infrastruktúra és az üzemeltetés | A 4buildsite csomagjainak része |
PostgreSQL, MySQL és MongoDB összehasonlítása
| Szempont | PostgreSQL | MySQL | MongoDB |
|---|---|---|---|
| ACID-integritás | Teljes, minden táblán, alapértelmezetten | Teljes, de csak az InnoDB motorral | Dokumentumok közötti tranzakciók csak a 4.0-tól, korlátozásokkal |
| Adattípusok és JSON | Indexelhető JSONB és gazdag típusok (tömb, tartomány) | Érvényes JSON, közvetett indexelés (generált oszlopok) | Natív BSON-dokumentumok, kötelező séma nélkül |
| Teljes szövegű keresés | Beépítve: tsvector, pg_trgm, többnyelvű szótövezés | Alapszintű (InnoDB FTS) | Alapszintű; a haladó változat (Atlas Search) csak a kereskedelmi felhőben |
| Licenc és költség | PostgreSQL License — szabad, kereskedelmi tulajdonos nélkül | GPL, az Oracle tulajdonában (kereskedelmi kiadásokkal) | SSPL — már nem klasszikus nyílt forráskódú licenc |
| Ökoszisztéma | Erős kiterjesztések (PostGIS, pgvector), támogatás minden ORM-ben | Mindenütt jelen van a klasszikus PHP-s és WordPress-tárhelyeken | Erős a Node.js körül, máshol szűkebb |
| Alkalmasság e-kereskedelemre | Kiváló — a rendelések, a készlet és a fizetések garantáltan konzisztensek | Jó — a történelmi szabvány (Magento, WooCommerce) | Rugalmas katalógusokhoz; a rendelések konzisztenciája többletmunkát kíván |
Gyakori kérdések
Lassítja a PostgreSQL a weboldalamat?
Rossz értelemben nem. A nyilvános oldalakat a Next.js gyorsítótárból szolgálja ki, az indexelt PostgreSQL-lekérdezések pedig az indexekre támaszkodnak. Egy szokásos weboldal vagy webáruház méreténél az adatbázis ritkán a szűk keresztmetszet — az érzékelt sebességben a frontend és a képek sokkal többet nyomnak a latban.
Miért nem WordPress MySQL-lel, mint mindenki más?
A WordPress egy PHP-alapú CMS sablonokkal és bővítményekkel, amelyeket folyamatosan karban kell tartani és frissíteni kell. A 4buildsite Next.js-oldalakat generál PostgreSQL-lel: nincsenek foltozandó bővítmények, és kevesebb a biztonsági rés. A MySQL sem rossz választás — a PostgreSQL viszont ad mellé indexelhető JSONB-t, jobb teljes szövegű keresést és szigorúbb integritást, ugyanazzal a szabad licenccel.
Mi történik az adataimmal, ha leáll a szerver?
A PostgreSQL minden módosítást először a WAL-naplóba ír, így az adatbázis újraindításkor sérült adatok nélkül épül vissza — egy hirtelen szerverleállás nem teszi tönkre a rendeléseidet. Ráadásul az adatok az alkalmazástól elkülönített, tartós köteteken vannak, így egy újraindítás vagy egy platformfrissítés nem nyúl hozzájuk.
Exportálhatom az adataimat, ha elhagyom a 4buildsite-ot?
Igen. Az adataid PostgreSQL-ben vannak, ami iparági szabvány — a termékek, a rendelések és a vevőadatok bevett formátumokba (CSV, SQL) exportálhatók. Nincs olyan zárt formátum, amely a platformhoz kötne.
Bírja a PostgreSQL, ha nő a webáruházam?
Igen, nagyon nagy tartalékkal. Az Instagram és a Reddit több százmillió felhasználóig skálázott PostgreSQL-en, indexekkel, particionálással és olvasási replikákkal — ugyanezek a technikák a 4buildsite-on is elérhetők. Egy webáruház jóval előbb ütközik a saját logisztikájának korlátaiba, mint a PostgreSQL-éibe.
Mennyibe kerül nekem a PostgreSQL licence?
Semmibe. A PostgreSQL szabad licenc alatt áll (PostgreSQL License, BSD jellegű), szerverenkénti vagy magonkénti díj nélkül. A 4buildsite-on az adatbázis a csomagod része, a tárhellyel és az SSL-lel együtt — külön nem fizetsz érte semmit.