{"id":54366,"date":"2019-12-24T00:00:00","date_gmt":"2019-12-23T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster"},"modified":"2020-02-18T14:02:22","modified_gmt":"2020-02-18T11:02:22","slug":"kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","title":{"rendered":"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Tere, Habr.org kogukond. T\u00e4na alustavad \u00f5ppetunnid esimese r\u00fchma kursusel <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/nwhU\/\">\u00abPostgreSQL\u00bb<\/a><\/noindex>. Seoses sellega tahame r\u00e4\u00e4kida, kuidas k\u00e4is avatud veebiseminar selle kursuse kohta.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e66e0d4919d45284dbdc4696d6cab555.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=yiXP8ihL2eA\">j\u00e4rjekordne avatud \u00f5ppetund<\/a><\/noindex> r\u00e4\u00e4kisime, milliste v\u00e4ljakutsetega SQL-andmebaasid silmitsi seisavad pilvede ja Kubernetes\u2019i ajastul. Samuti k\u00e4sitlesime, kuidas SQL-andmebaasid kohanduvad ja muutuvad nende v\u00e4ljakutsete m\u00f5jul.<\/p>\n<p>Veebinari viibis <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/IVe0\/\">Valeriy Bezrukov<\/a><\/noindex>, Google Cloud Practice Delivery Manager EPAM Systems\u2019is.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Kui puud olid v\u00e4ikesed\u2026<\/h3>\n<p>\nAlustuseks tuletame meelde, kuidas toimus andmebaasihalduse valik eelmise sajandi l\u00f5pus. See ei tohiks olla raske, sest andmebaasi valik tol ajal algas ja l\u00f5ppes <b>Oracle<\/b>. <\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/5fdf02523892e7477fd47dd01eb21d04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n90ndate l\u00f5pus ja 2000. aastate alguses polnud valikut, kui r\u00e4\u00e4kida t\u00f6\u00f6stuslikest skaleeritavatest andmebaasidest. Jah, eksisteerisid IBM DB2, Sybase ja veel m\u00f5ned andmebaasid, mis tekkisid ja kadusid, kuid nad ei olnud Oracle'i taustal kuigi m\u00e4rgatavad. Vastavalt sellele olid siis aegade inseneride oskused rohkem-v\u00e4hem seotud selle ainsa valikuga, mis olemas oli.<\/p>\n<p>Oracle DBA pidi oskama:<\/p>\n<ul>\n<li> installima Oracle Server'i jaotist;<\/li>\n<li> konfigureerima Oracle Server'i:<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>init.ora;<\/li>\n<li>listener.ora;<\/li>\n<\/ul>\n<p>\n\u2014 looma:<\/p>\n<ul>\n<li>andmebaasi ruume;<\/li>\n<li>skeeme;<\/li>\n<li>kasutajaid;<\/li>\n<\/ul>\n<p>\u2014 tegema varundamist ja taastamist;<br \/>\n\u2014 teostama j\u00e4lgimist;<br \/>\n\u2014 tegelema suboptimalsete p\u00e4ringutega.<\/p>\n<p>Samal ajal ei olnud Oracle DBA-lt eriti n\u00f5utud:<\/p>\n<ul>\n<li>oskama valida optimaalse andmebaasi v\u00f5i teisi andmete salvestamise ja t\u00f6\u00f6tlemise tehnoloogiaid;<\/li>\n<li>tagama k\u00f5rge k\u00e4ttesaadavuse ja horisontaalse skaleeritavuse (see ei olnud alati DBA mure);<\/li>\n<li>valdama h\u00e4sti valdkonda, infrastruktuuri, rakendusarkitektuuri, ops\u00fcsteemi;<\/li>\n<li>teostama andmete laadimist ja laadimist, andmete migreerimist erinevate andmebaaside vahel.<\/li>\n<\/ul>\n<p>\u00dcldiselt, kui r\u00e4\u00e4kida valikust nendel aegadel, meenutab see valikut N\u00f5ukogude poes 80ndate l\u00f5pus:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/70b37faf295170d8507d5c605f4b2047.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Meie aeg<\/h3>\n<p>\nSellest ajast on muidugi puudel kasvanud, maailm on muutunud ja olukord on kuidagi selline:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e8698d658bd09e0071f02a672a5cb81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAndmebaaside turg on samuti muutunud, mida n\u00e4itab h\u00e4sti Gartneri v\u00e4rske raport:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/745f3969a3ad2e65162ef41cda6c0658.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiinjuures ei saa mainimata j\u00e4tta, et oma ni\u0161i on leidnud pilved, mille populaarsus kasvab. Kui lugeda sama Gartneri raportit, n\u00e4eme j\u00e4rgmisi j\u00e4reldusi:<\/p>\n<ol>\n<li>Palju kliente on teel oma rakenduste pilve migreerimise poole. <\/li>\n<li>Uued tehnoloogiad ilmuvad esmalt pilve ning pole kindel, et need kunagi \u00fcleminekut mittepilvisele infrastruktuurile teevad.<\/li>\n<li>Pay-as-you-go hinnakujundusmudel on muutunud p\u00f5him\u00f5tteliseks tavaks. K\u00f5ik soovivad maksta ainult selle eest, mida nad kasutavad, ja see pole enam ainult trend, vaid t\u00f5siasi. <\/li>\n<\/ol>\n<p><\/p>\n<h3>Mis n\u00fc\u00fcd?<\/h3>\n<p>\nT\u00e4na oleme k\u00f5ik pilves. Meie k\u00fcsimused puudutavad valikuid, ja need valikud on tohutud, isegi kui vaatleme ainult On-premises andmebaasitehnoloogiate valikut. Samuti on meil olemas hallatud teenused ja SaaS. Seega muutub valik igal aastal ainult keerulisemaks.<\/p>\n<p>Valikute k\u00f5rval tegutsevad ka <b>piiravad tegurid<\/b>:<\/p>\n<ul>\n<li><b>hind<\/b>. Paljud tehnoloogiad on endiselt tasulised;<\/li>\n<li><b>oskused<\/b>. Kui r\u00e4\u00e4gime avatud l\u00e4htekoodiga tarkvarast, tekib oskuste k\u00fcsimus, kuna tasuta tarkvara n\u00f5uab selle kasutajalt ja haldajalt piisavat kompetentsi;<\/li>\n<li><b>funktsionaalsus<\/b>. K\u00f5ik teenused, mis on saadaval pilves ja on loodud n\u00e4iteks Postgresi alusel, ei oma tingimata samu funktsioone kui Postgres On-premises. See on oluline tegur, mida tuleb teada ja m\u00f5ista. Veelgi enam, see tegur muutub t\u00e4htsamaks kui teadmised m\u00f5nest varjatud v\u00f5imalusest teatud andmebaasihalduse s\u00fcsteemis. <\/li>\n<\/ul>\n<p>\n<b>Mida oodatakse DA\/DE-lt:<\/b><\/p>\n<ul>\n<li>head arusaamist teema valdkonnast ja rakendusarhitektuurist;<\/li>\n<li>oskus \u00f5igesti valida sobiv andmebaasitehnoloogia arvestades seatud \u00fclesannet;<\/li>\n<li>oskus valida optimaalse rakendamise meetod valitud tehnoloogia jaoks olemasolevate piirangute kontekstis;<\/li>\n<li>oskus teostada andmete \u00fcleviimist ja migreerimist;<\/li>\n<li>oskus rakendada ja hallata valitud lahendusi.<\/li>\n<\/ul>\n<p>\nAllj\u00e4rgnev n\u00e4ide <b>GCP-lt<\/b> n\u00e4itab, kuidas tehnoloogia valik andmete t\u00f6\u00f6tlemiseks s\u00f5ltub nende struktuurist:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/fe324d8af9ed8f6afb58ed930dc21327.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPange t\u00e4hele, et skeemist puudub PostgreSQL, sest see peitub terminoloogias <b>Cloud SQL<\/b>. Ja kui me satume Cloud SQL-i, peame j\u00e4lle valiku tegema:<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/bdf523e0b10fbfe753318a02a686a5af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTuleb m\u00e4rkida, et see valik ei ole alati arusaadav, seet\u00f5ttu juhinduvad rakenduse arendajad sageli intuitsioonist. <\/p>\n<p><b>Kokku:<\/b><\/p>\n<ol>\n<li>Mida kaugemale, seda aktuaalsemaks muutub k\u00fcsimus valikust. Ja isegi kui vaadata ainult GCP-d, siis managed teenused ja SaaS, siis m\u00f5ni mainimine RDBMS-ist ilmub alles 4. etapis (ja seal on k\u00f5rval Spanner). Pluss, PostgreSQL-i valik ilmub \u00fcldse alles 5. etapis, ja seal on veel MySQL ja SQL Server, seega <b>k\u00f5ike on palju, aga valida tuleb<\/b>. <\/li>\n<li>Ei saa unustada ka piiranguid kiusatuste taustal. Peamiselt tahavad k\u00f5ik Spannerit, aga see on kallis. L\u00f5puks on t\u00fc\u00fcpiline p\u00e4ring umbes selline: <i>\u201ePalun tehke meile Spanner, aga Cloud SQL-i hinnaga, te ju olete professionaalid!\u201c<\/i><\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/cc656b46d37d08fc6aeca937e1e9085b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Aga mida siis teha?<\/h3>\n<p>\nIlma l\u00f5pliku t\u00f5e pretensioonita, \u00fctleme j\u00e4rgmist:<\/p>\n<p><b>Tuleb muutma l\u00e4henemist koolitusele:<\/b><\/p>\n<ul>\n<li>ei ole m\u00f5tet \u00f5petada, nagu varem DBA-sid \u00f5petati;<\/li>\n<li>\u00fche toote teadmised ei ole enam piisavad;<\/li>\n<li>ja tundma k\u00fcmneid \u00fchel tasemel ei ole v\u00f5imalik.<\/li>\n<\/ul>\n<p>\nTuleb teada mitte ainult ja mitte ainult toodet, vaid:<\/p>\n<ul>\n<li>kasutuse juhtumit;<\/li>\n<li>erinevaid rakenduse meetodeid;<\/li>\n<li>iga meetodi eeliseid ja puudusi;<\/li>\n<li>sarnased ja alternatiivsed tooted, et teha teadlik ja optimaalne valik, mitte alati tuttava toote kasuks.<\/li>\n<\/ul>\n<p>\nLisaks on oluline osata andmeid migreerida ja m\u00f5ista ETL-iga integreerimise p\u00f5hialuseid.<\/p>\n<h3>Tegeliku juhtumi n\u00e4ide<\/h3>\n<p>\nHiljuti tuli mul luua mobiilirakenduse tausts\u00fcsteem. Projekti alguseks oli tausts\u00fcsteem juba v\u00e4lja t\u00f6\u00f6tatud ja kasutuselev\u00f5tmiseks valmis, ning arendajate meeskond kulutas sellele projektile umbes kaks aastat. Seet\u00f5ttu seati eesm\u00e4rgiks:<\/p>\n<ul>\n<li>luua CI\/CD;<\/li>\n<li>teha arhitektuuri \u00fclevaatus;<\/li>\n<li>k\u00f5ik see k\u00e4ivitada. <\/li>\n<\/ul>\n<p>\nRakendus ise oli mikroteenuste arhitektuuri p\u00f5hjal ja kood Python\/Django keeles kirjutatud nullist ning koheselt GCP-sse. Sihtgrupi osas eeldati, et sihitud on kaks piirkonda \u2014 USA ja Euroopa, ning liiklus jaotati Global Load Balancer'i kaudu. K\u00f5ik t\u00f6\u00f6koormused ja arvutuslik koormus t\u00f6\u00f6tasid Google Kubernetes Engine'is. <\/p>\n<p>Andmete osas olid kolm struktuuri:<\/p>\n<ul>\n<li>Cloud Storage;<\/li>\n<li>Datastore;<\/li>\n<li>Cloud SQL (PostgreSQL).<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e6e38b1d861b2871edf20fb09378b491.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00f5ib esitada k\u00fcsimus, miks valiti Cloud SQL? T\u00f5tt-\u00f6elda tekitab selline k\u00fcsimus viimastel aastatel veidi ebamugavust \u2014 tundub, et inimesed on hakanud relatsiooniliste andmebaaside suhtes h\u00e4benema, kuid sellegipoolest kasutavad nad neid aktiivselt ;-). <\/p>\n<p>Mis puutub meie juhtumisse, siis valiti Cloud SQL j\u00e4rgmiste p\u00f5hjuste t\u00f5ttu:<\/p>\n<ol>\n<li>Nagu mainitud, arendati rakendust Django abil, milles on mudel SQL-andmebaasist p\u00fcsivate andmete esitamiseks Pythonis (Django ORM).<\/li>\n<li>Raamistik toetas piisavalt l\u00f5plikku nimekirja andmebaasi haldamise s\u00fcsteemidest:<\/li>\n<\/ol>\n<p><\/p>\n<ul>\n<li>PostgreSQL;<\/li>\n<li>MariaDB;<\/li>\n<li>MySQL;<\/li>\n<li>Oracle;<\/li>\n<li>SQLite.<\/li>\n<\/ul>\n<p>\nSeega valiti PostgreSQL sellest loendist pigem intuitsioonist (ega ju Oracle'i valima).<\/p>\n<p><b>Mida oli puudu:<\/b><\/p>\n<ul>\n<li>rakendus oli juurutatud vaid kahes piirkonnas, kuid plaanis oli kolmas (Aasia);<\/li>\n<li>Andmebaas asus P\u00f5hja-Ameerika piirkonnas (Iowa);<\/li>\n<li>klient oli mures v\u00f5imalike <b>ligip\u00e4\u00e4su viivituste<\/b> kohta Euroopast ja Aasiast ning <b>teenusekatkestuste <\/b><b>riski<\/b> andmebaasi seiskamise korral. <\/li>\n<\/ul>\n<p>\nKuigi Django suudab samal ajal t\u00f6\u00f6tada mitme andmebaasiga ning jagada neid lugemise ja kirjutamise vahel, ei olnud rakenduses andmete hulk kuigi suur (\u00fcle 90% on lugemine). \u00dcldiselt, kui oleks v\u00f5imalik teha <b>read-replika peamisest andmebaasist Euroopas ja Aasias,<\/b>, oleks see kompromisslahendus. Mis siin siis nii keeruline on?<\/p>\n<p>Keerus seisnes selles, et klient ei soovinud loobuda hallatavate teenuste ja Cloud SQL-i kasutamisest. Praegusel hetkel on Cloud SQL-i v\u00f5imalused piiratud. Cloud SQL toetab k\u00f5rget saadavust (HA) ja lugemisreplikat (RR), kuid sama RR-i toetatakse ainult \u00fches regioonis. Ameerika regioonis andmebaasi luues ei saa Cloud SQL-i abil teha lugemisreplikat Euroopa regioonis, kuigi PostgreSQL ise seda ei takista. Suhtlemine Google'i t\u00f6\u00f6tajatega ei viisnud kuhugi ja l\u00f5ppes lubadustega stiilis \u201eteame probleemi ja t\u00f6\u00f6tame selle kallal, kunagi k\u00fcsimus lahendatakse.\" <\/p>\n<p>Kui loetleda Cloud SQL-i v\u00f5imalusi punktide kaupa, siis need n\u00e4eksid v\u00e4lja umbes nii:<\/p>\n<p><b>1. K\u00f5rge saadavus (HA):<\/b><\/p>\n<ul>\n<li>\u00fche piirkonna raames;<\/li>\n<li>diskireplikatsiooni abil;<\/li>\n<li>PostgreSQL mehhanisme ei kasutata;<\/li>\n<li>v\u00f5ib olla automaatne ja k\u00e4sitsi haldus \u2014 failover\/failback;<\/li>\n<li>andmebaas on \u00fclemineku ajal mitu minutit maas.<\/li>\n<\/ul>\n<p>\n<b>2. Loe Replica (RR):<\/b><\/p>\n<ul>\n<li>\u00fche piirkonna raames;<\/li>\n<li>kuum standby;<\/li>\n<li>PostgreSQL voogedastuse replikatsioon.<\/li>\n<\/ul>\n<p>\nLisaks, nagu tavaks, seisab tehnoloogia valimisel silmitsi igasuguste <b>piirangutega.<\/b>:<\/p>\n<ul>\n<li>tellija ei soovinud luua uusi objekte ja kasutada IaaS-i, v\u00e4lja arvatud GKE kaudu;<\/li>\n<li>tellija ei tahaks kasutusele v\u00f5tta iseteenindust PostgreSQL\/MySQL jaoks;<\/li>\n<li>ja \u00fcldiselt sobiks Google Spanner h\u00e4sti, kui mitte tema hind, t\u00f5si, Django ORM ei saa sellega t\u00f6\u00f6tada, aga muidu on see hea asi.<\/li>\n<\/ul>\n<p>\nArvestades olukorda, esitas tellija j\u00e4rgneva k\u00fcsimuse: <i>\u201eKas saate midagi sarnast teha, et see oleks nagu Google Spanner, aga t\u00f6\u00f6taks ka Django ORM-iga?\u201c<\/i><\/p>\n<h3>Lahenduse variant nr 0<\/h3>\n<p>\nEsimene m\u00f5te, mis p\u00e4he tuli:<\/p>\n<ul>\n<li>j\u00e4\u00e4da CloudSQL-i piiresse;<\/li>\n<li>ehitatud replikatsiooni piirkondade vahel ei tule mingisugusel kujul;<\/li>\n<li>\u00fcritada lisada replikat olemasolevale Cloud SQL by PostgreSQL-ile;<\/li>\n<li>kusagil ja kuidagi k\u00e4ivitada PostgreSQL-i instants, kuid v\u00e4hemalt masterit mitte puudutada.<\/li>\n<\/ul>\n<p>\nKahjuks selgus, et seda ei saa teha, kuna juurdep\u00e4\u00e4s hostile puudub (see on \u00fcldse teises projektis) \u2014 pg_hba jne, ja veel puudub juurdep\u00e4\u00e4s superuser'ina.<\/p>\n<h3>Lahenduse variant nr 1<\/h3>\n<p>\nP\u00e4rast j\u00e4rjekordseid m\u00f5tteid ja varasemaid asjaolusid on m\u00f5tlemine pisut muutunud:<\/p>\n<ul>\n<li>p\u00fc\u00fcame endiselt j\u00e4\u00e4da CloudSQL piiresse, kuid liigume \u00fcle MySQL-le, kuna Cloud SQL by MySQL-l on v\u00e4lismaja, mis:<\/li>\n<\/ul>\n<p>\n\u2014 on proxy v\u00e4lisele MySQL-le;<br \/>\n\u2014 n\u00e4eb v\u00e4lja nagu MySQL instants;<br \/>\n\u2014 on loodud andmete migreerimiseks teistest pilvedest v\u00f5i kohalike serverite pealt.<\/p>\n<p>Kuna MySQL replikatsiooni seadistamine ei n\u00f5ua juurdep\u00e4\u00e4su hostile, t\u00f6\u00f6tas see p\u00f5him\u00f5tteliselt, kuid v\u00e4ga ebastabiilselt ja ebamugavalt. Ja kui edasi liikuda, siis muutus see t\u00f5eliselt hirmutavaks, kuna kogu struktuur oli v\u00e4lja arendatud terraformiga, ja \u00e4kki selgus, et v\u00e4lismaja ei ole terraformiga toetatud. Jah, Google'il on CLI, kuid millegip\u00e4rast t\u00f6\u00f6tas ka siin k\u00f5ik vahelduva eduga \u2014 siis loobub, siis ei loobu. V\u00f5ib-olla sellep\u00e4rast, et CLI on m\u00f5eldud andmete migreerimiseks v\u00e4ljastpoolt, mitte replikatsioonideks.<\/p>\n<p>Sellega sai selgeks, et Cloud SQL ei sobi \u00fcldse. Nagu \u00f6eldakse, oleme teinud k\u00f5ik, mis suudame. <\/p>\n<h3>Lahenduse variant nr 2<\/h3>\n<p>\nKuna Cloud SQL piires ei \u00f5nnestunud j\u00e4\u00e4da, p\u00fc\u00fcdsime s\u00f5nastada n\u00f5udmised kompromisslahendusele. N\u00f5udmised osutusid j\u00e4rgmisteks:<\/p>\n<ul>\n<li>\u0440\u0430\u0431\u043e\u0442\u0430 \u0432 Kubernetes, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 Kubernetes (DCS, &#8230;) \u0438 GCP (LB, &#8230;);<\/li>\n<li>\u00fclekaalu puudumine mitmete tarbetute asjade osas pilves nagu HA proxy;<\/li>\n<li>v\u00f5imalus k\u00e4ivitada peamises piirkonnas HA PostgreSQL v\u00f5i MySQL; teistes piirkondades \u2014 HA p\u00f5hipiirkonna RR pluss selle koopia (usaldusv\u00e4\u00e4rsuse tagamiseks);<\/li>\n<li>multi master (kui sellega \u00fchendust v\u00f5tta ei olnud soovitav, aga see ei olnud v\u00e4ga p\u00f5him\u00f5tteline)<\/li>\n<\/ul>\n<p>. <br \/>\nNende n\u00f5uete tulemusel on l\u00f5puks silmadele ilmunud sobivad<b>andmebaasi ja raamistiku valikud<\/b>:<\/p>\n<ul>\n<li>MySQL Galera;<\/li>\n<li>CockroachDB;<\/li>\n<li>PostgreSQL t\u00f6\u00f6riistad<\/li>\n<\/ul>\n<p>:<br \/>\n\u2014 pgpool-II;<br \/>\n\u2014 Patroni.<\/p>\n<h3>MySQL Galera<\/h3>\n<p>\nMySQL Galera tehnoloogia on v\u00e4lja t\u00f6\u00f6tatud ettev\u00f5ttes Codership ja see on plugin InnoDB jaoks. Omadused:<\/p>\n<ul>\n<li>multi master;<\/li>\n<li>s\u00fcnkrone replikatsioon;<\/li>\n<li>lugemine igast s\u00f5lmest;<\/li>\n<li>kirjutamine igasse s\u00f5lme;<\/li>\n<li>sisseehitatud HA mehhanism;<\/li>\n<li>Bitnami poolt on saadaval Helm chart.<\/li>\n<\/ul>\n<p><\/p>\n<h3>CockroachDB<\/h3>\n<p>\nKirjelduse j\u00e4rgi on see asi t\u00e4iesti fantastiline ja tegu on open source projektiga, mis on kirjutatud Go keeles. Peamine osaleja on Cockroach Labs (loodud Google'ist p\u00e4rit inimeste poolt). See relatsiooniline andmebaasi haldur on algselt loodud olema jaotatud (horisontaalse skaleeritavusega \u201ekarbist v\u00e4lja\u201d) ja vigadekindel. Selle autorid on seadnud sihiks \u201e\u00fchendada SQL-i funktsionaalsuse rikkus horisontaalse k\u00e4ttesaadavusega, mis on iseloomulik NoSQL lahendustele\u201d.<\/p>\n<p>Mugav boonus on PostgreSQL-i \u00fchendusprotokolli tugi. <\/p>\n<h3>Pgpool<\/h3>\n<p>\nSee on PostgreSQL-i peal olev lisand, mis tegelikult on uus entiteet, mis v\u00f5tab enda alla k\u00f5ik \u00fchendused ja t\u00f6\u00f6tleb need. Sellel on oma koormuse tasakaalustaja ja parsi, seda litsentseeritakse BSD litsentsi alusel. Pakub laia valikut v\u00f5imalusi, kuid tundub veidi hirmutav, sest uue entiteedi olemasolu v\u00f5iks olla m\u00f5ningate lisaseikluste allikaks. <\/p>\n<h3>Patroni<\/h3>\n<p>\nSee oli viimane asi, millele ma pilku heitsin, ja osutus, et see ei olnud asjata. Patroni on avatud l\u00e4htekoodiga utiliit, mis p\u00f5him\u00f5tteliselt esindab Pythonil p\u00f5hinevat deemonit, mis v\u00f5imaldab automaatselt hallata PostgreSQL klastreid erinevate replikatsioonit\u00fc\u00fcpide ja automaatsete rollide \u00fcleminekuga. See oli v\u00e4ga huvitav leid, kuna see integreerub h\u00e4sti Kubernetesega ja ei too kaasa uusi entiteete. <\/p>\n<h3>Mida l\u00f5puks valisime<\/h3>\n<p>\nValik ei tulnud kergelt:<\/p>\n<ol>\n<li><b>CockroachDB <\/b>\u2014 t\u00f5eline, aga veidi hirmutav;<\/li>\n<li><b>MySQL Galera<\/b> \u2014 ka \u00fcsna hea, kasutatakse laialdaselt, aga MySQL;<\/li>\n<li><b>Pgpool <\/b>\u2014 liiga palju \u00fcleliigseid entiteete, integreerub halvemini pilve ja K8s-iga;<\/li>\n<li><b>Patroni <\/b>\u2014 suurep\u00e4rane integreerimine K8s-iga, ei ole \u00fcleliigseid entiteete, integreerub h\u00e4sti GCP LB-ga.<\/li>\n<\/ol>\n<p>\nSeega langetati valik Patroni kasuks. <\/p>\n<h3>J\u00e4reldused<\/h3>\n<p>\nOn aeg teha l\u00fchikokkuv\u00f5tteid. Jah, IT-infrastruktuuri maailm on m\u00e4rkimisv\u00e4\u00e4rselt muutunud ja see on alles algus. Ja kui varem olid pilved lihtsalt teistsugune infrastruktuuri t\u00fc\u00fcp, siis n\u00fc\u00fcd on k\u00f5ik teisiti. Veelgi enam, pilvede uuendused ilmuvad pidevalt, neid tulevad ja v\u00f5ib-olla ilmuvad need ainult pilvedes ning hiljem, alustades idufirmade poolt, viiakse need kohalikele s\u00fcsteemidele.<\/p>\n<p>Mis on SQL, SQL j\u00e4\u00e4b ellu. See t\u00e4hendab, et PostgreSQL ja MySQL tuleb teada ning osata nendega t\u00f6\u00f6tada, aga veelgi olulisem on osata neid \u00f5igesti rakendada.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/481644\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c, \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c SQL-\u0431\u0430\u0437\u044b \u0432 \u044d\u0440\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 Kubernetes. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQL \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54366","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c, \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c SQL-\u0431\u0430\u0437\u044b \u0432 \u044d\u0440\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 Kubernetes. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQL \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u0432\u044b\u0436\u0438\u0442\u044c SQL-\u0431\u0430\u0437\u0435 \u0432 21 \u0432\u0435\u043a\u0435: \u043e\u0431\u043b\u0430\u043a\u0430, Kubernetes \u0438 PostgreSQL multimaster | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c, \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c SQL-\u0431\u0430\u0437\u044b \u0432 \u044d\u0440\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 Kubernetes. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQL \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-23T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kuidas ellu j\u00e4\u00e4da SQL-andmebaasil 21. sajandil: pilved, Kubernetes ja PostgreSQL multimaster | ProHoster","description":"Tere, Hubi inimesed. T\u00e4na algavad \u00f5ppetunnid PostgreSQL kursuse esimeses grupis. Seet\u00f5ttu tahame teile r\u00e4\u00e4kida, kuidas toimus avatud veebiseminar selle kursuse kohta. J\u00e4rjekordsel avatud \u00f5ppetunnil r\u00e4\u00e4kisime, milliste v\u00e4ljakutsetega kohtusid SQL-andmebaasid pilvede ja Kubernetes'e ajastul. Samuti vaatasime, kuidas SQL-andmebaasid kohanduvad ja muteeruvad selle m\u00f5ju all.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u0432\u044b\u0436\u0438\u0442\u044c SQL-\u0431\u0430\u0437\u0435 \u0432 21 \u0432\u0435\u043a\u0435: \u043e\u0431\u043b\u0430\u043a\u0430, Kubernetes \u0438 PostgreSQL multimaster | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c, \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0432\u0435\u0431\u0438\u043d\u0430\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c SQL-\u0431\u0430\u0437\u044b \u0432 \u044d\u0440\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 Kubernetes. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 SQL \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-23T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54366","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 11:06:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:30:12","updated":"2026-01-24 11:06:21"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=54366"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54366\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=54366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=54366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=54366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}