PostgreSQL — zbirka podatkov vaše strani in spletne trgovine
Vsak izdelek, naročilo, potencialna stranka in stran, ki jih ustvarite na 4buildsite, živi v zbirki podatkov PostgreSQL. Vam je ni treba upravljati — a vredno je vedeti, zakaj smo jo izbrali: transakcijska celovitost za plačila, zanesljivost, dokazana skoraj 30 let, in nič licenčnih stroškov v vaši ceni.
Kaj je PostgreSQL in kaj hrani v vaši strani
PostgreSQL je odprtokodni relacijski sistem zbirk podatkov, ki se neprekinjeno razvija od leta 1996 — s koreninami v projektu POSTGRES na Univerzi Berkeley (1986). Na 4buildsite je PostgreSQL mesto, kjer živijo podatki vaše strani: izdelki in zaloge, naročila in plačila, potencialne stranke iz obrazcev in vsebina strani. Vi delate v vizualnem urejevalniku; PostgreSQL varno hrani vsako spremembo.
Zakaj je to pomembno za vas, če niste programer? Ker se razlika med resno in krhko zbirko podatkov pokaže ravno v težkih trenutkih: konica prometa ob akciji, plačilo, ki se ponovi dvakrat, ponovni zagon strežnika. PostgreSQL je zasnovan tako, da te trenutke preživi brez izgube ali poškodbe podatkov — zato ga v velikem obsegu uporabljajo podjetja, kot sta Instagram in Reddit, zgodovinsko pa je bil osnova infrastrukture Skypa.
- Izdelki, različice in zaloge — celoten katalog vaše trgovine
- Naročila, plačila Stripe in računi — zgodovina prodaje, brez lukenj
- Potencialne stranke iz obrazcev — vsaka zahteva za ponudbo je zagotovljeno shranjena
- Vsebina strani in predlog — vse, kar urejate v vizualnem urejevalniku
- Domene, nastavitve in objavljene različice vaše strani
Naročila in plačila brez pokvarjenih podatkov — celovitost ACID
Ko stranka odda naročilo, se hkrati zgodi več stvari: zaloga se zmanjša, ustvari se naročilo, zabeleži se plačilo Stripe. PostgreSQL jih izvede kot eno samo transakcijo: ali se zgodi vse ali nič. Če plačilo na polovici odpove, se zaloga samodejno vrne na začetno vrednost. To obnašanje se imenuje ACID (Atomicity, Consistency, Isolation, Durability) in ga PostgreSQL zagotavlja na vsaki tabeli, brez posebnih nastavitev.
Poleg transakcij PostgreSQL uveljavlja pravila celovitosti neposredno v zbirki podatkov: vrstica naročila ne more sklicevati na neobstoječ izdelek, zaloga ne more postati negativna, e-poštnega naslova računa ni mogoče podvojiti. Te omejitve (tuji ključi, check, unique) zaustavijo napačne podatke, preden vstopijo — ne šele potem, ko so vam pokvarili poročilo o prodaji.
Pri tržnicah je celovitost dvakrat pomembna: provizije in plačila, razdeljena prek Stripe Connect, se izračunajo iz podatkov naročila. Podvojeno naročilo ali neskladen znesek bi pomenil napačno razdeljen denar med prodajalce. Transakcije PostgreSQL te izračune ohranjajo pravilne, naročilo za naročilom.
Hitro iskanje po katalogu in prilagodljiva vsebina
PostgreSQL vključuje mehanizem za iskanje po celotnem besedilu: stranke iščejo „tekaški copati“ in najdejo ustrezne izdelke, s slovarji za krnjenje (stemming), vključno z romunščino. Razširitev pg_trgm doda toleranco za tipkarske napake. Za trgovino te zmožnosti pomenijo, da je katalog mogoče dobro iskati brez ločene storitve tipa Elasticsearch — torej manj komponent, ki lahko odpovejo, in nižji infrastrukturni stroški.
Vsebina strani, zgrajenih v vizualnem urejevalniku, nima fiksne strukture — blok hero, obrazec in galerija imajo različna polja. PostgreSQL to reši z JSONB: shranjuje izvorni JSON, indeksiran z indeksi GIN, poizvedljiv kot vsak stolpec. Dobite prilagodljivost zbirke dokumentov, a ohranite relacijsko celovitost za naročila in plačila — v istem sistemu, ne v dveh.
- tsvector + slovarji za krnjenje (romunščina vključena) — ustrezno iskanje po katalogu
- pg_trgm — stranke najdejo izdelek, tudi če zgrešijo črko
- JSONB z indeksi GIN — prilagodljivi bloki strani ostanejo hitro poizvedljivi
Zanesljivost: varnostne kopije, obnovitev in brez presenečenj
PostgreSQL vsako spremembo najprej zapiše v dnevnik (WAL — Write-Ahead Log) in šele nato v same podatke. Če se strežnik nenadoma ustavi, se zbirka podatkov ob ponovnem zagonu obnovi iz dnevnika, brez pokvarjenih podatkov. Na istem mehanizmu PostgreSQL gradi tudi obnovitev na točko v času (PITR) — standardna zmožnost mehanizma za namestitve, ki arhivirajo dnevnik WAL. Na 4buildsite podatki ležijo na trajnih nosilcih, ločenih od aplikacije, zato jih ponovni zagon ali posodobitev platforme ne zadene.
PostgreSQL podpira tudi pretočno replikacijo — sinhronizirano kopijo zbirke podatkov, pripravljeno prevzeti promet po potrebi. Ponavljajoče se napake 5xx so znana težava za pregledovanje in indeksiranje, zanesljiva zbirka podatkov pa odpravi enega od njihovih virov.
Skaliranje in stroški — rast brez licenčnih računov
Ko trgovina raste, raste PostgreSQL z njo: indeksi ohranjajo hitre poizvedbe na katalogih s sto tisoči izdelkov, particioniranje razdeli zgodovino naročil po obdobjih, replike za branje pa prevzamejo promet poročil. Instagram in Reddit sta se na PostgreSQL skalirala do sto milijonov uporabnikov — spletna trgovina doseže meje te tehnologije veliko pozneje, kot si misli.
PostgreSQL ima prosto licenco (PostgreSQL License, tipa BSD) — brez licenčnih stroškov in brez komercialnega lastnika, ki bi čez noč spremenil pravila. Komercialne zbirke podatkov se praviloma licencirajo po procesorskem jedru, strošek pa neizogibno pride v ceno, ki jo plača stranka. Na 4buildsite je zbirka podatkov vključena v paket, skupaj z gostovanjem in SSL-jem — brez kakršne koli ločene pristojbine.
Prednosti in omejitve
Prednosti
- Polne transakcije ACID — naročila in plačila ostanejo dosledna tudi ob napakah ali izpadih strežnika.
- Zanesljivost, dokazana od leta 1996, v produkciji pri Instagramu, Redditu in zgodovinsko pri Skypu.
- Izvorni JSONB — prilagodljiva vsebina strani brez žrtvovanja relacijske celovitosti.
- Vključeno iskanje po celotnem besedilu s krnjenjem za romunščino — iskanje po katalogu brez ločene storitve.
- Prosta licenca — nič skritega licenčnega stroška v ceni vašega paketa.
- Dnevnik WAL — ob nenadni ustavitvi strežnika se zbirka podatkov ob ponovnem zagonu obnovi brez pokvarjenih podatkov.
Omejitve
- Napredno upravljanje (uglaševanje, replikacija, failover) zahteva izkušnje — na 4buildsite to opravimo mi, pri lastnem gostovanju pa je zahtevno.
- Pisanje poteka na enem samem primarnem vozlišču — porazdelitev na več vozlišč (sharding) ni izvorna in zahteva dodatna orodja.
- Vsaka povezava porabi razmeroma veliko pomnilnika — pri številnih povezavah je potreben pooling (PgBouncer).
- Iskanje po celotnem besedilu je dobro, a pri napredni ustreznosti in predlogih iskanja zaostaja za namenskimi mehanizmi.
Kratek povzetek
PostgreSQL je standardna izbira za spletne strani, spletne trgovine, tržnice in platforme SaaS, kjer naročila, plačila in potencialne stranke ne smejo biti izgubljeni. Preprost blog bi zadostoval tudi z manj — a prosta licenca pomeni, da na 4buildsite to raven varnosti dobite tako ali tako, brez dodatnih stroškov.
Tabela specifikacij
| Zmožnost | Omejitev / prag | Tipična uporaba | |
|---|---|---|---|
| Transakcijska celovitost | Popoln ACID + MVCC, na vsaki tabeli | Zelo dolge transakcije držijo vire zaklenjene | Naročila, plačila, zaloge |
| JSONB | Izvorni JSON, indeksiran z GIN | Zelo kompleksne poizvedbe po JSON so počasnejše kot po klasičnih stolpcih | Vsebina strani, nastavitve, atributi izdelkov |
| Iskanje po celotnem besedilu | tsvector + pg_trgm, večjezično (romunščina vključena) | Ustreznost pod namenskimi iskalnimi mehanizmi | Iskanje po katalogu trgovine |
| Varnostne kopije in replikacija | WAL, PITR, pretočna replikacija | Samodejni failover zahteva zunanja orodja (npr. Patroni) | Obnovitev po incidentih, visoka razpoložljivost |
| Skaliranje | Replike za branje, particioniranje tabel | Pisanje ostane na primarnem vozlišču | Katalogi in velike zgodovine naročil |
| Strošek | Odprta koda, prosta licenca | Pravi strošek sta infrastruktura in upravljanje | Vključeno v pakete 4buildsite |
PostgreSQL v primerjavi z MySQL in MongoDB
| Merilo | PostgreSQL | MySQL | MongoDB |
|---|---|---|---|
| Celovitost ACID | Popolna, na vsaki tabeli, privzeto | Popolna le z mehanizmom InnoDB | Transakcije z več dokumenti šele od v4.0, z omejitvami |
| Podatkovni tipi in JSON | Indeksiran JSONB + bogati tipi (array, range) | Veljaven JSON, posredno indeksiranje (generirani stolpci) | Izvorni dokumenti BSON, brez vsiljene sheme |
| Iskanje po celotnem besedilu | Vključeno: tsvector, pg_trgm, večjezično krnjenje | Osnovno (InnoDB FTS) | Osnovno; napredna različica (Atlas Search) le v komercialnem oblaku |
| Licenca / strošek | PostgreSQL License — prosta, brez komercialnega lastnika | GPL, last Oraclea (komercialne izdaje) | SSPL — ni več klasična odprtokodna licenca |
| Ekosistem | Zmogljive razširitve (PostGIS, pgvector), podpora v vseh ORM-jih | Vseprisoten v klasičnem gostovanju PHP/WordPress | Močan v Node.js, drugje bolj omejen |
| Primernost za e-trgovino | Odlična — naročila, zaloge in plačila zagotovljeno dosledni | Dobra — zgodovinski standard (Magento, WooCommerce) | Za prilagodljive kataloge; doslednost naročil zahteva dodaten trud |
Pogosta vprašanja
Ali PostgreSQL vpliva na hitrost moje strani?
Javne strani se strežejo iz Next.js s predpomnilnikom, zato večina obiskov ne gre neposredno do zbirke podatkov, poizvedbe v PostgreSQL pa uporabljajo indekse. Za zaznano hitrost so običajno odločilni frontend, slike in predpomnilnik.
Zakaj ne WordPress z MySQL, kot vsi?
WordPress je CMS na PHP s temami in vtičniki, ki jih je treba nenehno vzdrževati in posodabljati. 4buildsite ustvarja strani Next.js s PostgreSQL: brez vtičnikov za krpanje in z manj varnostnimi luknjami. MySQL ni slaba izbira — a PostgreSQL doda indeksiran JSONB, boljše iskanje po celotnem besedilu in strožjo celovitost, pod isto prosto licenco.
Kaj se zgodi z mojimi podatki, če strežnik odpove?
PostgreSQL vsako spremembo najprej zapiše v dnevnik WAL, zato se zbirka podatkov ob ponovnem zagonu obnovi brez pokvarjenih podatkov — nenaden izpad strežnika ne pokvari vaših naročil. Poleg tega podatki ležijo na trajnih nosilcih, ločenih od aplikacije, zato jih ponovni zagon ali posodobitev platforme ne zadene.
Ali lahko izvozim podatke, če zapustim 4buildsite?
Da. Vaši podatki so v PostgreSQL, industrijskem standardnem formatu — izdelke, naročila in stranke je mogoče izvoziti v običajnih formatih (CSV, SQL). Ni lastniškega formata, ki bi vas vezal na platformo.
Ali PostgreSQL zmore, če moja trgovina raste?
Da, z zelo veliko rezervo. Instagram in Reddit sta se na PostgreSQL skalirala do sto milijonov uporabnikov, z indeksi, particioniranjem in replikami za branje — iste tehnike so na voljo tudi na 4buildsite. Spletna trgovina doseže meje PostgreSQL veliko pozneje kot meje lastne logistike.
Koliko me stane licenca PostgreSQL?
Nič. PostgreSQL ima prosto licenco (PostgreSQL License, tipa BSD), brez pristojbin na strežnik ali na jedro. Na 4buildsite je zbirka podatkov vključena v vaš paket, skupaj z gostovanjem in SSL-jem — zanjo ne plačate ničesar posebej.