Tehnoloogiad

← Avaleht
Andmed ja salvestus

PostgreSQL — sinu saidi ja e-poe andmebaas

Iga toode, tellimus, lead ja leht, mille 4buildsite'is loood, elab PostgreSQL-i andmebaasis. Sa ei pea seda ise haldama — aga tasub teada, miks me selle valisime: tehinguline terviklikkus maksete jaoks, peaaegu 30 aastaga tõestatud töökindlus ja null litsentsikulu sinu hinnas.

Mis on PostgreSQL ja mida see sinu saidis hoiab

PostgreSQL on relatsiooniline avatud lähtekoodiga andmebaasisüsteem, mida arendatakse pidevalt alates 1996. aastast — juured ulatuvad Berkeley ülikooli projekti POSTGRES (1986) juurde. 4buildsite'is on PostgreSQL koht, kus elavad sinu saidi andmed: tooted ja laoseisud, tellimused ja maksed, vormidest tulnud lead'id ja lehtede sisu. Sina töötad visuaalses redaktoris; PostgreSQL hoiab iga muudatuse turvaliselt alles.

Miks see sulle loeb, kui sa ei ole programmeerija? Sest vahe tõsise ja habras andmebaasi vahel ilmneb just rasketel hetkedel: liiklustipp kampaania ajal, kaks korda korratud makse, serveri taaskäivitus. PostgreSQL on kavandatud neist hetkedest läbi tulema ilma andmeid kaotamata või rikkumata — seetõttu kasutavad seda suures mahus sellised ettevõtted nagu Instagram ja Reddit ning ajalooliselt oli see Skype'i infrastruktuuri aluseks.

  • Tooted, variandid ja laoseisud — sinu e-poe täielik kataloog
  • Tellimused, Stripe'i maksed ja arved — müügiajalugu ilma aukudeta
  • Vormidest tulnud lead'id — iga hinnapäring salvestatakse garanteeritult
  • Lehtede ja mallide sisu — kõik, mida visuaalses redaktoris muudad
  • Sinu saidi domeenid, seaded ja avaldatud versioonid

Tellimused ja maksed ilma rikutud andmeteta — ACID-terviklikkus

Kui klient teeb tellimuse, juhtub korraga mitu asja: laoseis väheneb, luuakse tellimus, registreeritakse Stripe'i makse. PostgreSQL täidab need ühe tehinguna: kas juhtub kõik või mitte midagi. Kui makse ebaõnnestub poole peal, taastub laoseis automaatselt algsele väärtusele. Seda käitumist nimetatakse ACID-iks (Atomicity, Consistency, Isolation, Durability) ja PostgreSQL garanteerib selle igal tabelil ilma erilise seadistuseta.

Lisaks tehingutele jõustab PostgreSQL terviklikkusereeglid otse andmebaasis: tellimusrida ei saa viidata olematule tootele, laoseis ei saa muutuda negatiivseks, konto e-posti aadressi ei saa dubleerida. Need piirangud (võõrvõtmed, check, unique) peatavad vigased andmed enne sisenemist — mitte pärast seda, kui need on sinu müügiaruande ära rikkunud.

Turuplatsidel on terviklikkus kahekordselt oluline: Stripe Connecti kaudu jagatud vahendustasud ja maksed arvutatakse tellimuse andmete põhjal. Dubleeritud tellimus või ebaühtlane summa tähendaks müüjate vahel valesti jagatud raha. PostgreSQL-i tehingud hoiavad need arvutused õigena, tellimus tellimuse haaval.

Otsing kataloogis ja paindlik sisu

PostgreSQL sisaldab täistekstiotsingu mootorit: kliendid otsivad „jooksujalatsid“ ja leiavad sobivad tooted, stemming-sõnastikega, sh rumeenia keele jaoks. Laiendus pg_trgm lisab tolerantsi trükivigade suhtes. E-poe jaoks tähendavad need võimalused, et kataloogis saab hästi otsida ilma eraldi Elasticsearchi-tüüpi teenuseta — seega on vähem komponente, mis võivad tõrkuda, ja väiksem infrastruktuurikulu.

