Technologijos

← Pradžia
Duomenys ir saugykla

PostgreSQL — tavo svetainės ir parduotuvės duomenų bazė

Kiekvienas produktas, užsakymas, lead ir puslapis, kuriuos sukuri 4buildsite platformoje, gyvena PostgreSQL duomenų bazėje. Tau jos administruoti nereikia, bet verta žinoti, kodėl ją pasirinkome: transakcinis vientisumas mokėjimams, beveik 30 metų patikrintas patikimumas ir jokių licencijos kaštų tavo kainoje.

Kas yra PostgreSQL ir ką jis laiko tavo svetainėje

PostgreSQL – reliacinė atvirojo kodo duomenų bazių sistema, nuolat plėtojama nuo 1996 m., kurios šaknys siekia POSTGRES projektą Berkeley universitete (1986). 4buildsite platformoje PostgreSQL yra vieta, kurioje gyvena tavo svetainės duomenys: produktai ir atsargos, užsakymai ir mokėjimai, formų lead’ai ir puslapių turinys. Tu dirbi vizualiniame redaktoriuje, o PostgreSQL saugiai išsaugo kiekvieną pakeitimą.

Kodėl tai svarbu tau, jei nesi programuotojas? Nes skirtumas tarp rimtos ir trapios duomenų bazės išryškėja būtent sunkiomis akimirkomis: srauto šuolis per akciją, du kartus pakartotas mokėjimas, serverio perkrovimas. PostgreSQL sukurtas tokias akimirkas pereiti neprarandant ir nesugadinant duomenų – todėl jį dideliu mastu naudoja tokios įmonės kaip Instagram ir Reddit, o istoriškai jis buvo Skype infrastruktūros pagrindas.

  • Produktai, variantai ir atsargos – visas tavo parduotuvės katalogas
  • Užsakymai, Stripe mokėjimai ir sąskaitos faktūros – pardavimų istorija be spragų
  • Formų lead’ai – kiekviena pasiūlymo užklausa išsaugoma duomenų bazėje
  • Puslapių ir šablonų turinys – viskas, ką redaguoji vizualiniame redaktoriuje
  • Tavo svetainės domenai, nustatymai ir paskelbtos versijos

Užsakymai ir mokėjimai be sugadintų duomenų – ACID vientisumas

Kai klientas pateikia užsakymą, vienu metu įvyksta keli dalykai: sumažėja atsargos, sukuriamas užsakymas, užregistruojamas Stripe mokėjimas. PostgreSQL juos vykdo kaip vieną transakciją: arba įvyksta viskas, arba nieko. Jei mokėjimas nepavyksta pusiaukelėje, atsargos automatiškai grįžta į pradinę vertę. Šis elgesys vadinamas ACID (Atomicity, Consistency, Isolation, Durability), ir PostgreSQL jį garantuoja bet kuriai lentelei be jokių specialių nustatymų.

Be transakcijų, PostgreSQL vientisumo taisykles užtikrina tiesiai duomenų bazėje: užsakymo eilutė negali nurodyti neegzistuojančio produkto, atsargos negali tapti neigiamos, paskyros el. paštas negali pasikartoti. Šie apribojimai (foreign key, check, unique) sustabdo klaidingus duomenis dar prieš jiems patenkant – o ne po to, kai jie jau sugadino tavo pardavimų ataskaitą.

Prekyvietėms vientisumas svarbus dvigubai: komisiniai ir mokėjimai, padalyti per Stripe Connect, skaičiuojami pagal užsakymo duomenis. Dubliuotas užsakymas ar nenuosekli suma reikštų neteisingai tarp pardavėjų padalytus pinigus. PostgreSQL transakcijos šiuos skaičiavimus išlaiko teisingus – užsakymas po užsakymo.

Greita katalogo paieška ir lankstus turinys

PostgreSQL turi pilnatekstės paieškos variklį: klientai ieško „bėgimo bateliai“ ir randa tinkamus produktus, naudojant stemming žodynus, įskaitant rumunų kalbą. Plėtinys pg_trgm prideda toleranciją rašybos klaidoms. Parduotuvei tai reiškia, kad katalogą galima gerai ieškoti be atskiros Elasticsearch tipo paslaugos – vadinasi, mažiau komponentų, kurie gali sugesti, ir mažesni infrastruktūros kaštai.

