{"id":97939,"date":"2020-10-23T08:42:49","date_gmt":"2020-10-23T06:42:49","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/dba-bot-joe-anatolij-stansler-postgres-ai"},"modified":"2020-10-23T08:42:49","modified_gmt":"2020-10-23T06:42:49","slug":"dba-bot-joe-anatolij-stansler-postgres-ai","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/dba-bot-joe-anatolij-stansler-postgres-ai","title":{"rendered":"DBA-boti Joe. Anatoly Stansler (Postgres.ai)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/3bb5cc6d6be1699fc72342a74aa4020a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si si backend zhvilluesi kupton se SQL pyetja do t\u00eb funksionoj\u00eb mir\u00eb n\u00eb 'prod'? N\u00eb kompani t\u00eb m\u00ebdha ose me rritje t\u00eb shpejt\u00eb, qasja n\u00eb 'prod' nuk \u00ebsht\u00eb e mundur p\u00ebr t\u00eb gjith\u00eb. Dhe madje me qasje, jo t\u00eb gjitha pyetjet mund t\u00eb verifikohen pa dhimbje, nd\u00ebrsa krijimi i nj\u00eb kopjeje t\u00eb DB shpesh merr or\u00eb. P\u00ebr t\u00eb zgjidhur k\u00ebto probleme, krijuam nj\u00eb DBA artificial - Joe. Ai tashm\u00eb \u00ebsht\u00eb implementuar me sukses n\u00eb disa kompani dhe ndihmon jo vet\u00ebm dhjet\u00ebra zhvillues. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Video:<\/p>\n<p>\n<center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/5f913081905dc4e15aeed783\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/48e63de499e46be4be19aa8c926e5716.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! M\u00eb quajn\u00eb Anatolij Stansler. Un\u00eb punoj n\u00eb kompanin\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/postgres.ai\/\">Postgres.ai<\/a><\/noindex>. Ne merremi me at\u00eb q\u00eb p\u00ebrshpejtojm\u00eb procesin e zhvillimit, duke eliminuar vonesat e lidhura me pun\u00ebn me Postgres, p\u00ebr zhvilluesit, DBA-t\u00eb dhe QA-n\u00eb.<\/p>\n<p><\/p>\n<p>Kemi klient\u00eb t\u00eb shk\u00eblqyer dhe sot nj\u00eb pjes\u00eb e prezantimit do t\u2019i kushtohet rasteve q\u00eb kemi hasur n\u00eb pun\u00eb me ta. Do flas p\u00ebr m\u00ebnyr\u00ebn se si ndihmuam ata t\u00eb zgjidhnin disa probleme mjaft serioze.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/5bd7d2538a4940afb28d6375a9516760.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kur b\u00ebjm\u00eb zhvillim dhe realizojm\u00eb migrime t\u00eb komplikuara ngarkesash, ne b\u00ebjm\u00eb pyetje: 'A do t\u00eb fluturoj\u00eb kjo migrim?'. Ne p\u00ebrdorim rishikimin, ne p\u00ebrdorim njohurit\u00eb e koleg\u00ebve m\u00eb me p\u00ebrvoj\u00eb, ekspert\u00ebve DBA. Dhe ata mund t\u00eb thon\u00eb - do t\u00eb fluturoj\u00eb apo jo. <\/p>\n<p><\/p>\n<p>Por, ndoshta do t\u00eb ishte m\u00eb mir\u00eb n\u00ebse mund t\u00eb testonim vet\u00eb k\u00ebt\u00eb n\u00eb kopje me p\u00ebrmasa t\u00eb plota. Dhe sot do t\u00eb flasim sakt\u00ebsisht p\u00ebr se cil\u00ebt jan\u00eb tani qasjet p\u00ebr testimin dhe si mund ta b\u00ebjm\u00eb m\u00eb mir\u00eb dhe me cilat mjete. Po ashtu do t\u00eb flasim p\u00ebr avantazhet dhe disavantazhet e k\u00ebtyre qasjeve dhe se \u00e7far\u00eb mund t\u00eb p\u00ebrmir\u00ebsojm\u00eb k\u00ebtu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/aca9f4c4fbbfc6db9c24f862216fb5d4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kush ka b\u00ebr\u00eb ndonj\u00ebher\u00eb indekse ose ka b\u00ebr\u00eb ndonj\u00eb ndryshim direkt n\u00eb prod? Mjaft e madhe. Dhe sa prej jush p\u00ebrjetuan humbje t\u00eb t\u00eb dh\u00ebnave ose pauza? At\u00ebher\u00eb ju e njihni k\u00ebt\u00eb dhembje. Faleminderit Zotit, backup-et ekzistojn\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/7795bf3cb1f3f6f9919ca42758fa51e9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Qasja e par\u00eb - \u00ebsht\u00eb testimi n\u00eb prod. Ose, kur zhvilluesi \u00ebsht\u00eb n\u00eb kompjuterin lokal, ka t\u00eb dh\u00ebna testuese, ka ndonj\u00eb grup t\u00eb kufizuar. Dhe ne e nxjerrim at\u00eb n\u00eb prod, dhe kemi nj\u00eb situat\u00eb t\u00eb till\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/05b120bf57904f553422f419337d5220.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb e dhimbshme, kjo \u00ebsht\u00eb e shtrenjt\u00eb. Ndoshta, nuk \u00ebsht\u00eb m\u00eb mir\u00eb ta b\u00ebsh k\u00ebshtu. <\/p>\n<p><\/p>\n<p>Por si mund ta b\u00ebjm\u00eb m\u00eb mir\u00eb? <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/a8727bc2cd217d89edaf9df8588306d9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Le t\u00eb marrim staging dhe t'i rezervojm\u00eb atij nj\u00eb pjes\u00eb t\u00eb prod. Ose, n\u00eb rastin m\u00eb t\u00eb mir\u00eb, t\u00eb marrim prodin e v\u00ebrtet\u00eb, t\u00eb gjitha t\u00eb dh\u00ebnat. Dhe pasi t\u00eb kemi zhvilluar lokal, do t\u00eb kontrollojm\u00eb gjithashtu dhe n\u00eb staging. <\/p>\n<p><\/p>\n<p>Kjo do t\u00eb na lejoj\u00eb t\u00eb eliminojm\u00eb disa gabime, dmth. t\u00eb mos i lejojm\u00eb ato n\u00eb prod. <\/p>\n<p><\/p>\n<p>Cilat jan\u00eb problemet? <\/p>\n<p><\/p>\n<ul>\n<li>Problemi \u00ebsht\u00eb se k\u00ebt\u00eb staging e ndajm\u00eb me koleg\u00ebt. Dhe shum\u00eb shpesh ndodh q\u00eb b\u00ebn nj\u00eb ndryshim, bam \u2013 dhe nuk ka t\u00eb dh\u00ebna, puna \u00ebsht\u00eb n\u00eb aj\u00ebr. Staging ishte shum\u00eb terabajt. Dhe duhet t\u00eb presim gjat\u00eb derisa t\u00eb ngrihet p\u00ebrs\u00ebri. Dhe ne vendosim ta plot\u00ebsojm\u00eb k\u00ebt\u00eb nes\u00ebr. Tani, zhvillimi yn\u00eb \u00ebsht\u00eb ndalur. <\/li>\n<li>Dhe, sigurisht, aty punojn\u00eb shum\u00eb koleg\u00eb, shum\u00eb ekipe. Dhe duhet t\u00eb pajtohemi manualisht. Kjo nuk \u00ebsht\u00eb e p\u00ebrshtatshme. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/ad4612f2b06ac09e666e33196d898a79.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe duhet th\u00ebn\u00eb se kemi vet\u00ebm nj\u00eb p\u00ebrpjekje, nj\u00eb goditje, n\u00ebse duam t\u00eb b\u00ebjm\u00eb ndonj\u00eb ndryshim n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave, t\u00eb prek\u00eb t\u00eb dh\u00ebnat, t\u00eb ndryshojm\u00eb struktur\u00ebn. Dhe n\u00ebse di\u00e7ka shkon keq, n\u00ebse kishte nj\u00eb gabim n\u00eb migrimin, nuk do t\u00eb kthehemi shpejt. <\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb m\u00eb mir\u00eb se qasja e m\u00ebparshme, por prap\u00eb ka nj\u00eb probabilitet t\u00eb madh q\u00eb ndonj\u00eb gabim t\u00eb shkoj\u00eb n\u00eb prodhim.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/73faffc3ef6e368a0901145c48b903b1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb na pengon t\u00eb japim \u00e7do zhvilluesi nj\u00eb test stand, nj\u00eb kopje me p\u00ebrmasa t\u00eb plota? Mendoj se \u00ebsht\u00eb e qart\u00eb se \u00e7far\u00eb na pengon. <\/p>\n<p><\/p>\n<p>Kush ka baz\u00ebn e t\u00eb dh\u00ebnave m\u00eb t\u00eb madhe se nj\u00eb terabajt? M\u00eb shum\u00eb se gjysma e sall\u00ebs. <\/p>\n<p><\/p>\n<p>Dhe \u00ebsht\u00eb e qart\u00eb se mbajtja e makinave p\u00ebr \u00e7do zhvillues, kur ka nj\u00eb prodhim kaq t\u00eb madh, \u00ebsht\u00eb shum\u00eb e shtrenjt\u00eb, dhe gjithashtu shum\u00eb e gjat\u00eb. <\/p>\n<p><\/p>\n<p>Kemi klient\u00eb q\u00eb kan\u00eb kuptuar se \u00ebsht\u00eb shum\u00eb e r\u00ebnd\u00ebsishme t\u00eb testojn\u00eb t\u00eb gjitha ndryshimet n\u00eb kopje me p\u00ebrmasa t\u00eb plota, por ata kan\u00eb baz\u00ebn m\u00eb t\u00eb vog\u00ebl se nj\u00eb terabajt, dhe nuk kan\u00eb burime p\u00ebr t\u00eb mbajtur nj\u00eb test stand p\u00ebr \u00e7do zhvillues. Prandaj, ata jan\u00eb t\u00eb detyruar t\u00eb shkarkojn\u00eb dumpet lokal n\u00eb makinat e tyre dhe t\u00eb testojn\u00eb n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb. Kjo merr shum\u00eb koh\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/8c1c804db71ffb5b79b5284670b3427b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Edhe n\u00ebse e b\u00ebni brenda infrastruktur\u00ebs, shkarkimi i nj\u00eb terabajti t\u00eb dh\u00ebnash n\u00eb or\u00eb \u2013 kjo \u00ebsht\u00eb shum\u00eb mir\u00eb. Por ata p\u00ebrdorin dumpet logjike, ata shkarkojn\u00eb lokal nga cloud. P\u00ebr ta, shpejt\u00ebsia \u00ebsht\u00eb rreth 200 gigabajt n\u00eb or\u00eb. Dhe duhet gjithashtu koh\u00eb p\u00ebr t'u zhvilluar nga dumpi logjik, p\u00ebr t\u00eb vendosur indekset etj.<\/p>\n<p><\/p>\n<p>Por ata e p\u00ebrdorin k\u00ebt\u00eb qasje, sepse kjo lejon t\u00eb mbaj\u00eb prodhimin t\u00eb besuesh\u00ebm. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebjm\u00eb k\u00ebtu? Le t\u00eb b\u00ebjm\u00eb q\u00eb testet standet t\u00eb jen\u00eb t\u00eb lira dhe t'i japim \u00e7do zhvilluesi test standin e tij t\u00eb vet.<\/p>\n<p><\/p>\n<p>Dhe kjo \u00ebsht\u00eb e mundur. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/a763fc2677fe93df884b80561b5270a2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb qasje, kur krijojm\u00eb klone t\u00eb holl\u00eb p\u00ebr secilin zhvillues, mund ta ndajm\u00eb k\u00ebt\u00eb n\u00eb nj\u00eb makin\u00eb. P\u00ebr shembull, n\u00ebse keni nj\u00eb baz\u00eb prej kat\u00ebr terabajt\u00ebsh dhe d\u00ebshironi t'ua jepni 10 zhvilluesve, nuk keni nevoj\u00eb p\u00ebr 10 her\u00eb kat\u00ebr terabajt\u00eb bazash. Mjafton nj\u00eb makin\u00eb p\u00ebr t\u00eb krijuar kopje t\u00eb izoluara t\u00eb holl\u00eb p\u00ebr secilin zhvillues, duke p\u00ebrdorur nj\u00eb makin\u00eb. Si funksionon do ta tregoj pak m\u00eb von\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/e8e9df7effb0d0241d90315f92b994c6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb shembull real:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>Baza e t\u00eb dh\u00ebnave \u2013 4.5 terabajt. <\/p>\n<p>\n<\/li>\n<li>\n<p>Mund t\u00eb marr\u00eb kopje t\u00eb pavarura p\u00ebr 30 sekonda. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Nuk keni nevoj\u00eb t\u00eb prisni p\u00ebr nj\u00eb q\u00ebnd\u00ebr testuese dhe t\u00eb vareni nga madh\u00ebsia e saj. Mund ta merrni at\u00eb p\u00ebr disa sekonda. Kjo do t\u00eb jet\u00eb ambient i plot\u00ebisht i izoluar, por q\u00eb ndajn\u00eb t\u00eb dh\u00ebnat midis tyre. <\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb fantastike. K\u00ebtu po flasim p\u00ebr magjin\u00eb dhe universin paralel. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/87e6a7e45548ed5dabd4fad01ea70616.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb rastin ton\u00eb, ky funksionon me sistemin OpenZFS. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/e75fed43703e26152a5a85f807064cb4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OpenZFS \u00ebsht\u00eb nj\u00eb sistem skedar\u00ebsh copy-on-write, q\u00eb nga norme mb\u00ebshtet snapshotet dhe klon\u00ebt. \u00cbsht\u00eb i besuesh\u00ebm dhe i shkall\u00ebzuesh\u00ebm. \u00cbsht\u00eb shum\u00eb e leht\u00eb p\u00ebr ta menaxhuar. Mund ta instaloni me dy komanda. <\/p>\n<p><\/p>\n<p>Ka edhe opsione t\u00eb tjera:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>LVM,<\/p>\n<p>\n<\/li>\n<li>\n<p>Sistemet e ruajtjes (p.sh., Pure Storage).<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Database Lab, p\u00ebr t\u00eb cilin po flas, \u00ebsht\u00eb modular. Mund t\u00eb implementohet duke p\u00ebrdorur k\u00ebto variante. Por p\u00ebr momentin kemi p\u00ebrqendruar v\u00ebmendjen n\u00eb OpenZFS, sepse konkretisht me LVM kishte probleme. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/41a49f6760ee96b55f49606f8e453992.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si funksionon? N\u00eb vend q\u00eb t\u00eb riparojm\u00eb t\u00eb dh\u00ebnat \u00e7do her\u00eb kur i ndryshojm\u00eb, ne i ruajm\u00eb duke sh\u00ebnuar se k\u00ebto t\u00eb dh\u00ebna t\u00eb reja i p\u00ebrkasin nj\u00eb momenti t\u00eb ri n\u00eb koh\u00eb, nj\u00eb snapshot t\u00eb ri. <\/p>\n<p><\/p>\n<p>Dhe m\u00eb pas, kur duam t\u00eb rikthehemi ose t\u00eb b\u00ebjm\u00eb nj\u00eb klon t\u00eb ri me nj\u00eb version m\u00eb t\u00eb vjet\u00ebr, thjesht themi: \"Ok, na jepni k\u00ebto blloqe t\u00eb dh\u00ebnash q\u00eb jan\u00eb t\u00eb markuara k\u00ebshtu.\" <\/p>\n<p><\/p>\n<p>Dhe ky p\u00ebrdorues do t\u00eb punoj\u00eb me k\u00ebt\u00eb grup t\u00eb dh\u00ebnash. Ai do t\u2019i ndryshoj\u00eb gradualisht, duke b\u00ebr\u00eb snapshotet e tij. <\/p>\n<p><\/p>\n<p>Dhe ne do t\u00eb kemi nj\u00eb deg\u00ebzim. \u00c7do zhvillues n\u00eb rastin ton\u00eb do t\u00eb ket\u00eb mund\u00ebsin\u00eb t\u00eb ket\u00eb klonin e tij, t\u00eb cilin e redakton, nd\u00ebrsa t\u00eb dh\u00ebnat q\u00eb jan\u00eb t\u00eb p\u00ebrbashk\u00ebta do t\u00eb ndahen mes t\u00eb gjith\u00ebve. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/78efd8b87f6559839af20a939b7c89d7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb implementuar nj\u00eb sistem t\u00eb till\u00eb, duhet t\u00eb zgjidhni dy probleme: <\/p>\n<p><\/p>\n<ul>\n<li>\n<p>E para, kjo \u00ebsht\u00eb burimi i t\u00eb dh\u00ebnave nga i cili do t\u2019i merrni ato. Mund t\u00eb vendosni replikimin me prodhimin. Mund t\u00eb p\u00ebrdorni kopje rezerv\u00eb q\u00eb keni t\u00eb konfigurura, shpresoj. WAL-E, WAL-G ose Barman. Dhe madje, n\u00ebse p\u00ebrdorni ndonj\u00eb zgjidhje Cloud, si RDS ose Cloud SQL, mund t\u00eb p\u00ebrdorni dump-a logjike. Por prap\u00eb, ne ju rekomandojm\u00eb t\u00eb p\u00ebrdorni kopje rezerv\u00eb, sepse me k\u00ebt\u00eb qasje do t\u00eb ruani gjithashtu struktur\u00ebn fizike t\u00eb skedar\u00ebve, q\u00eb do t\u00eb lejoj\u00eb t\u00eb jeni m\u00eb af\u00ebr atyre metrikeve q\u00eb do t\u00eb shihnit n\u00eb prodhim, p\u00ebr t\u00eb kapur problemet q\u00eb ekzistojn\u00eb. <\/p>\n<p>\n<\/li>\n<li>\n<p>E dyta \u2013 \u00ebsht\u00eb vendi ku d\u00ebshironi t\u00eb hostoni Database Lab. Mund t\u00eb jet\u00eb Cloud, mund t\u00eb jet\u00eb On-premise. K\u00ebtu \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb themi se ZFS mb\u00ebshtet kompresimin e t\u00eb dh\u00ebnave. Dhe e b\u00ebn k\u00ebt\u00eb mjaft mir\u00eb. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Imagjinoni q\u00eb \u00e7do klon i till\u00eb, n\u00eb var\u00ebsi t\u00eb operacioneve q\u00eb b\u00ebjm\u00eb me baz\u00ebn, do t\u00eb ket\u00eb nj\u00eb dev n\u00eb rritje. P\u00ebr k\u00ebt\u00eb dev gjithashtu do t\u00eb nevojitet hap\u00ebsir\u00eb. Por p\u00ebr shkak se mor\u00ebm nj\u00eb baz\u00eb prej 4.5 terabajt\u00ebsh, ZFS do ta comprimoj\u00eb at\u00eb n\u00eb 3.5 terabajt\u00eb. N\u00eb var\u00ebsi t\u00eb cil\u00ebsimeve, kjo mund t\u00eb varioj\u00eb. Dhe ne gjithashtu do t\u00eb kemi hap\u00ebsir\u00eb t\u00eb mbetur p\u00ebr dev. <\/p>\n<p><\/p>\n<p>Nj\u00eb sistem t\u00eb till\u00eb mund ta p\u00ebrdorni p\u00ebr raste t\u00eb ndryshme. <\/p>\n<p><\/p>\n<ul>\n<li>\n<p>K\u00ebta jan\u00eb zhvilluesit, DBA p\u00ebr kontrollimin e pyetjeve, p\u00ebr optimizimin. <\/p>\n<p>\n<\/li>\n<li>\n<p>Kjo mund t\u00eb p\u00ebrdoret n\u00eb testimin QA p\u00ebr t\u00eb kontrolluar nj\u00eb migrim t\u00eb ve\u00e7ant\u00eb para se ta ndajm\u00eb at\u00eb n\u00eb prodhim. Gjithashtu mund t\u00eb krijojm\u00eb ambiente t\u00eb ve\u00e7anta p\u00ebr QA me t\u00eb dh\u00ebna reale, ku ata mund t\u00eb testojn\u00eb funksionalitetin e ri. Dhe do t\u00eb marr\u00eb disa sekonda n\u00eb vend t\u00eb or\u00ebve, madje ndoshta edhe dit\u00ebve n\u00eb disa raste ku kopjet e holla nuk p\u00ebrdoren. <\/p>\n<p>\n<\/li>\n<li>\n<p>Dhe nj\u00eb rast i ve\u00e7ant\u00eb. N\u00ebse kompania nuk ka vendosur nj\u00eb sistem analitik, at\u00ebher\u00eb mund t\u00eb ndajm\u00eb nj\u00eb klon t\u00eb holl\u00eb t\u00eb baz\u00ebs s\u00eb produktit dhe ta japim p\u00ebr k\u00ebrkesa t\u00eb gjata ose p\u00ebr indekse t\u00eb ve\u00e7anta q\u00eb mund t\u00eb p\u00ebrdoren n\u00eb analiz\u00eb.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/5fb0944f063c981f27449d948a59b73b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me k\u00ebt\u00eb qasje:<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Probabilitet i ul\u00ebt p\u00ebr gabime n\u00eb \u201cprodhim\u201d, sepse t\u00eb gjitha ndryshimet i kemi testuar mbi t\u00eb dh\u00ebna me p\u00ebrmasat e plota. <\/p>\n<p>\n<\/li>\n<li>\n<p>Na krijohet nj\u00eb kultur\u00eb e testimit, pasi tani nuk \u00ebsht\u00eb e nevojshme t\u00eb presim me or\u00eb p\u00ebr ambientin ton\u00eb. <\/p>\n<p>\n<\/li>\n<li>\n<p>Dhe nuk ka pengesa, nuk ka pritje midis testeve. Ju v\u00ebrtet mund t\u00eb shkoni dhe t\u00eb kontrolloni. Dhe k\u00ebshtu do t\u00eb jet\u00eb m\u00eb mir\u00eb, pasi do t\u00eb p\u00ebrshpejtojm\u00eb zhvillimin. <\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<ul>\n<li>\n<p>Do t\u2019i kemi m\u00eb pak refaktoring. M\u00eb pak defekte do t\u00eb shkojn\u00eb n\u00eb prodhim. Ne do t\u2019i refaktojm\u00eb m\u00eb pak m\u00eb von\u00eb. <\/p>\n<p>\n<\/li>\n<li>\n<p>Ne mund t\u00eb b\u00ebjm\u00eb ndryshime t\u00eb pakthyeshme. Kjo nuk \u00ebsht\u00eb e zakonshme n\u00eb qasjet standarde. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<ol>\n<li>Kjo \u00ebsht\u00eb e favorshme, sepse ndajm\u00eb burimet e testeve. <\/li>\n<\/ol>\n<p><\/p>\n<p>Ka shum\u00eb mir\u00eb, \u00e7far\u00eb tjet\u00ebr mund t\u00eb p\u00ebrshpejtohet?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/d692f76b865c18ed4c178d1a1440774b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Fal\u00eb k\u00ebsaj sisteme, mund t\u00eb zvog\u00eblojm\u00eb ndjesh\u00ebm pragun e hyrjes n\u00eb k\u00ebt\u00eb lloj testimi. <\/p>\n<p><\/p>\n<p>Aktualisht ekziston nj\u00eb qark i mbyllur, kur zhvilluesi, p\u00ebr t\u00eb pasur qasje n\u00eb t\u00eb dh\u00ebnat reale dhe t\u00eb plota, duhet t\u00eb b\u00ebhet nj\u00eb ekspert. Ata duhet t\u00eb besojn\u00eb nj\u00eb akses t\u00eb till\u00eb. <\/p>\n<p><\/p>\n<p>Por si mund t\u00eb rritemi, n\u00ebse nuk ka nj\u00eb t\u00eb till\u00eb. \u00c7far\u00eb n\u00ebse t\u00eb dh\u00ebnat testuese q\u00eb keni jan\u00eb shum\u00eb t\u00eb pakta? At\u00ebher\u00eb nuk do t\u00eb arrini nj\u00eb eksperienc\u00eb reale. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/221f7b02294878aea1d0ebe6df5d9717.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si t\u00eb dalim nga ky qark? Si nj\u00eb nd\u00ebrfaqe e par\u00eb, e leht\u00eb p\u00ebr zhvilluesit nga \u00e7do nivel, kemi zgjedhur nj\u00eb bot Slack. Por mund t\u00eb jet\u00eb \u00e7do nd\u00ebrfaqe tjet\u00ebr. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb lejon t\u00eb b\u00ebjm\u00eb? Mund t\u00eb marrim nj\u00eb k\u00ebrkes\u00eb specifike dhe ta d\u00ebrgojm\u00eb at\u00eb n\u00eb nj\u00eb kanal t\u00eb ve\u00e7ant\u00eb p\u00ebr baz\u00ebn e t\u00eb dh\u00ebnave. Ne automatikisht do ta nxjerrim nj\u00eb klon t\u00eb holl\u00eb n\u00eb sekonda. Do ta ekzekutojm\u00eb at\u00eb k\u00ebrkes\u00eb. Do t\u00eb grumbullojm\u00eb metrikat dhe rekomandimet. Do ta tregojm\u00eb vizualizimin. Dhe m\u00eb pas, ky klon do t\u00eb mbetet p\u00ebr optimizimin e k\u00ebrkes\u00ebs, p\u00ebr t\u00eb shtuar indekse, etj. <\/p>\n<p><\/p>\n<p>Dhe gjithashtu Slack na ofron mund\u00ebsi p\u00ebr bashk\u00ebpunim nga kutia. Pasi q\u00eb \u00ebsht\u00eb thjesht nj\u00eb kanal, atje mund t\u00eb nisni diskutimin p\u00ebr nj\u00eb k\u00ebrkes\u00eb t\u00eb till\u00eb direkt n\u00eb thread, t\u00eb kontaktoni koleg\u00ebt tuaj, DBA t\u00eb cil\u00ebt jan\u00eb brenda kompanis\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/b4a6410b625107c5bbbf57c021159914.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por, natyrisht, ka edhe probleme. Pasi q\u00eb kjo \u00ebsht\u00eb bota reale, dhe ne po p\u00ebrdorim nj\u00eb server q\u00eb po pret shum\u00eb klone, na duhet t\u00eb kufizojm\u00eb sasin\u00eb e MEMORIE dhe fuqin\u00eb procesorike q\u00eb klon\u00ebt kan\u00eb akses. <\/p>\n<p><\/p>\n<p>Por p\u00ebr t\u00eb b\u00ebr\u00eb q\u00eb k\u00ebto teste t\u00eb jen\u00eb t\u00eb besueshme, duhet ta zgjidhim k\u00ebt\u00eb problem n\u00eb nj\u00eb far\u00eb m\u00ebnyre. <\/p>\n<p><\/p>\n<p>E qart\u00eb \u00ebsht\u00eb se nj\u00eb pik\u00eb e r\u00ebnd\u00ebsishme jan\u00eb t\u00eb dh\u00ebnat e nj\u00ebjta. Por ne tashm\u00eb i kemi ato. Dhe na p\u00eblqen t\u00eb arrijm\u00eb nj\u00eb konfigurim t\u00eb nj\u00ebjt\u00eb. Dhe ne mund t\u00eb ofrojm\u00eb nj\u00eb konfigurim praktikisht t\u00eb nj\u00ebjt\u00eb. <\/p>\n<p><\/p>\n<p>Do t\u00eb ishte fantastike t\u00eb kishim harduerin e nj\u00ebjt\u00eb si n\u00eb prodhim, por ai mund t\u00eb ndryshoj\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/5efae55189175262d56a33b89c55ed29.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Le t\u00eb kujtojm\u00eb se si funksionon Postgres me memorien. Ne kemi dy cache. Nj\u00eb nga sistemi i skedar\u00ebve dhe nj\u00eb nga Postgres vet\u00eb, dmth. Shared Buffer Cache. <\/p>\n<p><\/p>\n<p>\u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb theksohet se Shared Buffer Cache aloklohet gjat\u00eb fillimit t\u00eb Postgres n\u00eb var\u00ebsi t\u00eb madh\u00ebsis\u00eb q\u00eb do t\u00eb caktosh n\u00eb konfigurim. <\/p>\n<p><\/p>\n<p>Dhe caches e dyta p\u00ebrdor gjith hap\u00ebsir\u00ebn e disponueshme. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/f1f3c85e786649f83d5c17e6724086a9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe kur b\u00ebjm\u00eb disa klone n\u00eb nj\u00eb makin\u00eb, rezulton se ngadal\u00eb e mbushim memorien. N\u00eb fakt, Shared Buffer Cache \u00ebsht\u00eb 25% e gjith\u00eb memorjes q\u00eb \u00ebsht\u00eb e disponueshme n\u00eb makin\u00ebn ton\u00eb. <\/p>\n<p><\/p>\n<p>Dhe rezulton se n\u00ebse nuk e ndryshojm\u00eb k\u00ebt\u00eb parametrin, do t\u00eb mund t\u00eb nisim vet\u00ebm 4 instance n\u00eb nj\u00eb makin\u00eb, pra 4 klone t\u00eb tilla t\u00eb holla. Dhe kjo, sigurisht, \u00ebsht\u00eb e keqe, sepse duam t\u00eb kemi shum\u00eb m\u00eb tep\u00ebr. <\/p>\n<p><\/p>\n<p>Por, nga ana tjet\u00ebr, Buffer Cache p\u00ebrdoret p\u00ebr ekzekutimin e k\u00ebrkesave, p\u00ebr indeksat, pra plani varet nga madh\u00ebsia e caches tona. Dhe n\u00ebse thjesht e marrim k\u00ebt\u00eb parametrin dhe e paksojm\u00eb, at\u00ebher\u00eb planet tona mund t\u00eb ndryshojn\u00eb ndjesh\u00ebm.<\/p>\n<p><\/p>\n<p>P\u00ebr shembull, n\u00ebse n\u00eb prodhim kemi nj\u00eb cache t\u00eb madhe, at\u00ebher\u00eb Postgres do t\u00eb preferonte t\u00eb p\u00ebrdor\u00eb indeksin. E n\u00ebse jo, at\u00ebher\u00eb do t\u00eb jet\u00eb SeqScan. Dhe \u00e7far\u00eb do kishte kuptim, n\u00ebse planet tona nuk do t\u00eb p\u00ebrputheshin? <\/p>\n<p><\/p>\n<p>Por k\u00ebtu arrijm\u00eb n\u00eb zgjidhjen se n\u00eb t\u00eb v\u00ebrtet\u00eb plani n\u00eb Postgres nuk varet nga madh\u00ebsia konkretisht e caktuar n\u00eb Shared Buffer, por varet nga effective_cache_size.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/1457fd7b65c342f64733b952130125cf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Effective_cache_size \u00ebsht\u00eb v\u00ebllimi i supozuar i caches q\u00eb kemi n\u00eb dispozicion, pra n\u00eb p\u00ebrmbledhje Buffer Cache dhe cache e sistemit t\u00eb skedar\u00ebve. Kjo caktohet me konfigurimin. Dhe kjo memorie nuk alokohet. <\/p>\n<p><\/p>\n<p>Dhe p\u00ebrmes k\u00ebtij parametri, mund ta mashtrojm\u00eb Postgres, duke i th\u00ebn\u00eb se n\u00eb t\u00eb v\u00ebrtet\u00eb kemi shum\u00eb t\u00eb dh\u00ebna n\u00eb dispozicion, edhe n\u00ebse ato t\u00eb dh\u00ebna nuk i kemi. Dhe k\u00ebshtu, planet do t\u00eb p\u00ebrputhen plot\u00ebsisht me prodhimin. <\/p>\n<p><\/p>\n<p>Por kjo mund t\u00eb ndikoj\u00eb n\u00eb koh\u00ebn p\u00ebrfundimtare. Dhe ne optimizojm\u00eb k\u00ebrkesat sipas koh\u00ebs, por \u00ebsht\u00eb e r\u00ebnd\u00ebsishme q\u00eb koha varet nga shum\u00eb faktor\u00eb: <\/p>\n<p><\/p>\n<ul>\n<li>\n<p>Varet nga ngarkesa q\u00eb momentalisht ka n\u00eb prodhim. <\/p>\n<p>\n<\/li>\n<li>\n<p>Varet nga karakteristikat e vet\u00eb makin\u00ebs. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Dhe ky \u00ebsht\u00eb nj\u00eb parametr i t\u00ebrthor, por n\u00eb t\u00eb v\u00ebrtet\u00eb mund t\u00eb optimizojm\u00eb sakt\u00ebsisht sipas sasis\u00eb s\u00eb t\u00eb dh\u00ebnave q\u00eb kjo k\u00ebrkes\u00eb do t\u00eb lexoj\u00eb p\u00ebr t\u00eb marr\u00eb rezultatin. <\/p>\n<p><\/p>\n<p>Dhe n\u00ebse d\u00ebshirojm\u00eb q\u00eb koha e ekzekutimit t\u00eb jet\u00eb e ngjashme me at\u00eb q\u00eb do t\u00eb shohim n\u00eb prodhim, ne duhet t\u00eb marrim pajisje sa m\u00eb t\u00eb ngjashme dhe, ndoshta, madje edhe m\u00eb shum\u00eb, q\u00eb t\u00eb gjith\u00eb klon\u00ebt t\u00eb vendosen. Por kjo \u00ebsht\u00eb nj\u00eb kompromis, dometh\u00ebn\u00eb, do t\u00eb merrni t\u00eb nj\u00ebjtat plane, do t\u00eb shihni sa t\u00eb dh\u00ebna lexon nj\u00eb k\u00ebrkes\u00eb e caktuar dhe do t\u00eb jeni n\u00eb gjendje t\u00eb b\u00ebni nj\u00eb p\u00ebrfundim \u2013 a \u00ebsht\u00eb kjo k\u00ebrkes\u00eb e mir\u00eb (ose migrimi) apo e keqe, duhet t\u00eb optimizohet m\u00eb tej. <\/p>\n<p><\/p>\n<p>Le t\u00eb shohim se si pro\u00e7esohet optimizimi konkret me Joe. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/26c892a0b2d417f9806cfb77d2ea47f6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00eb marrim nj\u00eb k\u00ebrkes\u00eb nga nj\u00eb sistem real. N\u00eb k\u00ebt\u00eb rast, baza e t\u00eb dh\u00ebnave ka nj\u00eb terabajt. Dhe ne duam t\u00eb llogarisim numrin e postimeve t\u00eb reja, t\u00eb cilat kishin m\u00eb shum\u00eb se 10 p\u00eblqime. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/befd651abed6688127f52db39138a4be.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne shkruajm\u00eb nj\u00eb mesazh n\u00eb kanal, u krijua p\u00ebr ne nj\u00eb klon. Dhe do t\u00eb shohim se kjo k\u00ebrkes\u00eb do t\u00eb ekzekutohet brenda 2.5 minutash. Kjo \u00ebsht\u00eb e para q\u00eb do t\u00eb v\u00ebm\u00eb re.<\/p>\n<p><\/p>\n<p>Joe do t\u00eb tregoj\u00eb rekomandime automatike, t\u00eb bazuara n\u00eb planin dhe metrikat. <\/p>\n<p><\/p>\n<p>Ne do t\u00eb shohim se k\u00ebrkesa p\u00ebrpunon shum\u00eb t\u00eb dh\u00ebna, p\u00ebr t\u00eb marr\u00eb nj\u00eb num\u00ebr p\u00ebrqindsh\u00ebm t\u00eb vog\u00ebl t\u00eb rreshtave. Dhe na nevojitet ndonj\u00eb indeks i specializuar, p\u00ebr shkak se kemi kuptuar se k\u00ebrkesa ka shum\u00eb rreshta t\u00eb filtruar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/7f40e41314ebc682a1a64a2958dec16c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Le t\u00eb shohim m\u00eb nga af\u00ebr se \u00e7far\u00eb ndodhi. V\u00ebrtet, ne shohim se lexohet pothuajse nj\u00eb e gjysm\u00eb gigabajt t\u00eb dh\u00ebnash nga cache e skedar\u00ebve ose madje edhe nga disku. Dhe kjo nuk \u00ebsht\u00eb e mir\u00eb, pasi kemi marr\u00eb vet\u00ebm 142 rreshta. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/30aaff5da2536fa27efc6591f645d6f9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe, si\u00e7 duket, ne kemi skanim t\u00eb indeksit dhe duhej t\u00eb kishte punuar shpejt, por, pasi ne filtruam shum\u00eb rreshta (na duhej t'i num\u00ebronim), k\u00ebrkesa punoi ngadal\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/40958fbc04d4eb738f6a16488647bd8c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe kjo ndodhi n\u00eb plan p\u00ebr shkak se kushtet n\u00eb k\u00ebrkes\u00eb dhe kushtet n\u00eb indeks nuk p\u00ebrputhen plot\u00ebsisht. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/196ca5116e641c72bc1009e97c390bc7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Le t\u00eb p\u00ebrpiqemi t\u00eb b\u00ebjm\u00eb indeksin m\u00eb t\u00eb sakt\u00eb dhe t\u00eb shohim se si do t\u00eb ndryshoj\u00eb ekzekutimi i k\u00ebrkes\u00ebs pas k\u00ebsaj. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/646a73964f0b6d3615eedb8acb3aa216.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Krijimi i indeksit mori mjaft koh\u00eb, por tani ne kontrollojm\u00eb k\u00ebrkes\u00ebn dhe shohim se koha n\u00eb vend t\u00eb 2.5 minutave u reduktua n\u00eb vet\u00ebm 156 milisekonda, q\u00eb \u00ebsht\u00eb shum\u00eb mir\u00eb. Dhe ne lexojm\u00eb vet\u00ebm 6 megabajt t\u00eb dh\u00ebnash.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/5cce2d6ecf2314c0575c0fed107f6d5a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe tani kemi p\u00ebrdorur skanimin e vet\u00ebm t\u00eb indeksit.<\/p>\n<p><\/p>\n<p>Nj\u00eb histori tjet\u00ebr e r\u00ebnd\u00ebsishme \u00ebsht\u00eb q\u00eb ne d\u00ebshirojm\u00eb t\u00eb paraqesim planin n\u00eb nj\u00eb m\u00ebnyr\u00eb m\u00eb t\u00eb kuptueshme. Ne kemi implementuar vizualizimin me ndihm\u00ebn e Flame Graphs. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/f4f545bfbf52fd66b6cbe45e1d6d0b6c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ky \u00ebsht\u00eb nj\u00eb k\u00ebrkes\u00eb tjet\u00ebr, m\u00eb e nd\u00ebrlikuar. Dhe ne nd\u00ebrtojm\u00eb Flame Graphs sipas dy parametrave: \u00ebsht\u00eb sasia e t\u00eb dh\u00ebnave q\u00eb nj\u00eb node specifike n\u00eb plan e ka lexuar dhe koha e ekzekutimit t\u00eb nod\u00ebs. <\/p>\n<p><\/p>\n<p>K\u00ebtu mund t\u00eb krahasojm\u00eb konkretisht nodet me nj\u00ebri-tjetrin. Dhe do t\u00eb jet\u00eb e qart\u00eb se cili prej tyre merr m\u00eb shum\u00eb ose m\u00eb pak, gj\u00eb q\u00eb zakonisht \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb b\u00ebhet me metoda t\u00eb tjera vizualizimi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/c477d2f32241c69eb0b38ef45ff4708b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sigurisht, t\u00eb gjith\u00eb e njohin explain.depesz.com. Nj\u00eb tipar i mir\u00eb i k\u00ebsaj vizualizimi \u00ebsht\u00eb se ne ruajm\u00eb planin tekstual dhe gjithashtu nxjerrim disa parametra kryesor\u00eb n\u00eb tabel\u00eb, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mund t\u00eb renditim. <\/p>\n<p><\/p>\n<p>Dhe zhvilluesit, t\u00eb cil\u00ebt nuk jan\u00eb thelluar ende n\u00eb k\u00ebt\u00eb tem\u00eb, gjithashtu e p\u00ebrdorin explain.depesz.com, sepse p\u00ebr ta \u00ebsht\u00eb m\u00eb e leht\u00eb t\u00eb kuptojn\u00eb cilat metrika jan\u00eb t\u00eb r\u00ebnd\u00ebsishme dhe cilat jo. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/a7352b5b9abf27294375c78bec69d4d4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ka nj\u00eb qasje t\u00eb re p\u00ebr vizualizimin \u2013 kjo \u00ebsht\u00eb explain.dalibo.com. Ata b\u00ebjn\u00eb nj\u00eb vizualizim n\u00eb form\u00eb t\u00eb pem\u00ebs, por k\u00ebtu \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb t\u00eb krahasosh nodet me nj\u00ebri-tjetrin. K\u00ebtu mund t\u00eb kuptoni mir\u00eb struktur\u00ebn, por n\u00ebse ka nj\u00eb pyetje t\u00eb madhe, do t\u00eb duhet t\u00eb skrolloni andej-k\u00ebndej, por gjithsesi \u00ebsht\u00eb nj\u00eb variant. <\/p>\n<p><\/p>\n<h2 id=\"kollaboraciya\">Kolaborimi<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/7101c0b95eafed8fd9305a4630399e3b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe, si\u00e7 e p\u00ebrmenda, Slack na ofron mund\u00ebsin\u00eb e kolaborimit. P\u00ebr shembull, n\u00ebse hasim nj\u00eb k\u00ebrkes\u00eb t\u00eb komplikuar, t\u00eb cil\u00ebn nuk e dim\u00eb si ta optimizojm\u00eb, mund ta sqarojm\u00eb k\u00ebt\u00eb pyetje n\u00eb thread n\u00eb Slack me koleg\u00ebt tan\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"DBA-boti Joe. Anatoly Stansler (Postgres.ai)\" src=\"\/wp-content\/uploads\/2020\/10\/14b8f9c3401ecb68ac1ef56bc0cb0fa5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Na duket e r\u00ebnd\u00ebsishme t\u00eb testojm\u00eb me t\u00eb dh\u00ebna n\u00eb mas\u00eb t\u00eb plot\u00eb. P\u00ebr k\u00ebt\u00eb kemi krijuar mjetin Update Database Lab, i cili \u00ebsht\u00eb i disponuesh\u00ebm n\u00eb open source. Ju gjithashtu mund t\u00eb p\u00ebrdorni botin Joe. Mund ta merrni at\u00eb pik\u00ebrisht tani dhe ta integrojeni te ju. T\u00eb gjitha udh\u00ebzimet jan\u00eb n\u00eb dispozicion atje. <\/p>\n<p><\/p>\n<p>\u00cbsht\u00eb gjithashtu e r\u00ebnd\u00ebsishme t\u00eb theksohet se vet\u00eb zgjidhja nuk \u00ebsht\u00eb ndonj\u00eb revolucionare, sepse ekziston Delphix, por kjo \u00ebsht\u00eb nj\u00eb zgjidhje enterprise. Ajo \u00ebsht\u00eb plot\u00ebsisht e mbyllur, kushton shum\u00eb shtrenjt\u00eb. Ne specializohemi pik\u00ebrisht n\u00eb Postgres. T\u00eb gjitha k\u00ebto jan\u00eb produkte open source. Bashkohuni me ne! <\/p>\n<p><\/p>\n<p>K\u00ebtu e p\u00ebrfundoj. Faleminderit!<\/p>\n<p><\/p>\n<h2 id=\"voprosy\">Pyetje<\/h2>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Faleminderit p\u00ebr raportin! Shum\u00eb interesante, sidomos p\u00ebr mua, sepse kam zgjidhur nj\u00eb detyr\u00eb t\u00eb ngjashme disa koh\u00eb m\u00eb par\u00eb. Prandaj kam nj\u00eb seri pyetjesh. Shpresoj t\u00eb pakt\u00ebn t\u00eb b\u00ebj disa prej tyre.<\/em><\/p>\n<p><\/p>\n<p><em>\u00cbsht\u00eb interesante, si e llogaritni hap\u00ebsir\u00ebn p\u00ebr k\u00ebt\u00eb mjedis? Teknologjia n\u00ebnkupton se, n\u00ebn rrethana t\u00eb caktuara, klon\u00ebt tuaj mund t\u00eb rriten n\u00eb madh\u00ebsin\u00eb maksimale. N\u00eb thelb, n\u00ebse keni nj\u00eb baz\u00eb dhjet\u00eb tera dhe 10 klon\u00eb, \u00ebsht\u00eb e leht\u00eb t\u00eb simuloni nj\u00eb situat\u00eb n\u00eb t\u00eb cil\u00ebn \u00e7do klon do t\u00eb peshoj\u00eb me 10 t\u00eb dh\u00ebna unike. Si e llogaritni k\u00ebt\u00eb hap\u00ebsir\u00eb, pra at\u00eb diferenc\u00eb, p\u00ebr t\u00eb cil\u00ebn flisnit, n\u00eb t\u00eb cil\u00ebn do t\u00eb jetojn\u00eb k\u00ebta klon\u00eb?<\/em><\/p>\n<p><\/p>\n<p>Nj\u00eb pyetje e mir\u00eb. K\u00ebtu \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb monitorosh klonat specifike. Dhe n\u00ebse ndonj\u00eb ndryshim i madh ndodh te nj\u00eb klon, ai fillon t\u00eb rritet, at\u00ebher\u00eb mund t\u00eb japim fillimisht nj\u00eb paralajm\u00ebrim p\u00ebr p\u00ebrdoruesin rreth k\u00ebsaj, ose menj\u00ebher\u00eb t\u00eb ndalojm\u00eb at\u00eb klon, p\u00ebr t\u00eb shmangur nj\u00eb situat\u00eb q\u00eb d\u00ebshtojn\u00eb. <\/p>\n<p><\/p>\n<p><em>Po, kam nj\u00eb pyetje t\u00eb n\u00ebnshtrohet. Pra, si siguroheni p\u00ebr ciklin e jet\u00ebs s\u00eb k\u00ebtyre moduleve? Kjo \u00ebsht\u00eb nj\u00eb problem dhe nj\u00eb histori e t\u00ebr\u00eb p\u00ebr ne. Si ndodh kjo?<\/em><\/p>\n<p><\/p>\n<p>Ka nj\u00eb ttl p\u00ebr secilin klon. N\u00eb parim, ne kemi nj\u00eb ttl t\u00eb caktuar. <\/p>\n<p><\/p>\n<p><em>Cili \u00ebsht\u00eb, n\u00ebse nuk \u00ebsht\u00eb sekret?<\/em><\/p>\n<p><\/p>\n<p>1 or\u00eb, pra idle - 1 or\u00eb. N\u00ebse nuk p\u00ebrdoret, at\u00ebher\u00eb ne e shkat\u00ebrrojm\u00eb at\u00eb. Por k\u00ebtu nuk ka asnj\u00eb surpriz\u00eb, p\u00ebr shkak se mund ta ngrisim klonin p\u00ebr sekonda. Dhe n\u00ebse na nevojitet p\u00ebrs\u00ebri, at\u00ebher\u00eb - s'ka problem. <\/p>\n<p><\/p>\n<p><em>M\u00eb intereson p\u00ebrzgjedhja e teknologjive gjithashtu, sepse ne, p\u00ebr shembull, p\u00ebrdorim disa m\u00ebnyra paralelisht p\u00ebr arsye t\u00eb ndryshme. Pse ZFS sakt\u00ebsisht? Pse nuk keni p\u00ebrdorur LVM? Keni p\u00ebrmendur se pat\u00ebt probleme me LVM. \u00c7far\u00eb probleme ishin? N\u00eb mendimin tim, opsioni m\u00eb optimal \u00ebsht\u00eb ai me SAN, nga pik\u00ebpamja e performanc\u00ebs.<\/em> <\/p>\n<p><\/p>\n<p><em>Cila \u00ebsht\u00eb problemi kryesor me ZFS? Ajo \u00ebsht\u00eb se duhet ta drejtojn\u00eb n\u00eb nj\u00eb host, pra t\u00eb gjitha instancat do t\u00eb jetojn\u00eb brenda nj\u00eb operacioni. Nd\u00ebrsa me SAN, mund t\u00eb lidhni pajisje t\u00eb ndryshme. Dhe ngushtica jan\u00eb vet\u00ebm ato blloqe q\u00eb jan\u00eb n\u00eb SAN. Dhe pyetja e zgjedhjes s\u00eb teknologjive \u00ebsht\u00eb interesante. Pse jo LVM?<\/em><\/p>\n<p><\/p>\n<p>N\u00eb lidhje me LVM mund t\u00eb diskutojm\u00eb n\u00eb takimin. P\u00ebr SAN - \u00ebsht\u00eb thjesht e shtrenjt\u00eb. Ne mund ta implementojm\u00eb sistemin ZFS kudo. Mund ta shtroni at\u00eb n\u00eb makin\u00ebn tuaj. Thjesht mund ta shkarkoni depozit\u00ebn dhe ta shtroni at\u00eb. ZFS mund t\u00eb instalohet praktikisht kudo, n\u00ebse po flasim p\u00ebr Linux. Pra, ne marrim nj\u00eb zgjidhje shum\u00eb fleksib\u00ebl. Dhe ZFS vet\u00eb nga kutia ofron shum\u00eb. Mund t\u00eb ngarkoni aq shum\u00eb t\u00eb dh\u00ebna sa d\u00ebshironi, t\u00eb lidhni nj\u00eb num\u00ebr t\u00eb madh diskesh, ka snapshot-e. Dhe, si\u00e7 e thash\u00eb, \u00ebsht\u00eb fare e leht\u00eb p\u00ebr t'u administruar. Pra, ai duket shum\u00eb i k\u00ebndsh\u00ebm p\u00ebr p\u00ebrdorim. Ai \u00ebsht\u00eb provuar, ka shum\u00eb vjet. Ka nj\u00eb komunitet shum\u00eb t\u00eb madh, q\u00eb po rritet. ZFS \u00ebsht\u00eb nj\u00eb zgjidhje shum\u00eb e besueshme. <\/p>\n<p><\/p>\n<p>Nikola Samokhvalov: Mund t\u00eb komentoj edhe un\u00eb? M\u00eb quajn\u00eb Nikola, punoj s\u00eb bashku me Anatolijn. Jam dakord q\u00eb SAN \u00ebsht\u00eb e shk\u00eblqyer. Disa nga klient\u00ebt tan\u00eb kan\u00eb Pure Storage e k\u00ebshtu me radh\u00eb. <\/p>\n<p><\/p>\n<p>Anatoly aptly noted that we are focused on modularity. In the future, it will be possible to implement a single interface \u2013 take a snapshot, make a clone, destroy a clone. It's all easy. And the SCD is great if it exists.<\/p>\n<p><\/p>\n<p>But ZFS is available to everyone. Enough with Delphix, they have 300 clients. Of those, 50 are in the fortune 100, meaning they are targeting NASA, etc. It\u2019s time for everyone to access this technology. That\u2019s why we have the open source Core. We do have part of the interface that isn't open source. This is a platform we will showcase. But we want it to be available to everyone. We aim to make a revolution so that all testers stop guessing on laptops. We must write SELECT and immediately see if it's slow. No more waiting for the DBA to tell us. That is the main goal. And I believe we will all get there. This thing we're creating is meant to be available to all. Hence ZFS, as it will be accessible everywhere. Thank you to the community for solving problems and for having an open source license, etc. <\/p>\n<p><\/p>\n<p><em>Greetings! Thank you for the presentation! My name is Maxim. We faced similar problems. We solved them on our end. How do you allocate resources between these clones? Each clone can be engaged in its own task at any moment: one is testing one thing, another is testing something else, someone is building an index, and someone has a heavy job running. While CPU can still be divided, how do you divide it in terms of IO? That\u2019s my first question.<\/em><\/p>\n<p><\/p>\n<p><em>My second question is about the dissimilarity of environments. Suppose I have ZFS here and everything is great, but the client's prod environment is using ext4, for example. How do you handle that?<\/em><\/p>\n<p><\/p>\n<p>These are very good questions. I briefly mentioned the issue with resource allocation. The solution comes down to this. Imagine you are testing in staging. You might have a situation where one person creates one load while someone else creates another. As a result, you're seeing unclear metrics. The same issue could occur in prod too. When you want to check a query and see that there\u2019s some issue with it \u2013 it\u2019s running slowly \u2013 in reality, the problem isn\u2019t with the query but rather with some parallel load. <\/p>\n<p><\/p>\n<p>Prandaj, k\u00ebtu \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb p\u00ebrqendrohemi n\u00eb at\u00eb q\u00eb do t\u00eb jet\u00eb plani, cilat hapa do t\u00eb ndjekim dhe sa t\u00eb dh\u00ebna do t\u00eb ngrem\u00eb p\u00ebr k\u00ebt\u00eb. Ajo q\u00eb disk\u00ebt tan\u00eb, p\u00ebr shembull, do t\u00eb ngarkohen me di\u00e7ka, do t\u00eb ndikoj\u00eb konkretisht n\u00eb koh\u00ebn. Por ne mund t\u00eb vler\u00ebsojm\u00eb sa i ngarkuar \u00ebsht\u00eb ky k\u00ebrkes\u00eb n\u00eb baz\u00eb t\u00eb sasis\u00eb s\u00eb t\u00eb dh\u00ebnave. Nuk \u00ebsht\u00eb aq e r\u00ebnd\u00ebsishme q\u00eb n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb do t\u00eb ket\u00eb ndonj\u00eb ekzekutimin tjet\u00ebr. <\/p>\n<p><\/p>\n<p><em>Kam dy pyetje. Kjo \u00ebsht\u00eb gj\u00ebja shum\u00eb e bukur. A ka pasur raste kur t\u00eb dh\u00ebnat n\u00eb prodhim jan\u00eb kritikisht t\u00eb r\u00ebnd\u00ebsishme, p\u00ebr shembull, numra t\u00eb kartave t\u00eb kreditit? A ka ndonj\u00eb gj\u00eb t\u00eb gatshme tashm\u00eb apo \u00ebsht\u00eb nj\u00eb detyr\u00eb e ve\u00e7ant\u00eb? Dhe pyetja e dyt\u00eb - a ka ndonj\u00eb gj\u00eb t\u00eb till\u00eb p\u00ebr MySQL?<\/em><\/p>\n<p><\/p>\n<p>P\u00ebr sa i p\u00ebrket t\u00eb dh\u00ebnave. Ne do t\u00eb kryejm\u00eb obfuskimin, derisa ne ta b\u00ebjm\u00eb k\u00ebt\u00eb. Por n\u00ebse ju e zhvilloni pik\u00ebrisht Joe, n\u00ebse nuk jepni qasje zhvilluesve, at\u00ebher\u00eb nuk ka qasje n\u00eb t\u00eb dh\u00ebna. Pse? Sepse Joe nuk tregon t\u00eb dh\u00ebna. Ai tregon vet\u00ebm matjet, planet dhe gjith\u00e7ka tjet\u00ebr. Kjo \u00ebsht\u00eb b\u00ebr\u00eb q\u00ebllimisht, pasi \u00ebsht\u00eb nj\u00eb nga k\u00ebrkesat e klientit ton\u00eb. Ata donin t\u00eb kishin mund\u00ebsin\u00eb t\u00eb optimizonin, por pa i dh\u00ebn\u00eb qasje t\u00eb gjith\u00ebve. <\/p>\n<p><\/p>\n<p>P\u00ebr sa i p\u00ebrket MySQL. Ky sistem mund t\u00eb p\u00ebrdoret p\u00ebr \u00e7do gj\u00eb q\u00eb ruan gjendjen n\u00eb disk. Dhe pasiq\u00eb ne merremi me Postgres, aktualisht jemi fokusuar kryesisht n\u00eb automatizimin e plot\u00eb p\u00ebr Postgres. Ne d\u00ebshirojm\u00eb t\u00eb automatizojm\u00eb marrjen e t\u00eb dh\u00ebnave nga backup-i. Ne e konfigurimin si duhet Postgres-in. Ne dim\u00eb si ta b\u00ebjm\u00eb q\u00eb planet t\u00eb p\u00ebrputhen, etj. <\/p>\n<p><\/p>\n<p>Por pasiq\u00eb sistemi \u00ebsht\u00eb i zgjeruesh\u00ebm, gjithashtu mund t\u00eb p\u00ebrdoret p\u00ebr MySQL. Dhe ka shembuj t\u00eb till\u00eb. Nj\u00eb gj\u00eb e ngjashme ka Yandex-i, por ata nuk e publikojn\u00eb askund. Ata e p\u00ebrdorin at\u00eb brenda Yandex.Metrica. Dhe aty \u00ebsht\u00eb historia p\u00ebr MySQL. Por teknologjit\u00eb jan\u00eb t\u00eb nj\u00ebjta, ZFS. <\/p>\n<p><\/p>\n<p><em>Faleminderit p\u00ebr prezantimin! Kam edhe disa pyetje. Ju p\u00ebrmend\u00ebt se klonimi mund t\u00eb p\u00ebrdoret p\u00ebr analitik\u00eb, p\u00ebr shembull, p\u00ebr t\u00eb nd\u00ebrtuar indekse shtes\u00eb. Mund t\u00eb na thoni pak m\u00eb shum\u00eb si funksionon kjo?<\/em><\/p>\n<p><\/p>\n<p><em>Dhe pyetja e dyt\u00eb do ta b\u00ebj menj\u00ebher\u00eb p\u00ebr barazimin e standeve, barazimin e planeve. Plani varet edhe nga statistikat e grumbulluara nga Postgres. Si e zgjidhni k\u00ebt\u00eb problem?<\/em><\/p>\n<p><\/p>\n<p>Nuk ka analiza specifike p\u00ebr rastet konkrete, sepse ne nuk e kemi p\u00ebrdorur ende k\u00ebshtu, por ka mund\u00ebsi t\u00eb till\u00eb. N\u00ebse flasim p\u00ebr indekset, imagjinoni se po ekzekutohet nj\u00eb k\u00ebrkes\u00eb n\u00eb nj\u00eb tabel\u00eb me qindra miliona regjistrime dhe n\u00eb nj\u00eb kolon\u00eb q\u00eb zakonisht nuk \u00ebsht\u00eb e indeksuar n\u00eb prodhim. Dhe ne duam t\u00eb llogarisim disa t\u00eb dh\u00ebna. N\u00ebse kjo k\u00ebrkes\u00eb ekzekutohet n\u00eb prodhim, ka mund\u00ebsi q\u00eb n\u00eb prodhim t\u00eb ket\u00eb ndalesa, sepse k\u00ebrkesa do t\u00eb punoj\u00eb p\u00ebr nj\u00eb minut\u00eb. <\/p>\n<p><\/p>\n<p>Ok, le t\u00eb krijojm\u00eb nj\u00eb klon t\u00eb holl\u00eb, i cili nuk \u00ebsht\u00eb e frikshme ta ndalim p\u00ebr disa minuta. Dhe n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb ishte m\u00eb komfort p\u00ebr t\u00eb llogaritur analizat, do t\u00eb shtojm\u00eb indekse n\u00eb ato kolona, n\u00eb t\u00eb cilat na interesojn\u00eb t\u00eb dh\u00ebnat. <\/p>\n<p><\/p>\n<p><em>A do t\u00eb krijohet indeksi \u00e7do her\u00eb?<\/em><\/p>\n<p><\/p>\n<p>Mund t\u00eb b\u00ebhet k\u00ebshtu q\u00eb ne t'i prekim t\u00eb dh\u00ebnat, t\u00eb b\u00ebjm\u00eb snapshote, dhe pastaj nga kjo snaphot do t\u00eb rikuperohemi dhe do t\u00eb ekzekutojm\u00eb k\u00ebrkesa t\u00eb reja. Dometh\u00ebn\u00eb, mund t\u00eb b\u00ebhet q\u00eb t\u00eb mund t\u00eb ngrem\u00eb klone t\u00eb reja me indekse t\u00eb vendosura tashm\u00eb.<\/p>\n<p><\/p>\n<p>Sa i p\u00ebrket pyetjes p\u00ebr statistika, n\u00ebse rikuperohemi nga nj\u00eb kopje rezerv\u00eb, n\u00ebse b\u00ebjm\u00eb replikim, at\u00ebher\u00eb statistika do t\u00eb jet\u00eb p\u00ebr aq sa \u00ebsht\u00eb. Sepse ne do t\u00eb kemi struktur\u00ebn fizike t\u00eb t\u00eb dh\u00ebnave, dometh\u00ebn\u00eb, t\u00eb dh\u00ebnat ashtu si\u00e7 jan\u00eb me t\u00eb gjitha metrikat e statistikave q\u00eb do t'i sjellim gjithashtu. <\/p>\n<p><\/p>\n<p>K\u00ebtu ka nj\u00eb tjet\u00ebr problem. N\u00ebse p\u00ebrdoret nj\u00eb zgjidhje cloud, at\u00ebher\u00eb jan\u00eb t\u00eb disponueshme vet\u00ebm dumps logjik, sepse Google, Amazon nuk lejojn\u00eb q\u00eb t\u00eb merret nj\u00eb kopje fizike. Pra, do t\u00eb ket\u00eb nj\u00eb problem t\u00eb till\u00eb. <\/p>\n<p><\/p>\n<p><em>Faleminderit p\u00ebr raportin. K\u00ebtu u shfaq\u00ebn dy pyetje t\u00eb mira rreth MySQL dhe ndarjes s\u00eb burimeve. Por, n\u00eb thelb, gjith\u00e7ka reduktohet n\u00eb faktin se kjo tem\u00eb nuk p\u00ebrkon me DBMS t\u00eb ve\u00e7anta, por n\u00eb p\u00ebrgjith\u00ebsi me sistemin e skedar\u00ebve. Dhe, p\u00ebr pasoj\u00eb, pyetjet e ndarjes s\u00eb burimeve gjithashtu duhet t\u00eb zgjidhen nga aty, jo n\u00eb fund, se \u00e7far\u00eb \u00ebsht\u00eb Postgres, por n\u00eb sistemin e skedar\u00ebve. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/server\/dts-dronten\/\"   title=\"server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2602\">server<\/a>, n\u00eb instanc\u00eb.<\/em> <\/p>\n<p><\/p>\n<p><em>Pyetja ime \u00ebsht\u00eb pak tjet\u00ebr. Ajo \u00ebsht\u00eb m\u00eb shum\u00eb e af\u00ebrt me shum\u00eb-shtresimin e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, ku ka disa shtresa. Ne, p\u00ebr shembull, kemi konfiguruar p\u00ebrdit\u00ebsimin e nj\u00eb imazhi dhjet\u00eb terabajt\u00ebsh, kemi replikim n\u00eb vijim. Dhe ne konkretisht po e p\u00ebrdorim k\u00ebt\u00eb zgjidhje p\u00ebr bazat e t\u00eb dh\u00ebnave. Po zhvillohet replikimi, po ndodh p\u00ebrdit\u00ebsimi i t\u00eb dh\u00ebnave. K\u00ebtu punojn\u00eb paralelisht 100 punonj\u00ebs q\u00eb vazhdimisht ekzekutojn\u00eb k\u00ebto pamje t\u00eb ndryshme. \u00c7far\u00eb duhet b\u00ebr\u00eb? Si t\u00eb b\u00ebjm\u00eb q\u00eb t\u00eb mos ket\u00eb konflikte, q\u00eb ata t\u00eb nisin nj\u00eb gj\u00eb dhe pastaj sistemi i skedar\u00ebve t\u00eb ndryshoj\u00eb, dhe k\u00ebto pamje t\u00eb d\u00ebshtojn\u00eb?<\/em> <\/p>\n<p><\/p>\n<p>Ata nuk do t\u00eb shkojn\u00eb, sepse k\u00ebshtu funksionon ZFS. Ne mund t\u00eb mbajm\u00eb ndar\u00eb n\u00eb nj\u00eb proces ndryshimet e sistemit t\u00eb skedar\u00ebve, t\u00eb cilat vijn\u00eb fal\u00eb replikimit. Dhe t\u00eb mbajm\u00eb klon\u00ebt e t\u00eb dh\u00ebnave t\u00eb vjetra, q\u00eb zhvilluesit i p\u00ebrdorin. Dhe kjo funksionon p\u00ebr ne, me k\u00ebt\u00eb gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull.<\/p>\n<p><\/p>\n<p><em>Pra, ndodhi q\u00eb p\u00ebrdit\u00ebsimi do t\u00eb ndodh\u00eb si nj\u00eb shtes\u00eb, dhe t\u00eb gjitha pamjet e reja do t\u00eb shkojn\u00eb duke u bazuar n\u00eb k\u00ebt\u00eb shtes\u00eb, apo jo?<\/em> <\/p>\n<p><\/p>\n<p>Nga shtresat e m\u00ebparshme, q\u00eb ishin nga replikimet e m\u00ebparshme. <\/p>\n<p><\/p>\n<p><em>Shtresat e m\u00ebparshme do t\u00eb zhduken, por ato do t\u00eb referohen n\u00eb shtres\u00ebn e vjet\u00ebr, dhe imazhet e reja do t'i marrin nga shtresa e fundit, e cila u mor n\u00eb p\u00ebrdit\u00ebsim?<\/em><\/p>\n<p><\/p>\n<p>N\u00eb p\u00ebrgjith\u00ebsi, po. <\/p>\n<p><\/p>\n<p><em>At\u00ebher\u00eb si pasoj\u00eb do t\u00eb kemi shum\u00eb shtresa. Dhe me kalimin e koh\u00ebs, do t\u00eb duhet t'i kompresojm\u00eb ato?<\/em><\/p>\n<p><\/p>\n<p>Po, gjith\u00e7ka \u00ebsht\u00eb e sakt\u00eb. Ekziston nj\u00eb dritare e caktuar. Ne ruajm\u00eb snapshote javor\u00eb. Kjo varet nga sa burime keni. N\u00ebse keni mund\u00ebsi t\u00eb ruani shum\u00eb t\u00eb dh\u00ebna, mund t\u00eb ruani snapshote p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb. Ato vet\u00eb nuk do t\u00eb fshihen. Nuk do t\u00eb ket\u00eb ndonj\u00eb korrupsion t\u00eb t\u00eb dh\u00ebnave. N\u00ebse snapshotet jan\u00eb t\u00eb vjetra, si\u00e7 mendojm\u00eb, pra varet nga politika brenda kompanis\u00eb, at\u00ebher\u00eb ne mund t'i fshijm\u00eb ato dhe t\u00eb lirojm\u00eb hap\u00ebsir\u00eb. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje, faleminderit p\u00ebr raportin! N\u00eb lidhje me pyetjen e Joe. Ju that\u00eb se klienti nuk donte t\u00eb jepte qasje gjithkujt n\u00eb t\u00eb dh\u00ebnat. Rigorozisht duke folur, n\u00ebse dikush ka rezultatet e Explain Analyze, ai mund t\u00eb shikoj\u00eb t\u00eb dh\u00ebnat.<\/em> <\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb e v\u00ebrtet\u00eb. P\u00ebr shembull, ne mund t\u00eb shkruajm\u00eb: \u00abSELECT FROM WHERE email = dikush\u00bb. Pra, ne nuk do t\u00eb shohim vet\u00eb t\u00eb dh\u00ebnat, por disa shenja t\u00eb t\u00ebrthorta mund t\u00eb shohim. Kjo duhet t\u00eb kuptohet. Por nga ana tjet\u00ebr, gjith\u00e7ka \u00ebsht\u00eb e dukshme. Ne kemi auditen e log\u00ebve, ne kemi kontrollin e koleg\u00ebve t\u00eb tjer\u00eb, t\u00eb cil\u00ebt gjithashtu shohin se \u00e7far\u00eb po b\u00ebjn\u00eb zhvilluesit. Dhe n\u00ebse dikush p\u00ebrpiqet t\u00eb b\u00ebj\u00eb k\u00ebshtu, at\u00ebher\u00eb sh\u00ebrbimi i siguris\u00eb do t\u00eb vij\u00eb dhe do t\u00eb punoj\u00eb mbi k\u00ebt\u00eb \u00e7\u00ebshtje. <\/p>\n<p><\/p>\n<p><em>Mir\u00ebm\u00ebngjes! Faleminderit p\u00ebr raportin! Kam nj\u00eb pyetje t\u00eb shkurt\u00ebr. N\u00ebse n\u00eb kompani nuk p\u00ebrdoret Slack, a ka ndonj\u00eb lidhje me t\u00eb tani, apo mund t\u00eb vendosim instance p\u00ebr zhvilluesit, p\u00ebr t\u00eb lidhur nj\u00eb aplikacion testues me bazat?<\/em><\/p>\n<p><\/p>\n<p>Aktualisht ka lidhje me Slack, dometh\u00ebn\u00eb nuk ka asnj\u00eb mesazher tjet\u00ebr, por d\u00ebshirojm\u00eb shum\u00eb t\u00eb ofrojm\u00eb mb\u00ebshtetje p\u00ebr mesazhere t\u00eb tjera gjithashtu. \u00c7far\u00eb mund t\u00eb b\u00ebni? Mund t\u00eb zbatoni DB Lab tuaj pa Joe, t\u00eb p\u00ebrdorni REST API ose platform\u00ebn ton\u00eb p\u00ebr t\u00eb krijuar klon\u00eb dhe t\u00eb lidhni me PSQL. Por kjo \u00ebsht\u00eb e mundur vet\u00ebm n\u00ebse jeni t\u00eb gatsh\u00ebm t'u jepni zhvilluesve tuaj qasje n\u00eb t\u00eb dh\u00ebnat, pasi k\u00ebtu nuk do t\u00eb ket\u00eb m\u00eb ndonj\u00eb ekran. <\/p>\n<p><\/p>\n<p><em>Nuk m\u00eb nevojitet kjo nd\u00ebrfaqe, por nj\u00eb mund\u00ebsi e till\u00eb m\u00eb nevojitet.<\/em><\/p>\n<p><\/p>\n<p>At\u00ebher\u00eb \u2013 po, kjo \u00ebsht\u00eb e mundur.<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/524542\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0430\u043a backend-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e SQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u00ab\u043f\u0440\u043e\u0434\u0435\u00bb? \u0412 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0438\u043b\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u00ab\u043f\u0440\u043e\u0434\u0443\u00bb \u0435\u0441\u0442\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0443 \u0432\u0441\u0435\u0445. \u0414\u0430 \u0438 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437\u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043f\u0438\u0438 \u0411\u0414 \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0447\u0430\u0441\u044b. \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e DBA \u2014 Joe. \u041e\u043d \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97940,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97939","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\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\/sq\/blog\/administrirovanie\/dba-bot-joe-anatolij-stansler-postgres-ai\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\udd47DBA-\u0431\u043e\u0442 Joe. \u0410\u043d\u0430\u0442\u043e\u043b\u0438\u0439 \u0421\u0442\u0430\u043d\u0441\u043b\u0435\u0440 (Postgres.ai) | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/dba-bot-joe-anatolij-stansler-postgres-ai\" \/>\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=\"2020-10-23T06:42:49+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-23T06:42:49+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\udd47Boti DBA Joe. Anatolij Stansler (Postgres.ai) | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/dba-bot-joe-anatolij-stansler-postgres-ai","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\udd47DBA-\u0431\u043e\u0442 Joe. \u0410\u043d\u0430\u0442\u043e\u043b\u0438\u0439 \u0421\u0442\u0430\u043d\u0441\u043b\u0435\u0440 (Postgres.ai) | ProHoster","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/dba-bot-joe-anatolij-stansler-postgres-ai","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":"2020-10-23T06:42:49+00:00","article:modified_time":"2020-10-23T06:42:49+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97939","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:09:26","updated":"2026-02-09 21:38:06","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/97939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=97939"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/97939\/revisions"}],"predecessor-version":[{"id":159884,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/97939\/revisions\/159884"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/97940"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=97939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=97939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=97939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}