Visuaalses redaktoris ehitatud lehtede sisul pole kindlat struktuuri — hero-plokil, vormil ja galeriil on erinevad väljad. PostgreSQL lahendab selle JSONB-ga: salvestab natiivset JSON-i, indekseeritav GIN-indeksitega, päritav nagu iga veerg. Saad dokumendiandmebaasi paindlikkuse, kuid säilitad tellimuste ja maksete relatsioonilise terviklikkuse — samas süsteemis, mitte kahes.

  • tsvector + stemming-sõnastikud (rumeenia keel kaasa arvatud) — asjakohane otsing kataloogis
  • pg_trgm — kliendid leiavad toote ka siis, kui eksivad ühe tähega
  • JSONB GIN-indeksitega — paindlikud lehteplokid jäävad kiirelt päritavaks

Töökindlus: varukoopia, taastamine ja null üllatust

PostgreSQL kirjutab iga muudatuse esmalt logisse (WAL — Write-Ahead Log) ja alles seejärel tegelikesse andmetesse. Kui server peatub ootamatult, ehitatakse andmebaas taaskäivitusel logist üles, ilma rikutud andmeteta. Samale mehhanismile ehitab PostgreSQL ka punktipõhise taastamise (PITR) — mootori standardvõimekus WAL-logi arhiveerivate paigalduste jaoks. 4buildsite'is asuvad andmed püsivatel köidetel, rakendusest eraldi, seega platvormi taaskäivitus või uuendus neid ei puuduta.

PostgreSQL toetab ka striimivat replikatsiooni — andmebaasi sünkroonitud koopiat, mis on vajaduse korral valmis liiklust üle võtma.

Skaleerimine ja kulud — kasva ilma litsentsiarveteta

Kui e-pood kasvab, kasvab PostgreSQL sellega kaasa: indeksid hoiavad päringud kiired sadade tuhandete toodetega kataloogides, partitsioonimine jagab tellimuste ajaloo perioodideks ning lugemisreplikad võtavad üle aruannete liikluse. Instagram ja Reddit on PostgreSQL-iga skaleerunud sadade miljonite kasutajateni — veebipood jõuab selle tehnoloogia piirideni palju hiljem, kui arvatakse.

PostgreSQL-il on vaba litsents (PostgreSQL License, BSD-tüüpi) — ilma litsentsikuludeta ja ilma kommertsomanikuta, kes saaks reegleid üleöö muuta. Kommertsandmebaase litsentsitakse tavaliselt protsessorituuma kohta ning kulu jõuab paratamatult kliendi makstavasse hinda. 4buildsite'is on andmebaas plaani sisse arvatud, koos hostingu ja SSL-iga — ilma eraldi tasuta.

Eelised ja piirangud

Eelised

  • Täielikud ACID-tehingud — tellimused ja maksed jäävad ühtseks ka vigade või serveritõrgete korral.
  • Tõestatud töökindlus alates 1996. aastast, tootmises Instagramis, Redditis ja ajalooliselt Skype'is.
  • Natiivne JSONB — paindlik lehesisu relatsioonilist terviklikkust ohverdamata.
  • Sisseehitatud täistekstiotsing rumeenia keele stemmingu toega — otsing kataloogis ilma eraldi teenuseta.
  • Vaba litsents — sinu plaani hinnas pole peidetud litsentsikulu.
  • WAL-logi — serveri ootamatul peatumisel ehitatakse andmebaas taaskäivitusel üles ilma rikutud andmeteta.

