{"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\/lv\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster","title":{"rendered":"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Sveiki, Habr\u0101rie\u0161i. \u0160odien s\u0101kas nodarb\u012bbas pirmaj\u0101 kursa grup\u0101. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/nwhU\/\">\u00abPostgreSQL\u00bb<\/a><\/noindex>. T\u0101p\u0113c m\u0113s v\u0113lamies past\u0101st\u012bt jums par to, k\u0101 norit\u0113ja atkl\u0101tais vebin\u0101rs par \u0161o kursu.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e66e0d4919d45284dbdc4696d6cab555.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=yiXP8ihL2eA\">n\u0101kamaj\u0101 atkl\u0101taj\u0101 stund\u0101<\/a><\/noindex> run\u0101j\u0101m par to, ar k\u0101diem izaicin\u0101jumiem SQL datu b\u0101zes saskaras m\u0101ko\u0146u un Kubernetes laikmet\u0101. Turkl\u0101t apl\u016bkoj\u0101m, k\u0101 SQL datu b\u0101zes piel\u0101gojas un main\u0101s \u0161o izaicin\u0101jumu ietekm\u0113.<\/p>\n<p>Vebin\u0101ru vad\u012bja <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/IVe0\/\">Val\u0113rijs Bezrukovs<\/a><\/noindex>, Google Cloud Practice Delivery Manager uz\u0146\u0113mum\u0101 EPAM Systems.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Kad koki bija mazi...<\/h3>\n<p>\nS\u0101ksim ar to, ka atceramies, k\u0101 pirms\u0101kumos izv\u0113l\u0113j\u0101mies DBMS pag\u0101ju\u0161\u0101 gadsimta beig\u0101s. Tom\u0113r tas neb\u016bs gr\u016bti, jo izv\u0113le DBMS tajos laikos s\u0101k\u0101s un beidz\u0101s <b>Oracle<\/b>. <\/p>\n<p><img decoding=\"async\" alt=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/5fdf02523892e7477fd47dd01eb21d04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n90. gadu beig\u0101s \u2013 00. gadu s\u0101kum\u0101 b\u016bt\u012bb\u0101 nebija \u012bpa\u0161a izv\u0113les, ja run\u0101jam par r\u016bpniecisk\u0101m m\u0113rogoj\u0101m datu b\u0101z\u0113m. J\u0101, past\u0101v\u0113ja IBM DB2, Sybase un v\u0113l da\u017ei citi datu b\u0101zu risin\u0101jumi, kas par\u0101d\u012bj\u0101s un pazuda, bet kopum\u0101 tie nebija tik redzami pret Oracle. L\u012bdz ar to to laiku in\u017eenieru prasmes bija saist\u012btas ar to vien\u012bgo izv\u0113li, kas past\u0101v\u0113ja.<\/p>\n<p>Oracle DBA vajadz\u0113ja sp\u0113t:<\/p>\n<ul>\n<li> instal\u0113t Oracle Server no izplat\u012bjuma;<\/li>\n<li> konfigur\u0113t Oracle Server:<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>init.ora;<\/li>\n<li>listener.ora;<\/li>\n<\/ul>\n<p>\n\u2013 rad\u012bt:<\/p>\n<ul>\n<li>tabulu telpas;<\/li>\n<li>sh\u0113mas;<\/li>\n<li>lietot\u0101jus;<\/li>\n<\/ul>\n<p>\u2013 veikt dubl\u0113\u0161anu un atjauno\u0161anu;<br \/>\n\u2013 veikt monitoringu;<br \/>\n\u2013 c\u012bn\u012bties ar neoptim\u0101liem vaic\u0101jumiem.<\/p>\n<p>Tom\u0113r no Oracle DBA \u012bpa\u0161i nepras\u012bja:<\/p>\n<ul>\n<li>sp\u0113t izv\u0113l\u0113ties optim\u0101lu DBMS vai citu datu glab\u0101\u0161anas un apstr\u0101des tehnolo\u0123iju;<\/li>\n<li>nodro\u0161in\u0101t augstu pieejam\u012bbu un horizont\u0101lo m\u0113rogojam\u012bbu (tas ne vienm\u0113r bija DBA jaut\u0101jums);<\/li>\n<li>labi p\u0101rzin\u0101t priek\u0161metu jomu, infrastrukt\u016bru, lietojumprogrammu arhitekt\u016bru, OS;<\/li>\n<li>veikt datu iel\u0101di un izl\u0101di, migr\u0101ciju starp da\u017e\u0101d\u0101m DBMS.<\/li>\n<\/ul>\n<p>Ja run\u0101jam par izv\u0113li tajos laikos, t\u0101 atg\u0101din\u0101ja izv\u0113li padomju veikal\u0101 80. gadu beig\u0101s:<\/p>\n<p><img decoding=\"async\" alt=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/70b37faf295170d8507d5c605f4b2047.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>M\u016bsu laiks<\/h3>\n<p>\nKop\u0161 t\u0101 laika, protams, koki ir paaugu\u0161ies, pasaule ir main\u012bjusies, un tagad ir apm\u0113ram t\u0101:<\/p>\n<p><img decoding=\"async\" alt=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e8698d658bd09e0071f02a672a5cb81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIr main\u012bju\u0161\u0101s ar\u012b DBMS tirgus, ko labi par\u0101da jaun\u0101 Gartner uz\u0146\u0113muma zi\u0146ojums:<\/p>\n<p><img decoding=\"async\" alt=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/745f3969a3ad2e65162ef41cda6c0658.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0160eit nevar nepiemin\u0113t, ka savu ni\u0161u ie\u0146em m\u0101ko\u0146i, kuru popularit\u0101te pieaug. Ja izlas\u012bsiet to pa\u0161u Gartner zi\u0146ojumu, m\u0113s redz\u0113sim \u0161\u0101dus secin\u0101jumus:<\/p>\n<ol>\n<li>Daudzi klienti ir ce\u013c\u0101 uz lietojumprogrammu p\u0101rcel\u0161anu m\u0101ko\u0146os. <\/li>\n<li>Jaunas tehnolo\u0123ijas vispirms par\u0101d\u0101s m\u0101ko\u0146os, un nav skaidrs, vai t\u0101s visp\u0101r k\u0101dreiz p\u0101ries uz ne-m\u0101ko\u0146a infrastrukt\u016bru.<\/li>\n<li>Pay-as-you-go cenas noteik\u0161anas modelis ir k\u013cuvis ierasts. Visi v\u0113las maks\u0101t tikai par to, ko izmanto, un tas jau nav pat trends, bet gan vienk\u0101r\u0161a fakta konstat\u0101cija. <\/li>\n<\/ol>\n<p><\/p>\n<h3>Ko tagad?<\/h3>\n<p>\nM\u016bsdien\u0101s m\u0113s visi esam m\u0101ko\u0146os. Bet jaut\u0101jumi, kas mums rodas, ir saist\u012bti ar izv\u0113li. Un t\u0101s ir pla\u0161as, pat ja run\u0101jam tikai par DBMS tehnolo\u0123iju izv\u0113li On-premises form\u0101t\u0101. Turkl\u0101t mums ir ar\u012b p\u0101rvald\u012bti pakalpojumi un SaaS. T\u0101d\u0113j\u0101di izv\u0113le katru gadu k\u013c\u016bst aizvien sare\u017e\u0123\u012bt\u0101ka.<\/p>\n<p>L\u012bdztekus izv\u0113les jaut\u0101jumiem darbojas ar\u012b <b>ierobe\u017eojo\u0161ie faktori<\/b>:<\/p>\n<ul>\n<li><b>cena<\/b>. Daudzas tehnolo\u0123ijas joproj\u0101m maks\u0101 naudu;<\/li>\n<li><b>prasmes<\/b>. Run\u0101jot par br\u012bv\u0101 programmat\u016bra, rodas jaut\u0101jums par prasm\u0113m, jo bezmaksas programmat\u016bra prasa no cilv\u0113kiem, kuri to ievie\u0161 un ekspluat\u0113, pietiekamu kompetenci;<\/li>\n<li><b>funkcionalit\u0101te<\/b>. Ne visiem pakalpojumiem, kas pieejami m\u0101ko\u0146os un b\u016bv\u0113ti, piem\u0113ram, uz Postgres pamata, ir t\u0101s pa\u0161as iesp\u0113jas k\u0101 Postgres On-premises. Tas ir b\u016btisks faktors, kas j\u0101zina un j\u0101saprot. Turkl\u0101t \u0161is faktors ieg\u016bst v\u0113l liel\u0101ku noz\u012bmi nek\u0101 zin\u0101\u0161anas par k\u0101d\u0101m nosl\u0113pt\u0101m iesp\u0113j\u0101m atsevi\u0161\u0137ai DBMS. <\/li>\n<\/ul>\n<p>\n<b>Ko pa\u0161laik sagaida no DA\/DE:<\/b><\/p>\n<ul>\n<li>labas izpratnes par tematu un pielietojuma arhitekt\u016bru;<\/li>\n<li>sp\u0113ju pareizi izv\u0113l\u0113ties atbilsto\u0161u DBMS tehnolo\u0123iju, \u0146emot v\u0113r\u0101 uzdoto uzdevumu;<\/li>\n<li>sp\u0113ju izveidot optim\u0101lo metodi izv\u0113l\u0113t\u0101s tehnolo\u0123ijas \u012bsteno\u0161anai eso\u0161o ierobe\u017eojumu kontekst\u0101;<\/li>\n<li>sp\u0113ju p\u0101rvietot un migr\u0113t datus;<\/li>\n<li>sp\u0113ju \u012bstenot un ekspluat\u0113t izv\u0113l\u0113tos risin\u0101jumus.<\/li>\n<\/ul>\n<p>\nZem\u0101k min\u0113tais piem\u0113rs <b>uz GCP b\u0101zes<\/b> demonstr\u0113, k\u0101 tiek veikta datu tehnolo\u0123iju izv\u0113le atkar\u012bb\u0101 no to strukt\u016bras:<\/p>\n<p><img decoding=\"async\" alt=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/fe324d8af9ed8f6afb58ed930dc21327.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL\u016bdzu, \u0146emiet v\u0113r\u0101, ka sh\u0113m\u0101 nav PostgreSQL, jo tas sl\u0113pjas zem terminolo\u0123ijas <b>M\u0101ko\u0146u SQL<\/b>. Un kad m\u0113s non\u0101kam Cloud SQL, mums atkal j\u0101veic izv\u0113le:<\/p>\n<p><img decoding=\"async\" alt=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/bdf523e0b10fbfe753318a02a686a5af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJ\u0101atz\u012bm\u0113, ka \u0161\u012b izv\u0113le ne vienm\u0113r ir skaidra, t\u0101d\u0113\u013c lietojumprogrammo\u0161anas izstr\u0101d\u0101t\u0101ji bie\u017ei vad\u0101s p\u0113c intuit\u012bvas saj\u016btas. <\/p>\n<p><b>Kop\u0101:<\/b><\/p>\n<ol>\n<li>Jo t\u0101l\u0101k, jo aktu\u0101l\u0101ks k\u013c\u016bst izv\u0113les jaut\u0101jums. Un pat ja skat\u0101mies tikai uz GCP, p\u0101rvald\u012btajiem pakalpojumiem un SaaS, tad k\u0101ds RDBMS piemin\u0113jums par\u0101d\u0101s tikai 4. sol\u012b (un tur blakus ir Spanner). Turkl\u0101t PostgreSQL izv\u0113le par\u0101d\u0101s visp\u0101r tikai 5. sol\u012b, un tur blakus v\u0113l ir MySQL un SQL Server, tas ir. <b>Visam ir daudz, ta\u010du j\u0101izv\u0113las.<\/b>. <\/li>\n<li>Nedr\u012bkst aizmirst par ierobe\u017eojumiem, kas par\u0101d\u0101s k\u0101 k\u0101rdin\u0101jumi. Pamat\u0101 visi grib Spanner, bet tas ir d\u0101rgs. Rezult\u0101t\u0101 tipisks piepras\u012bjums izskat\u0101s apm\u0113ram \u0161\u0101di: <i>\u201eL\u016bdzu, izveidojiet mums Spanner, bet par Cloud SQL cenu, nu, j\u016bs ta\u010du esat profesion\u0101\u013ci!\u201d<\/i><\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/cc656b46d37d08fc6aeca937e1e9085b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Ko dar\u012bt?<\/h3>\n<p>\nNeizvirzot sevi par p\u0113d\u0113jo paties\u012bbu, teiksim sekojo\u0161o:<\/p>\n<p><b>Ir j\u0101maina pieeja m\u0101c\u012b\u0161anai:<\/b><\/p>\n<ul>\n<li>m\u0101c\u012bt, k\u0101 iepriek\u0161 m\u0101c\u012bja DBA, nav j\u0113gas;<\/li>\n<li>zin\u0101\u0161anas par vienu produktu \u0161obr\u012bd jau nav pietiekamas;<\/li>\n<li>bet paz\u012bt desmitus vien\u0101 l\u012bmen\u012b \u2014 nav iesp\u0113jams.<\/li>\n<\/ul>\n<p>\nJ\u0101zina ne tikai un ne cik daudz par produktu, bet:<\/p>\n<ul>\n<li>t\u0101 pielietojuma gad\u012bjumi;<\/li>\n<li>da\u017e\u0101das izvieto\u0161anas metodes;<\/li>\n<li>katras metodes priek\u0161roc\u012bbas un tr\u016bkumi;<\/li>\n<li>l\u012bdz\u012bgi un alternat\u012bvi produkti, lai izdar\u012btu apzin\u0101tu un optim\u0101lu izv\u0113li un ne vienm\u0113r par labu iepaz\u012btajam produktam.<\/li>\n<\/ul>\n<p>\nUn v\u0113l ir j\u0101sp\u0113j migr\u0113t datus un saprast pamata principus integr\u0101cijai ar ETL.<\/p>\n<h3>Re\u0101ls gad\u012bjums<\/h3>\n<p>\nNesen n\u0101c\u0101s izveidot aizmuguri mobilai lietotnei. Pirms darba uzs\u0101k\u0161anas aizmugure jau bija izstr\u0101d\u0101ta un gatava ievie\u0161anai, un izstr\u0101d\u0101t\u0101ju komanda \u0161o projektu izstr\u0101d\u0101ja apm\u0113ram divus gadus. Tika izvirz\u012btas \u0161\u0101das uzdevumi:<\/p>\n<ul>\n<li>izveidot CI\/CD;<\/li>\n<li>veikt arhitekt\u016bras p\u0101rskatu;<\/li>\n<li>palaist visu \u0161o ekspluat\u0101cij\u0101. <\/li>\n<\/ul>\n<p>\nPats lietotne bija mikroservisa, un kods tika izstr\u0101d\u0101ts Python\/Django no nulles un uzreiz GCP. Attiec\u012bb\u0101 uz m\u0113r\u0137auditoriju tika paredz\u0113ti divi re\u0123ioni \u2014 ASV un ES, un satiksme tika sadal\u012bta caur glob\u0101lo slodzes balans\u0113t\u0101ju. Visas slodzes un skait\u013co\u0161anas jauda darboj\u0101s Google Kubernetes Engine. <\/p>\n<p>Attiec\u012bb\u0101 uz datiem bija tr\u012bs strukt\u016bras:<\/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=\"K\u0101 SQL datub\u0101ze var izdz\u012bvot 21. gadsimt\u0101: m\u0101koni, Kubernetes un PostgreSQL multimaster\" src=\"\/wp-content\/uploads\/2019\/12\/e6e38b1d861b2871edf20fb09378b491.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVar rasties jaut\u0101jums, k\u0101p\u0113c tika izv\u0113l\u0113ts Cloud SQL? Paties\u012bbu sakot, \u0161\u0101ds jaut\u0101jums p\u0113d\u0113jos gados izraisa k\u0101du ne\u0113rtu pauzi \u2014 rodas saj\u016bta, ka cilv\u0113ki k\u013cuvu\u0161i kautr\u012bgi par rel\u0101ciju datu b\u0101z\u0113m, ta\u010du t\u0101s joproj\u0101m tiek akt\u012bvi izmantotas ;-). <\/p>\n<p>Attiec\u012bb\u0101 uz m\u016bsu gad\u012bjumu Cloud SQL tika izv\u0113l\u0113ts sekojo\u0161o iemeslu d\u0113\u013c:<\/p>\n<ol>\n<li>K\u0101 jau min\u0113ts, lietotne tika izstr\u0101d\u0101ta ar Django, un taj\u0101 ir past\u0101v\u012bgo datu att\u0113lo\u0161anas modelis no SQL datu b\u0101zes Python objektos (Django ORM).<\/li>\n<li>Pats r\u012bks atbalst\u012bja pietiekami beigu CDB sarakstu:<\/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>\nAttiec\u012bgi, PostgreSQL tika izv\u0113l\u0113ts no \u0161\u012b saraksta dr\u012bz\u0101k instinkt\u012bvi (nu, ne jau Oracle ta\u010du izv\u0113l\u0113ties, tie\u0161\u0101m).<\/p>\n<p><b>Kas tr\u016bka:<\/b><\/p>\n<ul>\n<li>lietotne tika izv\u0113rsta tikai 2 re\u0123ionos, bet pl\u0101nos par\u0101d\u012bj\u0101s 3. (\u0100zija);<\/li>\n<li>DB atrad\u0101s Zieme\u013camerikas re\u0123ion\u0101 (Iowa);<\/li>\n<li>klienta pus\u0113 past\u0101v\u0113ja ba\u017eas par iesp\u0113jamiem <b>piek\u013cuves aizkav\u0113jumiem<\/b> no Eiropas un \u0100zijas un <b>trauc\u0113jumiem <\/b><b>iek\u0101rtu apkalpo\u0161an\u0101<\/b> ja SUD b\u016btu d\u012bkst\u0101ve. <\/li>\n<\/ul>\n<p>\nLai gan pats Django var darboties ar vair\u0101kiem DB paral\u0113li un dal\u012bt tos p\u0113c las\u012b\u0161anas un rakst\u012b\u0161anas, ierakstu lietotn\u0113 nebija tik daudz (vair\u0101k nek\u0101 90 % \u2014 las\u012b\u0161ana). Kopum\u0101, ja b\u016btu iesp\u0113jams izveidot <b>read-repliku galvenaj\u0101 datub\u0101z\u0113 Eirop\u0101 un \u0100zij\u0101<\/b>, tas b\u016btu kompromisa risin\u0101jums. Kas tur ir sare\u017e\u0123\u012bts?<\/p>\n<p>Bet sare\u017e\u0123\u012bt\u012bba bija t\u0101da, ka klients nev\u0113l\u0113j\u0101s atteikties no p\u0101rvald\u012btaj\u0101m pakalpojumu programm\u0101m un Cloud SQL. Ta\u010du Cloud SQL iesp\u0113jas \u0161obr\u012bd ir ierobe\u017eotas. Cloud SQL atbalsta augstu pieejam\u012bbu (HA) un las\u012b\u0161anas repliku (RR), bet t\u0101 pati RR tiek atbalst\u012bta tikai vien\u0101 re\u0123ion\u0101. Izveidojot DB Amerikas re\u0123ion\u0101, nav iesp\u0113jams izveidot las\u012b\u0161anas repliku Eiropas re\u0123ion\u0101, izmantojot Cloud SQL, lai gan pats Postgres to neierobe\u017eo. Sarakste ar Google darbiniekiem nek\u0101du rezult\u0101tu nenesa un beidz\u0101s ar sol\u012bjumiem \u201em\u0113s zin\u0101m par probl\u0113mu un str\u0101d\u0101jam pie t\u0101s, k\u0101dreiz jaut\u0101jums tiks atrisin\u0101ts\u201d. <\/p>\n<p>Ja uzskaita Cloud SQL iesp\u0113jas punktos, tad t\u0101s izskat\u012bsies apm\u0113ram \u0161\u0101di:<\/p>\n<p><b>1. Augsta pieejam\u012bba (HA):<\/b><\/p>\n<ul>\n<li>vien\u0101 re\u0123ion\u0101;<\/li>\n<li>izmantojot diska repliku;<\/li>\n<li>netiek izmantoti PostgreSQL meh\u0101nismi;<\/li>\n<li>iesp\u0113jama autom\u0101tiska un manu\u0101la p\u0101rvald\u012bba \u2014 failover\/failback;<\/li>\n<li>datub\u0101zes p\u0101rsl\u0113g\u0161anas laik\u0101 t\u0101 nav pieejama vair\u0101kas min\u016btes.<\/li>\n<\/ul>\n<p>\n<b>2. Las\u012b\u0161anas replika (RR):<\/b><\/p>\n<ul>\n<li>vien\u0101 re\u0123ion\u0101;<\/li>\n<li>karst\u0101 rezerv\u0101cija;<\/li>\n<li>PostgreSQL straum\u0113\u0161anas replika.<\/li>\n<\/ul>\n<p>\nTurkl\u0101t, k\u0101 jau ierasts, izv\u0113loties tehnolo\u0123iju, vienm\u0113r saskaras ar da\u017e\u0101d\u0101m <b>ierobe\u017eojumiem<\/b>:<\/p>\n<ul>\n<li>klients nev\u0113l\u0113j\u0101s rad\u012bt ent\u012btus un izmantot IaaS, iz\u0146emot caur GKE;<\/li>\n<li>klients nev\u0113l\u0113j\u0101s izv\u0113rst self service PostgreSQL\/MySQL;<\/li>\n<li>un visp\u0101r, Google Spanner b\u016btu piln\u012bgi piem\u0113rots, ja vien cena neb\u016btu tik augsta, tom\u0113r ar to Django ORM nevar str\u0101d\u0101t, ta\u010du tas ir labs risin\u0101jums.<\/li>\n<\/ul>\n<p>\n\u0145emot v\u0113r\u0101 situ\u0101ciju, klients uzdeva negaid\u012btu jaut\u0101jumu: <i>\u201eVai j\u016bs varat izveidot kaut ko l\u012bdz\u012bgu tam, lai tas b\u016btu k\u0101 Google Spanner, bet darbin\u0101ms ar\u012b ar Django ORM?\u201d<\/i><\/p>\n<h3>Risin\u0101juma variants Nr. 0<\/h3>\n<p>\nPirmais, kas n\u0101ca pr\u0101t\u0101:<\/p>\n<ul>\n<li>palikt CloudSQL ietvaros;<\/li>\n<li>ieb\u016bv\u0113ta replik\u0101cija starp re\u0123ioniem neb\u016bs nek\u0101dos veidos;<\/li>\n<li>m\u0113\u0123in\u0101t pievienot replik\u0101ciju eso\u0161ajam Cloud SQL, izmantojot PostgreSQL;<\/li>\n<li>kur k\u0101d\u0101 br\u012bd\u012b s\u0101kt PostgreSQL instance, bet vismaz nemain\u012bt master.<\/li>\n<\/ul>\n<p>\nDiem\u017e\u0113l izr\u0101d\u012bj\u0101s, ka to izdar\u012bt nevar, jo nav piek\u013cuves hostam (tas visp\u0101r ir cit\u0101 projekt\u0101) \u2014 pg_hba un taml\u012bdz\u012bgi, un v\u0113l nav piek\u013cuves superlietot\u0101jam.<\/p>\n<h3>Risin\u0101juma variants \u2116 1<\/h3>\n<p>\nP\u0113c v\u0113lreiz p\u0101rrun\u0101\u0161anas un \u0146emot v\u0113r\u0101 iepriek\u0161\u0113j\u0101s apst\u0101k\u013cu, dom\u0101\u0161anas gaita nedaudz main\u012bj\u0101s:<\/p>\n<ul>\n<li>v\u0113l joproj\u0101m cen\u0161amies palikt CloudSQL, bet p\u0101rejam uz MySQL, jo Cloud SQL, izmantojot MySQL, ir \u0101r\u0113jais master, kur\u0161:<\/li>\n<\/ul>\n<p>\n\u2014 ir proxy \u0101r\u0113jam MySQL;<br \/>\n\u2014 izskat\u0101s p\u0113c MySQL instances;<br \/>\n\u2014 ir izstr\u0101d\u0101ts datu migr\u0101cijai no citiem m\u0101ko\u0146iem vai On-premises.<\/p>\n<p>T\u0101 k\u0101 MySQL replik\u0101cijas iestat\u012b\u0161anai nav nepiecie\u0161ama piek\u013cuve hostam, princip\u0101 viss str\u0101d\u0101ja, ta\u010du bija \u013coti nestabils un ne\u0113rts. Kad g\u0101j\u0101m t\u0101l\u0101k, situ\u0101cija palika patie\u0161\u0101m bied\u0113jo\u0161a, jo m\u0113s visu strukt\u016bru izveidoj\u0101m ar terraform, bet izr\u0101d\u012bj\u0101s, ka \u0101r\u0113jais master netiek atbalst\u012bts ar terraform. J\u0101, Google ir CLI, bet kaut k\u0101p\u0113c ar\u012b tur viss str\u0101d\u0101ja ne visai stabil\u0101 k\u0101rt\u012bb\u0101 \u2014 reiz\u0113m izveidojas, reiz\u0113m ne. Iesp\u0113jams, t\u0101p\u0113c, ka CLI tika izstr\u0101d\u0101ts datu migr\u0101cijai no \u0101rpuses, nevis replik\u0101m.<\/p>\n<p>Vair\u0101k vai maz\u0101k, taj\u0101 br\u012bd\u012b k\u013cuva skaidrs, ka Cloud SQL visp\u0101r nav piem\u0113rots. K\u0101 jau teikts, m\u0113s izdar\u012bju\u0161i visu, ko var\u0113j\u0101m. <\/p>\n<h3>Risin\u0101juma variants \u2116 2<\/h3>\n<p>\nT\u0101 k\u0101 palikt Cloud SQL neizdev\u0101s, m\u0113\u0123in\u0101j\u0101m formul\u0113t pras\u012bbas kompromisa risin\u0101jumam. Pras\u012bbas izr\u0101d\u012bj\u0101s \u0161\u0101das:<\/p>\n<ul>\n<li>darbs ar Kubernetes, maksim\u0101la resursu un iesp\u0113ju izmanto\u0161ana Kubernetes (DCS, &#8230;) un GCP (LB, &#8230;);<\/li>\n<li>nevajadz\u012bgo lietu tr\u016bkums m\u0101ko\u0146os, piem\u0113ram, HA proxy;<\/li>\n<li>iesp\u0113ja palaist HA PostgreSQL vai MySQL galvenaj\u0101 re\u0123ion\u0101; citos re\u0123ionos \u2014 HA no galven\u0101 re\u0123iona RR plus t\u0101s kopija (uzticam\u012bbai);<\/li>\n<li>multi master (saist\u012bties ar to negrib\u0113j\u0101s, bet tas nebija \u013coti b\u016btiski)<\/li>\n<\/ul>\n<p>. <br \/>\nUz \u0161o pras\u012bbu fona beidzot par\u0101d\u012bj\u0101s<b>piem\u0113roti DBMS un saist\u012b\u0161anas varianti<\/b>:<\/p>\n<ul>\n<li>MySQL Galera;<\/li>\n<li>CockroachDB;<\/li>\n<li>PostgreSQL r\u012bki<\/li>\n<\/ul>\n<p>:<br \/>\n\u2014 pgpool-II;<br \/>\n\u2014 Patroni.<\/p>\n<h3>MySQL Galera<\/h3>\n<p>\nMySQL Galera tehnolo\u0123iju izstr\u0101d\u0101jusi uz\u0146\u0113mums Codership un t\u0101 ir plugin for InnoDB. \u012apa\u0161\u012bbas:<\/p>\n<ul>\n<li>multi master;<\/li>\n<li>sinhron\u0101 replik\u0101cija;<\/li>\n<li>las\u012bt no jebkura mezgla;<\/li>\n<li>rakst\u012bt uz jebkuru mezglu;<\/li>\n<li>ieb\u016bv\u0113ta HA meh\u0101nisms;<\/li>\n<li>ir Helm chart no Bitnami.<\/li>\n<\/ul>\n<p><\/p>\n<h3>CockroachDB<\/h3>\n<p>\nSaska\u0146\u0101 ar aprakstu \u0161\u012b lieta ir piln\u012bgi lieliska un ir open source projekts, kas rakst\u012bts Go valod\u0101. Galvenais dal\u012bbnieks \u2014 Cockroach Labs (dibin\u0101ta biju\u0161ajiem Google darbiniekiem). \u0160\u012b rel\u0101ciju datub\u0101ze s\u0101kotn\u0113ji izveidota k\u0101 izplat\u012bta (ar horizont\u0101lo m\u0113rogo\u0161anu \u00abno kastes\u00bb) un iztur\u012bga pret k\u013c\u016bd\u0101m. T\u0101s autori no uz\u0146\u0113muma izvirz\u012bju\u0161i m\u0113r\u0137i \u00abapvienot SQL bag\u0101t\u012bbas funkcionalit\u0101ti ar horizont\u0101lo pieejam\u012bbu, kas rakstur\u012bga NoSQL risin\u0101jumiem\u00bb.<\/p>\n<p>No pat\u012bkam\u0101 bonusa \u2014 atbalsts PostgreSQL piesl\u0113g\u0161anas protokolam. <\/p>\n<h3>Pgpool<\/h3>\n<p>\nTas ir sl\u0101nis virs PostgreSQL, paties\u012bb\u0101 jauna b\u016bt\u012bba, kas uz\u0146em visas piesl\u0113g\u0161an\u0101s un t\u0101s apstr\u0101d\u0101. Tam ir savs slodzes balans\u0113t\u0101js un parsers, tas licenc\u0113ts saska\u0146\u0101 ar BSD licenci. Pied\u0101v\u0101 pla\u0161as iesp\u0113jas, ta\u010du izskat\u0101s nedaudz bied\u0113jo\u0161i, jo jaunas b\u016bt\u012bbas esam\u012bba var\u0113tu rad\u012bt da\u017eas papildu gr\u016bt\u012bbas. <\/p>\n<h3>Patroni<\/h3>\n<p>\nTas ir p\u0113d\u0113jais, uz ko krita acs, un, izr\u0101d\u0101s, ne velti. Patroni \u2014 open-source r\u012bks, kas b\u016bt\u012bb\u0101 ir demons Python valod\u0101, kas \u013cauj autom\u0101tiski apkalpot PostgreSQL klasterus ar da\u017e\u0101diem replik\u0101cijas veidiem un autom\u0101tisku lomu p\u0101rsl\u0113g\u0161anos. \u0160\u012b lieta izr\u0101d\u012bj\u0101s \u013coti interesanta, jo t\u0101 labi integr\u0113jas ar Kubernetes un nenes nek\u0101das jaunas b\u016btnes. <\/p>\n<h3>K\u0101du galu gal\u0101 izv\u0113l\u0113j\u0101s<\/h3>\n<p>\nIzv\u0113le nebija viegla:<\/p>\n<ol>\n<li><b>CockroachDB <\/b>\u2014 uguns, bet bied\u0113jo\u0161i;<\/li>\n<li><b>MySQL Galera<\/b> \u2014 ar\u012b nav slikti, tiek pla\u0161i izmantots, bet MySQL;<\/li>\n<li><b>Pgpool <\/b>\u2014 daudz lieku b\u016btnes, t\u0101da k\u0101 integr\u0101cija ar m\u0101ko\u0146iem un K8s;<\/li>\n<li><b>Patroni <\/b>\u2014 lieliska integr\u0101cija ar K8s, nav lieku b\u016btnes, labi integr\u0113jas ar GCP LB.<\/li>\n<\/ol>\n<p>\nT\u0101d\u0113j\u0101di izv\u0113le krita uz Patroni. <\/p>\n<h3>Secin\u0101jumi<\/h3>\n<p>\nIr pien\u0101cis laiks izdar\u012bt \u012bsus secin\u0101jumus. J\u0101, IT infrastrukt\u016bras pasaule iev\u0113rojami main\u012bjusies, un tas ir tikai s\u0101kums. Ja iepriek\u0161 m\u0101ko\u0146i bija tikai cits infrastrukt\u016bras veids, tad tagad viss ir sav\u0101d\u0101k. V\u0113l vair\u0101k, inov\u0101cijas m\u0101ko\u0146os par\u0101d\u0101s past\u0101v\u012bgi, t\u0101s par\u0101d\u012bsies un, iesp\u0113jams, t\u0101s par\u0101d\u012bsies tikai m\u0101ko\u0146os un tikai p\u0113c tam, pateicoties startupiem, tiks p\u0101rnestas uz On-premises.<\/p>\n<p>Kas attiecas uz SQL, tad SQL turpin\u0101s dz\u012bvot. Tas noz\u012bm\u0113, ka PostgreSQL un MySQL j\u0101zina un j\u0101sp\u0113j str\u0101d\u0101t ar t\u0101m, bet v\u0113l svar\u012bg\u0101k ir prast t\u0101s pareizi pielietot.<br \/>\n<br \/>Avots: <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 5.0.5 - 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.\" \/>\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\/lv\/blog\/administrirovanie\/kak-vyzhit-sql-baze-v-21-veke-oblaka-kubernetes-i-postgresql-multimaster\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/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\udd47K\u0101 izdz\u012bvot SQL datu b\u0101zei 21. gadsimt\u0101: m\u0101ko\u0146i, Kubernetes un PostgreSQL multimaster | ProHoster","description":"Sveiki, Habr\u0101. \u0160odien s\u0101kas nodarb\u012bbas pirmaj\u0101 grup\u0101 kurs\u0101 \u00abPostgreSQL\u00bb.","canonical_url":"https:\/\/prohoster.info\/lv\/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":"lv_LV","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.","og:url":"https:\/\/prohoster.info\/lv\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/54366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=54366"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/54366\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=54366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=54366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=54366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}