Vizualiniame redaktoriuje kuriamų puslapių turinys neturi fiksuotos struktūros – hero blokas, forma ir galerija turi skirtingus laukus. PostgreSQL tai sprendžia su JSONB: saugo natūralų JSON, indeksuojamą GIN indeksais, užklausiamą kaip bet kuris stulpelis. Gauni dokumentų duomenų bazės lankstumą, bet išlaikai reliacinį vientisumą užsakymams ir mokėjimams – toje pačioje sistemoje, o ne dviejose.

  • tsvector + stemming žodynai (įskaitant rumunų) – tinkama katalogo paieška
  • pg_trgm – klientai randa produktą, net jei suklysta viena raide
  • JSONB su GIN indeksais – lankstūs puslapių blokai lieka greitai užklausiami

Patikimumas: atsarginės kopijos ir atkūrimas

PostgreSQL kiekvieną pakeitimą pirmiausia įrašo į žurnalą (WAL – Write-Ahead Log) ir tik tada į pačius duomenis. Jei serveris staiga sustoja, paleidus iš naujo duomenų bazė atkuriama iš žurnalo be sugadintų duomenų. Ant to paties mechanizmo PostgreSQL stato ir atkūrimą į tam tikrą laiko tašką (PITR) – standartinę variklio galimybę įdiegimams, kurie archyvuoja WAL žurnalą. 4buildsite platformoje duomenys laikomi pastoviuose tomuose, atskirtuose nuo programos, todėl platformos perkrovimas ar atnaujinimas jų neliečia.

PostgreSQL palaiko ir streaming replikaciją – sinchronizuotą duomenų bazės kopiją, pasirengusią prireikus perimti srautą. Tavo svetainei duomenų bazės patikimumas svarbus ir SEO: nuolat atsakanti svetainė nuolat nuskaitoma ir indeksuojama, o pasikartojančios 5xx klaidos mažina pozicijas „Google“.

Mastelis ir kaštai – augk be licencijos sąskaitų

Kai parduotuvė auga, kartu auga ir PostgreSQL: indeksai padeda greitai atlikti užklausas kataloguose su šimtais tūkstančių produktų, partitioning skaido užsakymų istoriją pagal laikotarpius, o skaitymo replikos perima ataskaitų srautą. Instagram ir Reddit išplėtė PostgreSQL iki šimtų milijonų naudotojų – internetinė parduotuvė šios technologijos ribas pasiekia daug vėliau, nei manoma.

PostgreSQL turi laisvą licenciją (PostgreSQL License, BSD tipo) – jokių licencijos kaštų ir jokio komercinio savininko, galinčio per naktį pakeisti taisykles. Komercinės duomenų bazės paprastai licencijuojamos pagal procesoriaus branduolį, ir kaina neišvengiamai atsiduria kliento mokamoje kainoje. 4buildsite platformoje duomenų bazė įtraukta į planą kartu su talpinimu ir SSL – be jokio atskiro mokesčio.

Privalumai ir apribojimai

Privalumai

  • Pilnos ACID transakcijos – užsakymai ir mokėjimai išlieka nuoseklūs net ir esant klaidoms ar serverio gedimams.
  • Patikimumas, įrodytas nuo 1996 m., produkcijoje Instagram, Reddit ir istoriškai Skype.
  • Natūralus JSONB – lankstus puslapių turinys neaukojant reliacinio vientisumo.
  • Įtaisyta pilnatekstė paieška su rumunų kalbos stemming – katalogo paieška be atskiros paslaugos.
  • Laisva licencija – nėra paslėpto licencijos kaštų tavo plano kainoje.
  • WAL žurnalas – staiga sustojus serveriui, duomenų bazė paleidus iš naujo atkuriama be sugadintų duomenų.