Piirangud

  • Täpsem haldus (tuning, replikatsioon, failover) nõuab kogemust — 4buildsite'is teeme seda meie, aga ise majutatuna on see nõudlik.
  • Kirjutamised toimuvad ühel esmasel sõlmel — mitmele sõlmele jaotamine (sharding) pole natiivne ja nõuab lisatööriistu.
  • Iga ühendus tarbib suhteliselt palju mälu — paljude ühenduste korral on vaja pooling'ut (PgBouncer).
  • Täistekstiotsing on hea, kuid jääb erimootoritele alla täpsema asjakohasuse ja otsinguvihjete osas.

Lühike kokkuvõte

PostgreSQL on standardvalik saitide, veebipoodide, turuplatsside ja SaaS-platvormide jaoks, kus tellimusi, makseid ja lead'e ei tohi kaduda. Lihtne blogi saaks hakkama ka vähemaga — aga vaba litsents tähendab, et 4buildsite'is saad sellise turvataseme ikkagi lisakuluta.

Spetsifikatsioonide tabel

VõimekusPiir / läviTüüpiline kasutus
Tehinguline terviklikkusTäielik ACID + MVCC, igal tabelilVäga pikad tehingud hoiavad ressursse lukusTellimused, maksed, laoseisud
JSONBNatiivne JSON, GIN-iga indekseeritavVäga keerukad JSON-päringud on aeglasemad kui klassikalistel veergudelLehtede sisu, seaded, tooteatribuudid
Täistekstiotsingtsvector + pg_trgm, mitmekeelne (rumeenia keel kaasa arvatud)Asjakohasus jääb erimootoritele allaOtsing e-poe kataloogis
Varukoopia ja replikatsioonWAL, PITR, striimiv replikatsioonAutomaatne failover vajab väliseid tööriistu (nt Patroni)Taastamine intsidentide järel, kõrge käideldavus
SkaleerimineLugemisreplikad, tabelite partitsioonimineKirjutamised jäävad esmasele sõlmeleSuured kataloogid ja tellimuste ajalugu
KuluAvatud lähtekood, vaba litsentsTegelik kulu on infrastruktuur ja haldusSisaldub 4buildsite'i plaanides

PostgreSQL vs MySQL vs MongoDB

KriteeriumPostgreSQLMySQLMongoDB
ACID-terviklikkusTäielik, igal tabelil, vaikimisiTäielik ainult InnoDB-mootorigaMitme dokumendi tehingud alles versioonist 4.0, piirangutega
Andmetüübid ja JSONIndekseeritav JSONB + rikkalikud tüübid (array, range)Kehtiv JSON, kaudne indekseerimine (genereeritud veerud)Natiivsed BSON-dokumendid, ilma pealesurutud skeemita
TäistekstiotsingSisaldub: tsvector, pg_trgm, mitmekeelne stemmingPõhiline (InnoDB FTS)Põhiline; täiustatud variant (Atlas Search) ainult kommertspilves
Litsents / kuluPostgreSQL License — vaba, ilma kommertsomanikutaGPL, Oracle'i omandis (kommertsväljaanded)SSPL — pole enam klassikaline avatud lähtekoodiga litsents
ÖkosüsteemVõimsad laiendused (PostGIS, pgvector), tugi kõigis ORM-idesKõikjal klassikalises PHP/WordPressi hostingusTugev Node.js-is, mujal piiratum
Sobivus e-kaubanduseleSuurepärane — tellimused, laoseisud ja maksed garanteeritult ühtsedHea — ajalooline standard (Magento, WooCommerce)Paindlike kataloogide jaoks; tellimuste ühtsus nõuab lisaaega ja -vaeva

Korduma kippuvad küsimused

Kas PostgreSQL mõjutab minu saidi kiirust?

Avalikke lehti serveeritakse Next.js-ist vahemäluga ning indekseeritud PostgreSQL-i päringud vastavad millisekundites. Tüüpilise saidi või e-poe mahus ei ole andmebaas tavaliselt kitsaskoht — tajutava kiiruse jaoks loevad palju rohkem esiots ja pildid.

Miks mitte WordPress MySQL-iga, nagu kõik teised?

