{"id":39169,"date":"2019-10-31T22:28:14","date_gmt":"2019-10-31T19:28:14","guid":{"rendered":"https:\/\/prohoster.info\/blog\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya\/"},"modified":"2019-10-31T22:28:14","modified_gmt":"2019-10-31T19:28:14","slug":"postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","title":{"rendered":"PostgreSQL ja kirje koosk\u00f5lastamise seadistused iga konkreetse \u00fchenduse jaoks","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><em>Artikli t\u00f5lge on ette valmistatud spetsiaalselt kursuse \u00fcli\u00f5pilastele <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">\u00abAndmed\u00bb<\/a><\/noindex>. Kas olete huvitatud selles suunas arenemisest? Kutsume teid \u00fcles <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">Avauste P\u00e4evale<\/a><\/noindex>, kus me r\u00e4\u00e4gime p\u00f5hjalikult programmist, veebivormingu omadustest, kompetentsidest ja karj\u00e4\u00e4riv\u00f5imalustest, mis ootavad l\u00f5petajaid p\u00e4rast \u00f5pinguid.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL ja kirje koosk\u00f5lastamise seadistused iga konkreetse \u00fchenduse jaoks\" src=\"\/wp-content\/uploads\/2019\/10\/e69e30ba059af157f021c9cb33a59f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>PostgreSQL ja kirje koosk\u00f5lastamise seadistused iga konkreetse \u00fchenduse jaoks<br \/>\nMeil Compose'is tuleb tegeleda paljude andmebaasidega, just see annab meile v\u00f5imaluse paremini tutvuda nende funktsionaalsuse ja puudustega. Kui me \u00f5pime armastama uute andmebaaside funktsionaalseid omadusi, hakkame m\u00f5nikord m\u00f5tlema, kui hea oleks, kui sarnased funktsioonid oleksid olemas ka k\u00fcpsetes t\u00f6\u00f6riistades, millega me juba ammu t\u00f6\u00f6tame. \u00dcks uus funktsioon, mida oleks tahtnud n\u00e4ha PostgreSQL-is, oli seadistatav kirjutamise koosk\u00f5la kogu klastris. Ja nagu selgus, on see meil juba olemas, ja t\u00e4na tahame jagada teavet selle kohta, kuidas saate seda kasutada.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h1 id=\"zachem-mne-eto\">Miks mul seda vaja on?<\/h1>\n<p><\/p>\n<p>Kuidas klaster k\u00e4itub, s\u00f5ltub teie rakendusest. V\u00f5tame n\u00e4iteks arve maksmise rakenduse. 100% kokkulepe klastris on vajalik, seega peate lubama s\u00fcnkroonsed commit'id, et teie andmebaas ootaks, kuni k\u00f5ik muudatused on tehtud. Kui aga teie rakendus on kiiresti arenev sotsiaalne v\u00f5rgustik, siis eelistaksite kindlasti kiiret vastust \u00fcle 100% kokkuleppe. Selleks v\u00f5ite oma klastris kasutada as\u00fcnkroonseid commit'e.<\/p>\n<p><\/p>\n<h2 id=\"znakomtes-kompromiss\">Tutvuge kompromissiga<\/h2>\n<p><\/p>\n<p>Te peate leppima andmete konsistentsi ja j\u00f5udluse vahel. PostgreSQL liikuda konsistentsi suunas, kuna vaikeseadistus on sel juhul ettearvatav ja ilma ootamatute \u00fcllatusteta. N\u00fc\u00fcd uurime l\u00e4hemalt compromisse.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-1-proizvoditelnost\">Kompromiss 1: J\u00f5udlus<\/h3>\n<p><\/p>\n<p>Kui PostgreSQL kluster ei n\u00f5ua j\u00e4rjepidevust, v\u00f5ib see t\u00f6\u00f6tada as\u00fcnkroonselt. Kirje tehakse klusteri liidrile ja tema koopiad saavad uuendused m\u00f5ne millisekundi p\u00e4rast. Kui PostgreSQL kluster vajab j\u00e4rjepidevust, peab see t\u00f6\u00f6tama s\u00fcnkroonselt. Kirje tehakse klusteri liidrile, kes saadab koopiatele uuenduse ning ootab kinnitust, et iga\u00fcks on kirje teinud, enne kui saadab kliendile, kes algatas kirje, kinnituse, et see \u00f5nnestus. Praktikas seisneb erinevus nende l\u00e4henemiste vahel selles, et as\u00fcnkroonne meetod n\u00f5uab kahte v\u00f5rku h\u00fcpet, samas kui s\u00fcnkroonne n\u00f5uab nelja. <\/p>\n<p><\/p>\n<h3 id=\"kompromiss-2-soglasovannost\">Kompromiss 2: J\u00e4rjepidevus<\/h3>\n<p><\/p>\n<p>Juhul, kui juht t\u00f6\u00f6tab nende kahe l\u00e4henemise korral vale, on tulemus samuti erinev. Kui t\u00f6\u00f6 toimub as\u00fcnkroonselt, siis sellise vea korral ei pruugi k\u00f5ik kirjed replikates olla salvestatud. Kui palju kaob? See s\u00f5ltub rakendusest ja replikatsiooni efektiivsusest. Compose'i replikatsioon takistab replikal juhtkonna rolli saamist, kui selle sisu on 1 MB v\u00f5rra v\u00e4iksem juhtkonnast, mis t\u00e4hendab, et as\u00fcnkroonse t\u00f6\u00f6 korral v\u00f5ib potentsiaalselt kaduda kuni 1 MB kirjeid. <\/p>\n<p><\/p>\n<p>S\u00fcnkroonses re\u017eiimis seda ei juhtu. Kui juht eba\u00f5nnestub, uuendatakse k\u00f5iki replikasid, kuna iga kirje, mis on juhil kinnitatud, peab olema ka replikates kinnitatud. See on see \u2013 j\u00e4rjepidevus. <\/p>\n<p><\/p>\n<p>S\u00fcnkroonset k\u00e4itumist tasub kasutada arveldamise rakenduses, kus koosk\u00f5la annab selge eelise tasakaalu leidmisel koosk\u00f5la ja j\u00f5udluse vahel. Sellise rakenduse jaoks on k\u00f5ige olulisemad kehtivad andmed. Ja n\u00fc\u00fcd tulge meelde sotsiaalne v\u00f5rgustik, kus peamine \u00fclesanne on kasutaja t\u00e4helepanu hoidmine, vastates p\u00e4ringutele v\u00f5imalikult kiiresti. Sellisel juhul on prioriteediks j\u00f5udlus v\u00e4iksema v\u00f5rgu h\u00fcppe ja l\u00fchema ooteajaga. Siiski pole j\u00f5udluse ja koosk\u00f5la tasakaal \u00fcks ainus, millele m\u00f5tlema peab.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-3-sboi\">Tasakaal 3: Vead<\/h3>\n<p><\/p>\n<p>On oluline m\u00f5ista, kuidas klaster rikete korral k\u00e4itub. Vaadakem olukorda, kus \u00fcks v\u00f5i enam replikast eba\u00f5nnestuvad. Kui komiteid t\u00f6\u00f6deldakse as\u00fcnkroonselt, j\u00e4tkab juht t\u00f6\u00f6tamist, s.t. aktsepteerib ja t\u00f6\u00f6tleb salvestusi, ilma et ootaks puuduvaid replikaid. Kui replikad naasevad klastri, j\u00f5uavad nad juhile j\u00e4rgi. S\u00fcnkroonse replikatsiooni korral, kui replikad ei vasta, ei j\u00e4\u00e4 juhile muud valikut, kui oodata komiteeringu kinnitust, kuni replikad naasevad klastri ja suudavad salvestust vastu v\u00f5tta ja kinnitada.<\/p>\n<p><\/p>\n<h2 id=\"po-odnomu-soedineniyu-na-tranzakciyu\">Kas \u00fcks \u00fchendus iga tehingu kohta?<\/h2>\n<p><\/p>\n<p>Iga rakendus vajab erilist tasakaalu j\u00e4rjepidevuse ja j\u00f5udluse vahel. Kui see ei ole meie arve tasumise rakendus, mille me kujutame t\u00e4ielikult j\u00e4rjepidevana, v\u00f5i meie peaaegu eeterlik sotsiaalmeedia rakendus. K\u00f5igil muudel juhtudel on olukordi, kus m\u00f5ned toimingud peavad olema s\u00fcgavalt s\u00fcnkroonsed, samas kui teised v\u00f5ivad olla as\u00fcnkroonsed. Te ei soovi, et s\u00fcsteem ootaks, kuni s\u00f5num, mis saadetakse vestluses, on kinnitatud, kuid kui selles samas rakenduses toimub makse, siis tuleb oodata.<\/p>\n<p><\/p>\n<p>K\u00f5iki neid otsuseid teeb muidugi rakenduse arendaja. \u00d5igeid otsuseid selle kohta, millal rakendada \u00fcht v\u00f5i teist l\u00e4henemist, aitab maksimeerida kloori efektiivsust. Oluline on, et arendaja suudaks SQL tasemel \u00fchenduste ja tehingute vahel vahetada. <\/p>\n<p><\/p>\n<h2 id=\"obespechenie-kontrolya-na-praktike\">Praktilise kontrolli tagamine<\/h2>\n<p><\/p>\n<p>Vaikimisi tagab PostgreSQL j\u00e4rjepidevuse. Seda kontrollib serveri parameeter <code>synchronous_commit<\/code>. Vaikimisi on see seadistatud <code>on<\/code>, kuid tal on kolm muud varianti: <code>local<\/code>, <code>remote_write<\/code> v\u00f5i <code>off<\/code>.<\/p>\n<p><\/p>\n<p>Parameetri seadistamine <code>off<\/code> peatatakse k\u00f5ik s\u00fcnkroonsed salvestused, isegi kohalikus s\u00fcsteemis. Parameeter local m\u00e4\u00e4rab s\u00fcnkroonsed re\u017eiimid kohalikes s\u00fcsteemides, kuid replikatsioonid toimuvad as\u00fcnkroonselt. <code>Remote_write<\/code> l\u00e4heb veel kaugemale: replikatsioonid toimuvad as\u00fcnkroonselt, kuid tagastatakse, kui replikatsioon on salvestuse vastu v\u00f5tnud, kuid ei ole seda kettale salvestanud.<\/p>\n<p><\/p>\n<p>Arvestades olemasolevaid v\u00f5imalusi, valime k\u00e4itumise ja pidades silmas, et <code>on<\/code> \u2013 need on s\u00fcnkroonsed salvestused, valime <code>local<\/code> as\u00fcnkroonsed salvestused v\u00f5rgus, j\u00e4ttes samas kohalikud salvestused s\u00fcnkroonsed.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd r\u00e4\u00e4gime teile, kuidas seda minutiga seadistada, kuid kujutage ette, et oleme seadnud <code>synchronous_commit<\/code> \u00fches <code>local<\/code> serverile. K\u00fcsimus tekkis, kas parameetrit <code>synchronous_commit<\/code> v\u00f5ib muuta jooksvalt, ja selgus, et mitte ainult, et see on v\u00f5imalik, vaid selleks on isegi kaks viisi. Esimene on seada teie \u00fchenduse seanss j\u00e4rgmiselt:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">SET SESSION synchronous_commit TO ON;  \n\/\/ Teie salvestused l\u00e4hevad siia<\/code><\/pre>\n<p><\/p>\n<p>K\u00f5ik j\u00e4rgmised salvestused seansis kinnitavad replikatsioonitegevuse enne, kui tagastavad positiivse tulemuse \u00fchendatud kliendile. Kui muidugi te ei muuda muudatust <code>synchronous_commit<\/code> taas. Seda osa v\u00f5ib vahele j\u00e4tta <code>SESSION<\/code> meeskonnas, kuna see on vaikimisi v\u00e4\u00e4rtus.<\/p>\n<p><\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0445\u043e\u0440\u043e\u0448, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438. \u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f &#171;NoSQL&#187; \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u043e \u043e\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 PostgreSQL. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e, \u0430 \u0437\u0430\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 <code>synchronous_commit<\/code> \u00fches <code>on<\/code> enne tehingu kirjutamise t\u00e4itmist. <code>COMMIT<\/code> fikseerib tehingu, kasutades mis tahes parameetri v\u00e4\u00e4rtust <code>synchronous_commit<\/code>, mis oli tol hetkel m\u00e4\u00e4ratud, kuigi parima tulemuse saavutamiseks on parem eelnevalt m\u00e4\u00e4rata muutujad, et teised arendajad m\u00f5istaksid, et kirjed ei ole as\u00fcnkronoossed.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">BEGIN;  \nSET LOCAL synchronous_commit TO ON;  \n\/\/ Teie kirjed l\u00e4hevad siia\nCOMMIT;  <\/code><\/pre>\n<p><\/p>\n<p>K\u00f5ik tehingute kinnitused kinnitatakse n\u00fc\u00fcd, nagu oleks need kirjutatud replikatsioonidele juba enne, kui andmebaas tagastab \u00fchendatud kliendile positiivse vastuse.<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-postgresql\">PostgreSQL seadistamine<\/h2>\n<p><\/p>\n<p>Varem olime ette kujutanud PostgreSQL s\u00fcsteemi, mille <code>synchronous_commit<\/code>oli seatud <code>local<\/code>. Selle toimimiseks serveripoolsel k\u00fcljel peate seadistama kaks serveri konfiguratsiooni parameetrit. Veel \u00fcks parameeter <code>synchronous_standby_names<\/code> hakkab kehtima, kui <code>synchronous_commit<\/code> on <code>on<\/code>. Ta m\u00e4\u00e4rab, millised replikad saavad teha s\u00fcnkroonsed kinnitused, ning me seadistame selle tuhandeks <code>*<\/code>, mis t\u00e4hendab, et k\u00f5ik replikad on kaasatud. Need v\u00e4\u00e4rtused seadistatakse tavaliselt <noindex><a rel=\"nofollow\" href=\"http:\/\/www.postgresql.org\/docs\/9.4\/static\/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE\">konfiguratsioonifailis<\/a><\/noindex> j\u00e4rgmise lisamise teel: <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">synchronous_commit = local  \nsynchronous_standby_names='*'<\/code><\/pre>\n<p><\/p>\n<p>Seades <code>synchronous_commit<\/code> v\u00e4\u00e4rtuse <code>local<\/code>, loome s\u00fcsteemi, kus kohalikke kettaid hoitakse s\u00fcnkroonselt, kuid v\u00f5rgu replikate kinnitused on vaikimisi as\u00fcnkroonsed. Kui muidugi ei otsusta me, et need kinnitused oleksid s\u00fcnkroonsed, nagu \u00fclalpool n\u00e4idatud.<\/p>\n<p><\/p>\n<p>Kui olete j\u00e4lginud <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/compose\/governor\">Governor projekti<\/a><\/noindex>, olete v\u00f5inud m\u00e4rgata m\u00f5ningaid hiljutisi muudatusi (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/compose\/governor\/commit\/87f18c01f150b3f1b6f948e852c7add2949f7360\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/compose\/governor\/commit\/dcbe849d33c535b1522ce767803cb77a3ac91a7e\">2<\/a><\/noindex>), mis v\u00f5imaldasid Governor kasutajatel neid seadeid katsetada ja nende \u00fchtsust kontrollida.<\/p>\n<p><\/p>\n<h2 id=\"esche-para-slov\">Veel paar s\u00f5na\u2026<\/h2>\n<p><\/p>\n<p>Tegelikult oleks ma veel n\u00e4dal tagasi \u00f6elnud, et PostgreSQL-i ei saa nii peensusteni seadistada. Just siis, kui Kurt, Compose'i platvormi meeskonna liige, v\u00e4itis, et see on v\u00f5imalik. Ta vaatas mu vastuv\u00e4ited maha ja leidis PostgreSQL-i dokumentatsioonist <noindex><a rel=\"nofollow\" href=\"http:\/\/www.postgresql.org\/docs\/devel\/static\/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT\">j\u00e4rgmist<\/a><\/noindex>:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL ja kirje koosk\u00f5lastamise seadistused iga konkreetse \u00fchenduse jaoks\" src=\"\/wp-content\/uploads\/2019\/10\/e77e97e588fa3d1e8acbe5de0e26436a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Seda seadistust saab igal ajal muuta. Iga tehingu k\u00e4itumine m\u00e4\u00e4ratakse seadistuse p\u00f5hjal, mis kehtib commit'i hetkel. Seet\u00f5ttu on v\u00f5imalik ja kasulik, et m\u00f5ned tehingud sooritavad commit'id s\u00fcnkroonselt, samas kui teised - as\u00fcnkroonselt. N\u00e4iteks, kui soovite sundida \u00fchte <code>multistatement<\/code> tehingut tegema commit'e as\u00fcnkroonselt, kui vaikev\u00e4\u00e4rtus on vastupidine, seadistage <\/em><code>SET LOCAL synchronous_commit TO OFF<\/code> <em>tehingus.<\/em><\/p>\n<p><\/p>\n<p>Sellise v\u00e4ikese muudatuse kaudu konfiguratsioonifailis oleme andnud kasutajatele v\u00f5imaluse kontrollida nende koosk\u00f5la ja j\u00f5udlust.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/472364\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\u00bb. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438? \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0430\u0441 \u043d\u0430 \u0414\u0435\u043d\u044c \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0414\u0432\u0435\u0440\u0435\u0439, \u0433\u0434\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043e\u043d\u043b\u0430\u0439\u043d-\u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u044f\u0445 \u0438 \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u041d\u0430\u043c \u0432 Compose \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29395,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-39169","post","type-post","status-publish","format-standard","has-post-thumbnail","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\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\u00bb. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438? \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0430\u0441 \u043d\u0430 \u0414\u0435\u043d\u044c \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0414\u0432\u0435\u0440\u0435\u0439, \u0433\u0434\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043e\u043d\u043b\u0430\u0439\u043d-\u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u044f\u0445 \u0438 \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u041d\u0430\u043c \u0432 Compose \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438\" \/>\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\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya\" \/>\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\udd47PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\u00bb. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438? \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0430\u0441 \u043d\u0430 \u0414\u0435\u043d\u044c \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0414\u0432\u0435\u0440\u0435\u0439, \u0433\u0434\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043e\u043d\u043b\u0430\u0439\u043d-\u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u044f\u0445 \u0438 \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u041d\u0430\u043c \u0432 Compose \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya\" \/>\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-10-31T19:28:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:28:14+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\udd47PostgreSQL ja kirjutamise kokkusobivuse seadistamine iga konkreetse \u00fchenduse jaoks | ProHoster","description":"Artikli t\u00f5lge on ette valmistatud eriti andmebaasi\u00f5ppe kursuse \u00f5pilaste jaoks. Kas on huvi selles valdkonnas areneda? Kutsume teid Avatud Uste P\u00e4evale, kus r\u00e4\u00e4gime \u00fcksikasjalikult programmi, veebivormi omaduste, oskuste ja karj\u00e4\u00e4riv\u00f5imaluste kohta, mis ootavad l\u00f5petajaid p\u00e4rast koolitust. PostgreSQL ja kirje koosk\u00f5la seadistused iga konkreetse \u00fchenduse jaoks. Me Compose'is peame tegelema paljude andmebaasidega.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","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\udd47PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\u00bb. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438? \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0430\u0441 \u043d\u0430 \u0414\u0435\u043d\u044c \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0414\u0432\u0435\u0440\u0435\u0439, \u0433\u0434\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043e\u043d\u043b\u0430\u0439\u043d-\u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u044f\u0445 \u0438 \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u041d\u0430\u043c \u0432 Compose \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","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-10-31T19:28:14+00:00","article:modified_time":"2019-10-31T19:28:14+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39169","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 01:05:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:54:44","updated":"2026-01-24 01:05:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/39169","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=39169"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/39169\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/29395"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=39169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=39169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=39169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}