Apribojimai

  • Pažangus administravimas (tuning, replikacija, failover) reikalauja patirties – 4buildsite platformoje tai darome mes, bet savarankiškai talpinamas jis reiklus.
  • Rašymai vyksta viename pagrindiniame mazge – paskirstymas keliuose mazguose (sharding) nėra natūralus ir reikalauja papildomų įrankių.
  • Kiekviena jungtis sunaudoja palyginti daug atminties – esant daug jungčių reikia pooling (PgBouncer).
  • Pilnatekstė paieška gera, tačiau pažangiam tinkamumui ir paieškos pasiūlymams nusileidžia specializuotiems varikliams.

Trumpa išvada

PostgreSQL – standartinis pasirinkimas svetainėms, internetinėms parduotuvėms, prekyvietėms ir SaaS platformoms, kuriose užsakymai, mokėjimai ir lead’ai neturi teisės dingti. Paprastam tinklaraščiui pakaktų ir mažiau, tačiau laisva licencija reiškia, kad 4buildsite platformoje šį saugumo lygį gauni bet kuriuo atveju, be papildomų kaštų.

Specifikacijų lentelė

GalimybėRiba / slenkstisTipinis naudojimas
Transakcinis vientisumasPilnas ACID + MVCC, bet kuriai lenteleiLabai ilgos transakcijos laiko užrakintus ištekliusUžsakymai, mokėjimai, atsargos
JSONBNatūralus JSON, indeksuojamas su GINLabai sudėtingos JSON užklausos lėtesnės nei klasikiniuose stulpeliuosePuslapių turinys, nustatymai, produktų atributai
Pilnatekstė paieškatsvector + pg_trgm, daugiakalbė (įskaitant rumunų)Tinkamumas žemesnis nei specializuotų paieškos varikliųParduotuvės katalogo paieška
Atsarginės kopijos ir replikacijaWAL, PITR, streaming replikacijaAutomatiniam failover reikia išorinių įrankių (pvz., Patroni)Atkūrimas po incidentų, aukštas prieinamumas
MastelisSkaitymo replikos, lentelių partitioningRašymai lieka pagrindiniame mazgeDideli katalogai ir ilgos užsakymų istorijos
KainaAtvirasis kodas, laisva licencijaTikrieji kaštai – infrastruktūra ir administravimasĮtraukta į 4buildsite planus

PostgreSQL ir MySQL ir MongoDB

KriterijusPostgreSQLMySQLMongoDB
ACID vientisumasPilnas, bet kuriai lentelei, pagal numatytuosius nustatymusPilnas tik su InnoDB varikliuKelių dokumentų transakcijos tik nuo v4.0, su apribojimais
Duomenų tipai ir JSONIndeksuojamas JSONB + turtingi tipai (array, range)Galiojantis JSON, netiesioginis indeksavimas (generuojami stulpeliai)Natūralūs BSON dokumentai, be primestos schemos
Pilnatekstė paieškaĮtraukta: tsvector, pg_trgm, daugiakalbis stemmingPagrindinė (InnoDB FTS)Pagrindinė; pažangi versija (Atlas Search) tik komerciniame debesyje
Licencija / kainaPostgreSQL License – laisva, be komercinio savininkoGPL, priklauso Oracle (komercinės laidos)SSPL – nebe klasikinė atvirojo kodo licencija
EkosistemaGalingi plėtiniai (PostGIS, pgvector), palaikomas visuose ORMVisur paplitęs klasikiniame PHP/WordPress talpinimeStiprus su Node.js, siauresnis kitur
Tinkamumas e. komercijaiPuikus – nuoseklūs užsakymai, atsargos ir mokėjimaiGeras – istorinis standartas (Magento, WooCommerce)Lanksčiems kataloguose; užsakymų nuoseklumas reikalauja papildomų pastangų

Dažniausiai užduodami klausimai

Ar PostgreSQL veikia mano svetainės greitį?

Viešieji puslapiai pateikiami iš Next.js su talpykla, o indeksuotos PostgreSQL užklausos atsako per milisekundes. Suvokiamam greičiui daug didesnę reikšmę turi frontend ir vaizdai.