WordPress on PHP-põhine CMS teemade ja pluginatega, mida tuleb pidevalt hooldada ja uuendada. 4buildsite genereerib Next.js-saite PostgreSQL-iga: ilma paigatavate pluginateta ja vähemate turvaaukudega. MySQL pole halb valik — aga PostgreSQL lisab indekseeritava JSONB, parema täistekstiotsingu ja rangema terviklikkuse, samas vabas litsentsis.

Mis juhtub minu andmetega, kui server kukub?

PostgreSQL kirjutab iga muudatuse esmalt WAL-logisse, seega ehitatakse andmebaas taaskäivitusel üles ilma rikutud andmeteta — ootamatu serveritõrge ei riku sinu tellimusi. Lisaks asuvad andmed püsivatel köidetel, rakendusest eraldi, seega platvormi taaskäivitus või uuendus neid ei puuduta.

Kas ma saan oma andmed eksportida, kui 4buildsite'ist lahkun?

Jah. Sinu andmed asuvad PostgreSQL-is, mis on tööstuse standardvorming — tooteid, tellimusi ja kliente saab eksportida tavapärastesse vormingutesse (CSV, SQL). Pole omandivormingut, mis sind platvormi külge lukustaks.

Kas PostgreSQL saab hakkama, kui minu pood kasvab?

Jah, väga suure varuga. Instagram ja Reddit on PostgreSQL-iga skaleerunud sadade miljonite kasutajateni, kasutades indekseid, partitsioonimist ja lugemisreplikaid — samu tehnikaid, mis on saadaval ka 4buildsite'is. Veebipood jõuab PostgreSQL-i piirideni palju hiljem kui oma logistika piirideni.

Kui palju PostgreSQL-i litsents mulle maksab?

Mitte midagi. PostgreSQL-il on vaba litsents (PostgreSQL License, BSD-tüüpi), ilma serveri- või tuumapõhiste tasudeta. 4buildsite'is on andmebaas sinu plaani sisse arvatud, koos hostingu ja SSL-iga — selle eest ei maksa sa eraldi midagi.

4b2b.net
Äriökosüsteem
4conta.ro
Raamatupidamine
4invoices.net
Arvelduse rakendus
4expenses.net
Kulude haldus
4notify.net
Teavitused
4hosting.net
Veebimajutus
4database.net
Andmebaasid
4buildsite.net
Kodulehe koostaja
4myapp.net
Rakenduste koostaja
4avatars.net
Tehisintellekti avatarid
4chaty.net
Tehisintellekti vestlusrobot
4webagency.net
Tarkvara veebiagentuuridele
4softedu.net
Kodulehed hariduse jaoks
4softcrm.net
CRM-platvorm
4softerp.net
ERP-süsteem
4softhr.net
Personalijuhtimine
4mystaff.net
Töötajate portaal
4myprojects.net
Projektijuhtimine
4mycontracts.net
Lepingud
4docs.net
Dokumendihaldus
4appointments.net
Broneeringud
4marketingonline.net
Turundus
4insurance.net
Kindlustus
4property.net
Kinnisvara
4lawyers.net
Tarkvara juristidele
4mygarage.net
Autoteenindus
4driving.net
Autokoolid
4fleet.net
Autopargi haldus
4myevents.net
Üritused
4therapy.net
Teraapia
4clinics.net
Kliinikud
4dental.net
Hambakliinikud
4restaurants.net
Restoranid
4beautify.net
Ilusalong
4gym.net
Spordiklubid
4guards.net
Turvafirmad
4softvet.net
Loomakliinikud
4softauto.net
Autoäri tarkvara
4construct.net
Ehitusettevõtted
4marketplace.net
Kauplemisplatvorm
4shopy.net
E-pood
4pricing.net
Hinnavõrdlus
4salefood.net
Toidu kohaletoimetamine
4rentify.net
Üürileandmine
4transports.net
Transport
4agencytravel.net
Reisibüroo
4hotel.net
Hotellihaldus
4ong.net
MTÜ-de haldus