{"id":36650,"date":"2019-10-31T22:12:54","date_gmt":"2019-10-31T19:12:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/tranzaktsii-v-globalah-intersystems-iris\/"},"modified":"2019-10-31T22:12:54","modified_gmt":"2019-10-31T19:12:54","slug":"tranzaktsii-v-globalah-intersystems-iris","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/tranzaktsii-v-globalah-intersystems-iris","title":{"rendered":"Transaksionet n\u00eb globalet InterSystems IRIS","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Transaksionet n\u00eb globalet InterSystems IRIS\" src=\"\/wp-content\/uploads\/2019\/07\/ee4e58369616511dc213f94158b04e4f.jpg\" style=\"display:block;margin: 0 auto;\" \/>Baza e t\u00eb dh\u00ebnave InterSystems IRIS mb\u00ebshtet struktura interesante p\u00ebr ruajtjen e t\u00eb dh\u00ebnave \u2014 globalet. N\u00eb thelb, k\u00ebto jan\u00eb \u00e7el\u00ebsa me shum\u00eb nivele me disa avantazhe shtes\u00eb si transaksionet, funksionet e shpejta p\u00ebr navigimin e pem\u00ebve t\u00eb t\u00eb dh\u00ebnave, bllokimet dhe gjuh\u00ebn e saj ObjectScript.<\/p>\n<p>M\u00eb shum\u00eb p\u00ebr globalet n\u00eb ciklin e artikujve \"Globalet \u2014 shpata-magazina p\u00ebr ruajtjen e t\u00eb dh\u00ebnave\":<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/263791\/\">Pem\u00ebt. Pjesa 1<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/264173\/\">Pem\u00ebt. Pjesa 2<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/268465\/\">Masa t\u00eb holl\u00eb. Pjesa 3<\/a><\/noindex><\/p>\n<p>M\u00eb interesonte se si jan\u00eb realizuar transaksionet n\u00eb globalet, \u00e7far\u00eb ve\u00e7orish ka aty. Kjo \u00ebsht\u00eb nj\u00eb struktur\u00eb krejt\u00ebsisht e ndryshme p\u00ebr ruajtjen e t\u00eb dh\u00ebnave se sa tabelat q\u00eb na jan\u00eb b\u00ebr\u00eb t\u00eb zakonshme. Nd\u00ebrsa \u00ebsht\u00eb shum\u00eb m\u00eb e ul\u00ebt n\u00eb nivel.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nSi\u00e7 dihet nga teoria e bazave t\u00eb dh\u00ebnave relacional, nj\u00eb implementim i mir\u00eb i transaksioneve duhet t\u00eb plot\u00ebsoj\u00eb k\u00ebrkesat <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/ACID\">ACID<\/a><\/noindex>:<\/p>\n<p><b>A \u2014 Atomike (atomariteti).<\/b> T\u00eb gjitha ndryshimet e b\u00ebra n\u00eb transaksion regjistrohen ose nuk regjistrohet asnj\u00eb.<\/p>\n<p><b>C \u2014 Konsistenc\u00eb (kontradiktor).<\/b> Pas p\u00ebrfundimit t\u00eb transaksionit, gjendja logjike e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave duhet t\u00eb jet\u00eb brenda vet\u00eb-konsistente. N\u00eb nj\u00eb far\u00eb m\u00ebnyre, kjo k\u00ebrkes\u00eb i p\u00ebrket programuesit, por n\u00eb rastin e bazave t\u00eb dh\u00ebnave SQL, ajo i p\u00ebrket gjithashtu \u00e7el\u00ebsave t\u00eb jasht\u00ebm.<\/p>\n<p><b>I \u2014 Izolimi (izolueshm\u00ebria).<\/b> Transaksionet q\u00eb ekzekutohen paralelisht nuk duhet t\u00eb ndikojn\u00eb n\u00eb nj\u00ebra-tjetr\u00ebn.<\/p>\n<p><b>D \u2014 Q\u00ebndrueshm\u00ebri (q\u00ebndrueshm\u00ebria).<\/b> Pas p\u00ebrfundimit t\u00eb suksessh\u00ebm t\u00eb transaksionit, problemet n\u00eb nivelet e poshtme (si\u00e7 \u00ebsht\u00eb d\u00ebshtimi i furnizimit me energji) nuk duhet t\u00eb ndikojn\u00eb n\u00eb t\u00eb dh\u00ebnat e ndryshuara nga transaksioni.<\/p>\n<p>Globale jan\u00eb struktura t\u00eb dh\u00ebnash jo-reale. Ato jan\u00eb krijuar p\u00ebr t\u00eb punuar me shpejt\u00ebsi shum\u00eb t\u00eb lart\u00eb n\u00eb hardware shum\u00eb t\u00eb kufizuar. Le t\u00eb shqyrtojm\u00eb implementimin e transaksioneve n\u00eb globale duke p\u00ebrdorur <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/_\/intersystems-iris-data-platform\/plans\/222f869e-567c-4928-b572-eb6a29706fbd?tab=instructions\">imazhin zyrtar docker t\u00eb IRIS<\/a><\/noindex>.<\/p>\n<p>P\u00ebr t\u00eb mb\u00ebshtetur transaksionet n\u00eb IRIS p\u00ebrdoren komandat: <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ctstart\">TSTART<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ctcommit\">TCOMMIT<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.intersystems.com\/irislatest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ctrollback\">TROLLBACK<\/a><\/noindex>.<\/p>\n<h2>1. Atomik\u00ebsia<\/h2>\n<p>\nM\u00eb e lehta p\u00ebr t\u00eb verifikuar \u00ebsht\u00eb atomik\u00ebsia. Kontroloni nga konsola e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave.<\/p>\n<pre><code class=\"bash\">Kill ^a\nTSTART\nSet ^a(1) = 1\nSet ^a(2) = 2\nSet ^a(3) = 3\nTCOMMIT<\/code><\/pre>\n<p>\nM\u00eb pas, nxjerrim p\u00ebrfundimin:<\/p>\n<pre><code class=\"bash\">Write ^a(1), \u201c \u201d, ^a(2), \u201c \u201d, ^a(3)<\/code><\/pre>\n<p>\nDo t\u00eb marrim:<\/p>\n<pre><code class=\"bash\">1 2 3<\/code><\/pre>\n<p>\nE gjitha \u00ebsht\u00eb n\u00eb rregull. Atomik\u00ebsia \u00ebsht\u00eb ruajtur: t\u00eb gjitha ndryshimet u regjistruan.<\/p>\n<p>T\u00eb komplikojm\u00eb pun\u00ebn, t\u00eb introduktojm\u00eb nj\u00eb gabim dhe t\u00eb shohim si do t\u00eb ruhet transaksioni, pjes\u00ebrisht ose aspak.<\/p>\n<p>Le ta verifikojm\u00eb p\u00ebrs\u00ebri atomik\u00ebsin\u00eb:<\/p>\n<pre><code class=\"bash\">Kill ^A\nTSTART\nSet ^a(1) = 1\nSet ^a(2) = 2\nSet ^a(3) = 3<\/code><\/pre>\n<p>\nPas k\u00ebsaj, do t\u00eb ndalojm\u00eb me forc\u00eb kontejnerin, do ta rikthejm\u00eb dhe do t\u00eb shohim. <\/p>\n<pre><code class=\"bash\">docker kill my-iris<\/code><\/pre>\n<p>\nKy kjo komand\u00eb \u00ebsht\u00eb praktikisht ekuivalente me nj\u00eb nd\u00ebrprerje t\u00eb dhunshme t\u00eb energjis\u00eb, pasi d\u00ebrgon sinjalin e menj\u00ebhersh\u00ebm t\u00eb ndalimit t\u00eb procesit SIGKILL.<\/p>\n<p>A mund t\u00eb jet\u00eb transaksioni ruajtur pjes\u00ebrisht?<\/p>\n<pre><code class=\"bash\">WRITE ^a(1), ^a(2), ^a(3)\n^\n ^a(1)<\/code><\/pre>\n<p>\n \u2014 Jo, nuk \u00ebsht\u00eb ruajtur.<\/p>\n<p>Le t\u00eb testojm\u00eb komand\u00ebn e rikthimit:<\/p>\n<pre><code class=\"bash\">Kill ^A\nTSTART\nSet ^a(1) = 1\nSet ^a(2) = 2\nSet ^a(3) = 3\nTROLLBACK\n\nWRITE ^a(1), ^a(2), ^a(3)\n^\n ^a(1)<\/code><\/pre>\n<p>\nAsgj\u00eb nuk u ruajt.<\/p>\n<h2>2. Konsistenca<\/h2>\n<p>\nPasi p\u00ebr \u00e7el\u00ebsat n\u00eb global\u00eb, \u00e7el\u00ebsat krijohen gjithashtu n\u00eb global\u00eb (t\u00eb kujtojm\u00eb se globali \u00ebsht\u00eb nj\u00eb struktur\u00eb m\u00eb e ul\u00ebt p\u00ebr ruajtjen e t\u00eb dh\u00ebnave se sa tabela relacional), p\u00ebr t\u00eb p\u00ebrmbushur k\u00ebrkes\u00ebn e konsistenc\u00ebs, \u00ebsht\u00eb e nevojshme q\u00eb ndryshimi i \u00e7el\u00ebsit t\u00eb p\u00ebrfshihet n\u00eb t\u00eb nj\u00ebjt\u00ebn transaksion si ndryshimi i globalit.<\/p>\n<p>P\u00ebr shembull, ne kemi nj\u00eb global ^person, ku ruajm\u00eb personat dhe si \u00e7el\u00ebs p\u00ebrdorim INN.<\/p>\n<pre><code class=\"bash\">^person(1234567, \u2018firstname\u2019) = \u2018Sergey\u2019\n^person(1234567, \u2018lastname\u2019) = \u2018Kamenev\u2019\n^person(1234567, \u2018phone\u2019) = \u2018+74995555555\n...<\/code><\/pre>\n<p>\nP\u00ebr t\u00eb pasur nj\u00eb k\u00ebrkim t\u00eb shpejt\u00eb sipas mbiemrit dhe emrit, ne kemi krijuar \u00e7el\u00ebsin ^index.<\/p>\n<pre><code class=\"bash\">^index(\u2018Kamenev\u2019, \u2018Sergey\u2019, 1234567) = 1<\/code><\/pre>\n<p>\nP\u00ebr t\u00eb ruajtur konsistenc\u00ebn e baz\u00ebs, ne duhet ta shtojm\u00eb personin k\u00ebshtu:<\/p>\n<pre><code class=\"bash\">TSTART\n^person(1234567, \u2018firstname\u2019) = \u2018Sergey\u2019\n^person(1234567, \u2018lastname\u2019) = \u2018Kamenev\u2019\n^person(1234567, \u2018phone\u2019) = \u2018+74995555555\n^index(\u2018Kamenev\u2019, \u2018Sergey\u2019, 1234567) = 1\nTCOMMIT<\/code><\/pre>\n<p>\nP\u00ebrkat\u00ebsisht, kur fshihen, ne gjithashtu duhet t\u00eb p\u00ebrdorim nj\u00eb transaksion:<\/p>\n<pre><code class=\"bash\">TSTART\nKill ^person(1234567)\nZKill ^index(\u2018Kamenev\u2019, \u2018Sergey\u2019, 1234567)\nTCOMMIT<\/code><\/pre>\n<p>\nN\u00eb fjal\u00eb t\u00eb tjera, p\u00ebrmbushja e k\u00ebrkes\u00ebs p\u00ebr q\u00ebndrueshm\u00ebri \u00ebsht\u00eb plot\u00ebsisht n\u00eb duar t\u00eb programuesit. Por kur flasim p\u00ebr globale \u2014 kjo \u00ebsht\u00eb e pranueshme, p\u00ebr shkak t\u00eb natyr\u00ebs s\u00eb tyre t\u00eb nivelit t\u00eb ul\u00ebt.<\/p>\n<h2>3. Izolimi<\/h2>\n<p>\nK\u00ebtu fillojn\u00eb kompleksitetet. Shum\u00eb p\u00ebrdorues punojn\u00eb nj\u00ebkoh\u00ebsisht me t\u00eb nj\u00ebjt\u00ebn baz\u00eb, duke modifikuar t\u00eb nj\u00ebjtat t\u00eb dh\u00ebna.<\/p>\n<p>Situata \u00ebsht\u00eb krahasueshme me at\u00eb kur shum\u00eb p\u00ebrdorues punojn\u00eb nj\u00ebkoh\u00ebsisht me t\u00eb nj\u00ebjtin depo me kod dhe p\u00ebrpiqen q\u00eb nj\u00ebkoh\u00ebsisht t\u00eb kryejn\u00eb ndryshime n\u00eb shum\u00eb skedar\u00eb.<\/p>\n<p>Baza e t\u00eb dh\u00ebnave duhet ta menaxhoj\u00eb gjith\u00e7ka n\u00eb koh\u00eb reale. Duke pasur parasysh se n\u00eb kompanit\u00eb e m\u00ebdha ka madje edhe nj\u00eb person t\u00eb ve\u00e7ant\u00eb q\u00eb merret me kontrollin e versioneve (p\u00ebr bashkimet e deg\u00ebve, zgjidhjen e konflikteve, etj.), dhe q\u00eb Baza e t\u00eb Dh\u00ebnave duhet ta b\u00ebj\u00eb gjith\u00e7ka n\u00eb koh\u00eb reale, b\u00ebhet e qart\u00eb sa e nd\u00ebrlikuar \u00ebsht\u00eb kjo detyr\u00eb dhe sakt\u00ebsia n\u00eb projektimin e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave dhe kodit q\u00eb e mb\u00ebshtet at\u00eb.<\/p>\n<p>Baza e t\u00eb dh\u00ebnave nuk mund t\u00eb kuptoj\u00eb kuptimin e veprimeve q\u00eb kryejn\u00eb p\u00ebrdoruesit p\u00ebr t\u00eb parandaluar konfliktet n\u00ebse ata punojn\u00eb mbi t\u00eb nj\u00ebjtat t\u00eb dh\u00ebna. Ajo mund ta anuloj\u00eb vet\u00ebm nj\u00eb transaksion q\u00eb \u00ebsht\u00eb n\u00eb kontradikt\u00eb me nj\u00eb tjet\u00ebr ose t'i kryej\u00eb ato nj\u00ebri pas tjetrit.<\/p>\n<p>Nj\u00eb problem tjet\u00ebr \u00ebsht\u00eb se gjat\u00eb ekzekutimit t\u00eb transaksionit (para komitimit), gjendja e baz\u00ebs mund t\u00eb jet\u00eb e paq\u00ebndrueshme, prandaj \u00ebsht\u00eb e preferueshme q\u00eb transaksioneve t\u00eb tjera t'u mohohet akses n\u00eb gjendjen e paq\u00ebndrueshme t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, gj\u00eb q\u00eb arrihet n\u00eb bazat e t\u00eb dh\u00ebnave relationale n\u00eb shum\u00eb m\u00ebnyra: duke krijuar snapshot-e, shum\u00ebversionalizmin e rreshtave, etj.<\/p>\n<p>Kur ekzekutohen paralelisht transaksionet, \u00ebsht\u00eb e r\u00ebnd\u00ebsishme q\u00eb ato t\u00eb mos nd\u00ebrhyjn\u00eb nj\u00ebra me tjetr\u00ebn. Kjo \u00ebsht\u00eb veti izoluese.<\/p>\n<p>SQL p\u00ebrcakton 4 nivele izolimi:<\/p>\n<ul>\n<li>LEXO PA D\u00cbSHTIM<\/li>\n<li>LEXO D\u00cbSHTIM T\u00cb P\u00cbRMBAJTUR<\/li>\n<li>LEXO P\u00cbRMBAJTESH\u00cbM<\/li>\n<li>SERIALIZABLE<\/li>\n<\/ul>\n<p>\nLe t\u00eb shqyrtojm\u00eb \u00e7do nivel n\u00eb ve\u00e7anti. Shpenzimet p\u00ebr zbatimin e secilit nivel rriten gati n\u00eb m\u00ebnyr\u00eb eksponenciale.<\/p>\n<p><b>LEXO PA D\u00cbSHTIM<\/b> \u2014 ky \u00ebsht\u00eb niveli m\u00eb i ul\u00ebt i izolimit, por gjithashtu m\u00eb i shpejt\u00eb. Transaksionet mund t\u00eb lexojn\u00eb ndryshimet q\u00eb b\u00ebjn\u00eb nj\u00ebra-tjetr\u00ebn.<\/p>\n<p><b>LEXO D\u00cbSHTIM T\u00cb P\u00cbRMBAJTUR<\/b> \u2014 ky \u00ebsht\u00eb niveli i ardhsh\u00ebm i izolimit q\u00eb \u00ebsht\u00eb nj\u00eb kompromis. Transaksionet nuk mund t\u00eb lexojn\u00eb ndryshimet q\u00eb b\u00ebjn\u00eb nj\u00ebra-tjetr\u00ebn deri n\u00eb angazhimin, por mund t\u00eb lexojn\u00eb \u00e7do ndryshim q\u00eb b\u00ebhet pas angazhimit.<\/p>\n<p>N\u00ebse kemi nj\u00eb transaksion t\u00eb gjat\u00eb T1, gjat\u00eb t\u00eb cilit ndodhin angazhime n\u00eb transaksionet T2, T3 \u2026 Tn, t\u00eb cilat punojn\u00eb me t\u00eb nj\u00ebjtat t\u00eb dh\u00ebna si T1, at\u00ebher\u00eb kur k\u00ebrkojm\u00eb t\u00eb dh\u00ebna n\u00eb T1, ne do t\u00eb marrim gjithmon\u00eb rezultate t\u00eb ndryshme. Ky fenomen quhet lexim i p\u00ebrs\u00ebritur.<\/p>\n<p><b>LEXO P\u00cbRMBAJTESH\u00cbM<\/b> \u2014 n\u00eb k\u00ebt\u00eb nivel izolimi nuk kemi fenomene t\u00eb leximit t\u00eb p\u00ebrs\u00ebritur, p\u00ebr shkak se p\u00ebr \u00e7do k\u00ebrkes\u00eb p\u00ebr lexim t\u00eb t\u00eb dh\u00ebnave krijohet nj\u00eb snapshot i rezultateve t\u00eb t\u00eb dh\u00ebnave dhe, kur p\u00ebrdoren p\u00ebrs\u00ebri n\u00eb k\u00ebt\u00eb transaksion, p\u00ebrdoren t\u00eb dh\u00ebnat nga snapshot. Megjithat\u00eb, n\u00eb k\u00ebt\u00eb nivel izolimi, mund t\u00eb ket\u00eb lexime t\u00eb t\u00eb dh\u00ebnave fantazm\u00eb. K\u00ebtu kuptojm\u00eb leximin e rreshtave t\u00eb rinj, t\u00eb cil\u00ebt jan\u00eb shtuar nga transaksione t\u00eb tjera t\u00eb fiksohme.<\/p>\n<p><b>SERIALIZABLE<\/b> \u2014 niveli m\u00eb i lart\u00eb i izolimit. Ai karakterizohet nga fakti se t\u00eb dh\u00ebnat q\u00eb p\u00ebrdoren n\u00eb ndonj\u00eb m\u00ebnyr\u00eb n\u00eb transaksion (leximi ose ndryshimi) b\u00ebhen t\u00eb disponueshme p\u00ebr transaksione t\u00eb tjera vet\u00ebm pasi t\u00eb p\u00ebrfundoj\u00eb transaksioni i par\u00eb.<\/p>\n<p>S\u00eb pari, le t\u00eb shohim n\u00ebse ka izolim t\u00eb operacioneve n\u00eb transaksion nga rrjedha kryesore. Do t\u00eb hapim 2 dritare terminali.<\/p>\n<pre><code class=\"bash\">Kill ^t\n\nWrite ^t(1)\n2<\/code><\/pre>\n<pre><code class=\"bash\">\nTSTART\nSet ^t(1)=2<\/code><\/pre>\n<p>\nNuk ka izolim. Nj\u00eb rrjedh\u00eb sheh se \u00e7far\u00eb b\u00ebn tjetra q\u00eb ka hapur transaksionin.<\/p>\n<p>Le t\u00eb shohim n\u00ebse transaksionet e rrjedhave t\u00eb ndryshme shohin at\u00eb q\u00eb ndodh brenda tyre. <\/p>\n<p>Do t\u00eb hapim 2 dritare terminali dhe do t\u00eb hapim 2 transaksione paralelisht.<\/p>\n<pre><code class=\"bash\">kill ^t\nTSTART\nWrite ^t(1)\n3<\/code><\/pre>\n<pre><code class=\"bash\">\nTSTART\nSet ^t(1)=3\n<\/code><\/pre>\n<p>\nTransaksionet paralele shohin t\u00eb dh\u00ebnat nj\u00ebra-tjetr\u00ebs. Pra, ne kemi arritur nivelin m\u00eb t\u00eb thjesht\u00eb, por gjithashtu m\u00eb t\u00eb shpejt\u00eb t\u00eb izolimit READ UNCOMMITTED.<\/p>\n<p>N\u00eb princip, kjo mund t\u00eb pritej p\u00ebr global\u00ebt, p\u00ebr t\u00eb cil\u00ebt performanca gjithmon\u00eb ka qen\u00eb prioritare. <\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebjm\u00eb n\u00ebse na nevojitet nj\u00eb nivel m\u00eb i lart\u00eb izolimi n\u00eb operacionet e global\u00ebve?<\/p>\n<p>K\u00ebtu duhet t\u00eb mendojm\u00eb se \u00e7far\u00eb jan\u00eb nivellet e izolimit dhe si funksionojn\u00eb ato.<\/p>\n<p>Niveli m\u00eb i lart\u00eb i izolimit SERIALIZE do t\u00eb thot\u00eb q\u00eb rezultati i transaksioneve q\u00eb ekzekutohen paralelisht \u00ebsht\u00eb ekuivalent me ekzekutimin e tyre n\u00eb m\u00ebnyr\u00eb sekuenciale, q\u00eb garanton moskollision.<\/p>\n<p>Kjo mund t\u00eb arrihet me bllokime t\u00eb mira n\u00eb ObjectScript, t\u00eb cilat kan\u00eb nj\u00eb mori m\u00ebnyrash t\u00eb ndryshme aplikimi: mund t\u00eb b\u00ebjm\u00eb bllokim t\u00eb zakonsh\u00ebm, inkremental, apo shum\u00ebfish me komand\u00ebn <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.intersystems.com\/latest\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_clock\">LOCK<\/a><\/noindex>.<\/p>\n<p>Niveli m\u00eb i ul\u00ebt i izolimit jan\u00eb kompromise t\u00eb destinuara p\u00ebr t\u00eb rritur shpejt\u00ebsin\u00eb e funksionimit t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave.<\/p>\n<p>Le t\u00eb shohim si mund t\u00eb arrijm\u00eb nivele t\u00eb ndryshme izolimi p\u00ebrmes bllokimeve.<\/p>\n<p>Ky operator lejon q\u00eb t\u00eb merrni jo vet\u00ebm bllokime ekskluzive, t\u00eb nevojshme p\u00ebr modifikimin e t\u00eb dh\u00ebnave, por edhe bllokime t\u00eb ashtuquajtura shared, t\u00eb cilat mund t\u00eb merren paralelisht nga disa rrjedha n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb kur u nevojitet t\u00eb lexojn\u00eb t\u00eb dh\u00ebna q\u00eb nuk duhet t\u00eb modifikohen nga procese t\u00eb tjera gjat\u00eb leximit.<\/p>\n<p>M\u00eb shum\u00eb rreth metod\u00ebs dy-fazore t\u00eb bllokimeve n\u00eb rusisht dhe anglisht:<\/p>\n<p>\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B2%D1%83%D1%85%D1%84%D0%B0%D0%B7%D0%BD%D0%B0%D1%8F_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0\">Bllokimi dy-fazor<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Two-phase_locking\">Two-phase locking<\/a><\/noindex><\/p>\n<p>Sfidimi \u00ebsht\u00eb se gjat\u00eb transaksionit gjendja e baz\u00ebs mund t\u00eb jet\u00eb e pasigurt, megjithat\u00eb k\u00ebto t\u00eb dh\u00ebna t\u00eb pasigurta jan\u00eb t\u00eb dukshme p\u00ebr proceset e tjera. Si ta shmangim k\u00ebt\u00eb?<\/p>\n<p>Ne do t\u00eb krijojm\u00eb me ndihm\u00ebn e bllokimeve k\u00ebso dritare shikimi, n\u00eb t\u00eb cilat gjendja e baz\u00ebs do \u00ebt jet\u00eb e harmonizuar. Dhe t\u00eb gjitha k\u00ebrkesat p\u00ebr k\u00ebto dritare shikimi t\u00eb gjendjes t\u00eb harmonizuar do t\u00eb kontrollohen nga bllokimet.<\/p>\n<p>Bllokimet shared t\u00eb t\u00eb nj\u00ebjtave t\u00eb dh\u00ebna jan\u00eb shum\u00ebfishueshme \u2014 ato mund t\u00eb merren nga disa procese. K\u00ebto bllokime ndalojn\u00eb proceset e tjera nga modifikimi i t\u00eb dh\u00ebnave, dometh\u00ebn\u00eb ato p\u00ebrdoren p\u00ebr formimin e dritareve t\u00eb gjendjes t\u00eb harmonizuar t\u00eb DB.<\/p>\n<p>Bllokadat ekskluzive p\u00ebrdoren p\u00ebr ndryshimet n\u00eb t\u00eb dh\u00ebna \u2014 k\u00ebt\u00eb bllokim mund ta marr\u00eb vet\u00ebm nj\u00eb proces. Bllokimin ekskluziv mund ta marr\u00eb:<\/p>\n<ol>\n<li>Cdo proces, n\u00ebse t\u00eb dh\u00ebnat jan\u00eb t\u00eb lira<\/li>\n<li>Vet\u00ebm ai proces q\u00eb ka nj\u00eb bllokim shared p\u00ebr k\u00ebto t\u00eb dh\u00ebna dhe k\u00ebrkoi i pari bllokimin ekskluziv.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Transaksionet n\u00eb globalet InterSystems IRIS\" src=\"\/wp-content\/uploads\/2019\/07\/bb91ed1268925bc1b9266763ab82646a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSa m\u00eb e ngusht\u00eb t\u00eb jet\u00eb dritarja e shikimit, aq m\u00eb gjat\u00eb e presin proceset e tjera, por aq m\u00eb t\u00eb q\u00ebndrueshme mund t\u00eb jet\u00eb gjendja e DB-s\u00eb n\u00eb t\u00eb.<\/p>\n<p><b>READ_COMMITED<\/b> \u2013 thelbi i k\u00ebtij niveli \u00ebsht\u00eb q\u00eb ne shohim vet\u00ebm t\u00eb dh\u00ebnat e konfirmuara nga rrjedhat e tjera. N\u00ebse t\u00eb dh\u00ebnat n\u00eb nj\u00eb transaksion tjet\u00ebr ende nuk jan\u00eb konfirmuar, at\u00ebher\u00eb ne i shohim versionin e tyre t\u00eb vjet\u00ebr.<\/p>\n<p>Kjo na lejon t\u00eb p\u00ebrparojm\u00eb pun\u00ebn n\u00eb vend t\u00eb pritjes p\u00ebr lirimin e bllokimit.<\/p>\n<p>Pa truke t\u00eb ve\u00e7anta, ne nuk do t\u00eb jemi n\u00eb gjendje t\u00eb shohim versionin e vjet\u00ebr t\u00eb t\u00eb dh\u00ebnave n\u00eb IRIS, k\u00ebshtu q\u00eb do t\u00eb na duhet t\u00eb p\u00ebrballojm\u00eb me bllokimet.<\/p>\n<p>P\u00ebr pasoj\u00eb, na duhet me ndihm\u00ebn e bllokimeve shared t\u00eb lejojm\u00eb leximin e t\u00eb dh\u00ebnave vet\u00ebm n\u00eb momentet e q\u00ebndrueshm\u00ebris\u00eb.<\/p>\n<p>Supozoni se kemi nj\u00eb baz\u00eb p\u00ebrdoruesish ^person, t\u00eb cil\u00ebt transferojn\u00eb para nj\u00ebri-tjetrit.<\/p>\n<p>Momenti i transfert\u00ebs nga persona 123 tek persona 242:<\/p>\n<pre><code class=\"bash\">LOCK +^person(123), +^person(242)\nSet ^person(123, amount) = ^person(123, amount) - amount\nSet ^person(242, amount) = ^person(242, amount) + amount\nLOCK -^person(123), -^person(242)<\/code><\/pre>\n<p>\nMomentin e k\u00ebrkes\u00ebs p\u00ebr sasin\u00eb e parave nga persona 123 para se t\u00eb kryhet debiti duhet t\u00eb shoq\u00ebrohet nga nj\u00eb bllokim ekskluziv (me t\u00eb drejt\u00eb):<\/p>\n<pre><code class=\"bash\">LOCK +^person(123)\nWrite ^person(123)<\/code><\/pre>\n<p>\nN\u00ebse \u00ebsht\u00eb e nevojshme t\u00eb shfaqet gjendja e llogaris\u00eb n\u00eb panelin personal, mund t\u00eb p\u00ebrdoret bllokimi i ndar\u00eb ose t\u00eb mos p\u00ebrdoret fare:<\/p>\n<pre><code class=\"bash\">LOCK +^person(123)#\u201dS\u201d\nWrite ^person(123)<\/code><\/pre>\n<p>\nMegjithat\u00eb, n\u00ebse supozojm\u00eb se operacionet q\u00eb punojn\u00eb me DB kryhen pothuajse menj\u00ebher\u00eb (t\u00eb kujtojm\u00eb se globat jan\u00eb nj\u00eb struktur\u00eb shum\u00eb m\u00eb e ul\u00ebt se nj\u00eb tabel\u00eb relacionale), nevoja p\u00ebr k\u00ebt\u00eb nivel bie.<\/p>\n<p><b>LEXO P\u00cbRMBAJTESH\u00cbM<\/b> \u2014 n\u00eb k\u00ebt\u00eb nivel izolimi lejohet q\u00eb t\u00eb ket\u00eb disa lexime t\u00eb t\u00eb dh\u00ebnave q\u00eb mund t\u00eb ndryshohen nga transaksione paralele. <\/p>\n<p>P\u00ebr rrjedhoj\u00eb, do t\u00eb na duhet t\u00eb vendosim bllokim t\u00eb ndar\u00eb p\u00ebr t\u00eb lexuar t\u00eb dh\u00ebnat q\u00eb ne i ndryshojm\u00eb dhe bllokime ekskluzive p\u00ebr t\u00eb dh\u00ebnat q\u00eb ne i ndryshojm\u00eb.<\/p>\n<p>Faleminderit, operatori LOCK lejon n\u00eb nj\u00eb operator t\u00eb detajuar t\u00eb enumerosh t\u00eb gjitha bllokimet e nevojshme, q\u00eb mund t\u00eb jen\u00eb shum\u00eb.<\/p>\n<pre><code class=\"bash\">LOCK +^person(123, amount)#\u201dS\u201d\nLexo ^person(123, amount)<\/code><\/pre>\n<p>\noperacione t\u00eb tjera (n\u00eb k\u00ebt\u00eb koh\u00eb, rrjedhat paralel po p\u00ebrpiqen t\u00eb ndryshojn\u00eb ^person(123, amount), por nuk mundin)<\/p>\n<pre><code class=\"bash\">LOCK +^person(123, amount)\nndryshimi i ^person(123, amount)\nLOCK -^person(123, amount)\n\nleximi i ^person(123, amount)\nLOCK -^person(123, amount)#\u201dS\u201d<\/code><\/pre>\n<p>\nKur renditen bllokimet me presje, ato merren nj\u00ebra pas tjetr\u00ebs, dhe n\u00ebse b\u00ebhet k\u00ebshtu:<\/p>\n<pre><code class=\"bash\">LOCK +(^person(123),^person(242))<\/code><\/pre>\n<p>\nat\u00ebher\u00eb ato merren atomikisht t\u00eb gjitha s\u00eb bashku.<\/p>\n<p><b>SERIALIZE<\/b> \u2014 na duhet t\u00eb vendosim bllokimet n\u00eb m\u00ebnyr\u00eb q\u00eb, n\u00eb fund, t\u00eb gjitha transaksionet q\u00eb kan\u00eb t\u00eb dh\u00ebna t\u00eb p\u00ebrbashk\u00ebta t\u00eb kryhen nj\u00ebra pas tjetr\u00ebs. P\u00ebr k\u00ebt\u00eb qasje, shumica e bllokimeve duhet t\u00eb jen\u00eb ekskluzive dhe t\u00eb merren n\u00eb zonat m\u00eb t\u00eb vogla t\u00eb globalit p\u00ebr performanc\u00eb.<\/p>\n<p>N\u00ebse flasim p\u00ebr t\u00ebrheqjet e fondeve n\u00eb globalin ^person, at\u00ebher\u00eb p\u00ebr t\u00eb pranohet vet\u00ebm niveli i izolimit SERIALIZE, pasi parat\u00eb duhet t\u00eb shpenzohen me radh\u00eb, p\u00ebrndryshe \u00ebsht\u00eb e mundur t\u00eb shpenzohet e nj\u00ebjta shum\u00eb disa her\u00eb.<\/p>\n<h2>4. Q\u00ebndrueshm\u00ebria<\/h2>\n<p>\nKam b\u00ebr\u00eb teste me shky\u00e7jen ashp\u00ebr t\u00eb konteinerit p\u00ebrmes<\/p>\n<pre><code class=\"bash\">docker kill my-iris<\/code><\/pre>\n<p>\nBaza e tyre e p\u00ebrballoi mir\u00eb. Nuk u identifikuan probleme.<\/p>\n<h2>P\u00ebrfundimi<\/h2>\n<p>\nP\u00ebr global\u00ebt n\u00eb InterSystems IRIS, mb\u00ebshtetja p\u00ebr transaksionet \u00ebsht\u00eb e disponueshme. Ato jan\u00eb v\u00ebrtet atomike, t\u00eb sigurta. P\u00ebr t\u00eb garantuar konsistenc\u00ebn e DB n\u00eb global\u00eb, nevojiten p\u00ebrpjekjet e programuesit dhe p\u00ebrdorimi i transaksioneve, pasi n\u00eb t\u00eb nuk ka struktura t\u00eb nd\u00ebrlikuara t\u00eb nd\u00ebrtuara, si\u00e7 jan\u00eb \u00e7el\u00ebsat e jasht\u00ebm.<\/p>\n<p>Niveli i izolimit te global\u00ebt pa p\u00ebrdorimin e bllokimeve \u00ebsht\u00eb READ UNCOMMITED, dhe me p\u00ebrdorimin e bllokimeve, mund t\u00eb arrihet deri n\u00eb nivelin SERIALIZE.<\/p>\n<p>Korrigjueshm\u00ebria dhe shpejt\u00ebsia e transaksioneve te global\u00ebt varen shum\u00eb nga mjesht\u00ebria e programuesit: sa m\u00eb gjer\u00ebsisht t\u00eb p\u00ebrdoren bllokimet e p\u00ebrbashk\u00ebta gjat\u00eb leximit, aq m\u00eb i lart\u00eb \u00ebsht\u00eb niveli i izolimit, dhe sa m\u00eb ngusht\u00ebsisht t\u00eb merren bllokimet ekskluzive, aq m\u00eb shum\u00eb rritet performanca.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/461753\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0423\u0411\u0414 InterSystems IRIS \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044b. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043b\u044e\u0448\u043a\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 ObjectScript. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u00ab\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\u00bb: \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 1 \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 2 \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0427\u0430\u0441\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27448,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36650","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.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0423\u0411\u0414 InterSystems IRIS \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044b. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043b\u044e\u0448\u043a\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 ObjectScript. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u00ab\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\u00bb: \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 1 \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 2 \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0427\u0430\u0441\u0442\u044c\" \/>\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\/tranzaktsii-v-globalah-intersystems-iris\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.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\udd47\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 InterSystems IRIS | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0423\u0411\u0414 InterSystems IRIS \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044b. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043b\u044e\u0448\u043a\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 ObjectScript. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u00ab\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\u00bb: \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 1 \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 2 \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0427\u0430\u0441\u0442\u044c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/tranzaktsii-v-globalah-intersystems-iris\" \/>\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:12:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:12:54+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\udd47Transaksionet n\u00eb globalet InterSystems IRIS | ProHoster","description":"Sistemi DB InterSystems IRIS mb\u00ebshtet struktura t\u00eb ngacmuara p\u00ebr ruajtjen e t\u00eb dh\u00ebnave \u2014 globale. N\u00eb thelb, k\u00ebto jan\u00eb \u00e7el\u00ebsa me shum\u00eb nivele me disa p\u00ebrmir\u00ebsime shtes\u00eb si transaksionet, funksione t\u00eb shpejta p\u00ebr kalimin p\u00ebrmes pem\u00ebve t\u00eb t\u00eb dh\u00ebnave, bllokadave dhe gjuh\u00ebs s\u00eb vet\u00eb ObjectScript. M\u00eb shum\u00eb rreth globaleve n\u00eb ciklin e artikujve \"Globalet \u2014 shpatat e fshehta p\u00ebr ruajtjen e t\u00eb dh\u00ebnave\": Pem\u00ebt. Pjesa 1 Pem\u00ebt. Pjesa 2 M\u00ebnyrat e rregulluara. Pjesa","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/tranzaktsii-v-globalah-intersystems-iris","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\udd47\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 InterSystems IRIS | ProHoster","og:description":"\u0421\u0423\u0411\u0414 InterSystems IRIS \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044b. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043b\u044e\u0448\u043a\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 ObjectScript. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u00ab\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\u00bb: \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 1 \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 2 \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0427\u0430\u0441\u0442\u044c","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/tranzaktsii-v-globalah-intersystems-iris","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:12:54+00:00","article:modified_time":"2019-10-31T19:12:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36650","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-22 04:17:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:41:52","updated":"2026-01-22 04:17:19","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\/36650","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=36650"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/36650\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/27448"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=36650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=36650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=36650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}