Kodėl ne WordPress su MySQL, kaip visi?

WordPress – PHP CMS su temomis ir įskiepiais, kuriuos reikia nuolat prižiūrėti ir atnaujinti. 4buildsite generuoja Next.js svetaines su PostgreSQL: be taisytinų įskiepių ir su mažiau saugumo spragų. MySQL nėra blogas pasirinkimas, tačiau PostgreSQL prideda indeksuojamą JSONB, geresnę pilnatekstę paiešką ir griežtesnį vientisumą, su ta pačia laisva licencija.

Kas nutinka mano duomenims, jei serveris sugenda?

PostgreSQL kiekvieną pakeitimą pirmiausia įrašo į WAL žurnalą, todėl paleidus iš naujo duomenų bazė atkuriama be sugadintų duomenų. Be to, duomenys laikomi pastoviuose tomuose, atskirtuose nuo programos, todėl platformos perkrovimas ar atnaujinimas jų neliečia.

Ar galiu eksportuoti savo duomenis, jei išeisiu iš 4buildsite?

Taip. Tavo duomenys yra PostgreSQL – pramonės standartiniame formate; produktus, užsakymus ir klientus galima eksportuoti įprastais formatais (CSV, SQL). Nėra nuosavybinio formato, kuris pririštų prie platformos.

Ar PostgreSQL susidoros, jei mano parduotuvė augs?

Taip, su labai dideliu rezervu. Instagram ir Reddit išplėtė PostgreSQL iki šimtų milijonų naudotojų, naudodami indeksus, partitioning ir skaitymo replikas – tos pačios technikos prieinamos ir 4buildsite platformoje. Internetinė parduotuvė PostgreSQL ribas pasiekia daug vėliau nei savo logistikos ribas.

Kiek man kainuoja PostgreSQL licencija?

Nieko. PostgreSQL turi laisvą licenciją (PostgreSQL License, BSD tipo), be mokesčių už serverį ar branduolį. 4buildsite platformoje duomenų bazė įtraukta į tavo planą kartu su talpinimu ir SSL – už ją atskirai nemoki nieko.

4b2b.net
Verslo ekosistema
4conta.ro
Buhalterinė apskaita
4invoices.net
Sąskaitų išrašymo programa
4expenses.net
Išlaidų valdymas
4notify.net
Pranešimai
4hosting.net
Svetainių talpinimas
4database.net
Duomenų bazės
4buildsite.net
Svetainių kūrimas
4myapp.net
Programėlių kūrimas
4avatars.net
DI avatarai
4chaty.net
DI pokalbių robotas
4webagency.net
Programa interneto agentūroms
4softedu.net
Svetainės švietimui
4softcrm.net
CRM platforma
4softerp.net
ERP sistema
4softhr.net
Personalo valdymas
4mystaff.net
Darbuotojų portalas
4myprojects.net
Projektų valdymas
4mycontracts.net
Sutartys
4docs.net
Dokumentų valdymas
4appointments.net
Vizitų registracija
4marketingonline.net
Rinkodara
4insurance.net
Draudimas
4property.net
Nekilnojamasis turtas
4lawyers.net
Programa advokatams
4mygarage.net
Autoservisas
4driving.net
Vairavimo mokyklos
4fleet.net
Autoparko valdymas
4myevents.net
Renginiai
4therapy.net
Terapija
4clinics.net
Klinikos
4dental.net
Odontologijos klinikos
4restaurants.net
Restoranai
4beautify.net
Grožio salonas
4gym.net
Sporto klubai
4guards.net
Apsaugos įmonės
4softvet.net
Veterinarijos klinikos
4softauto.net
Programinė įranga automobilių verslui
4construct.net
Statybos įmonės
4marketplace.net
Prekyvietė
4shopy.net
El. parduotuvė
4pricing.net
Kainų palyginimas
4salefood.net
Maisto pristatymas
4rentify.net
Nuoma
4transports.net
Transportas
4agencytravel.net
Kelionių agentūra
4hotel.net
Viešbučių valdymas
4ong.net
NVO valdymas