{"id":37701,"date":"2019-10-31T22:19:10","date_gmt":"2019-10-31T19:19:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh\/"},"modified":"2019-10-31T22:19:10","modified_gmt":"2019-10-31T19:19:10","slug":"monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","title":{"rendered":"Monitorimi i proceseve ETL n\u00eb nj\u00eb depo t\u00eb vog\u00ebl t\u00eb t\u00eb dh\u00ebnave","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Shum\u00eb njer\u00ebz p\u00ebrdorin mjete t\u00eb specializuara p\u00ebr t\u00eb krijuar procedura p\u00ebr nxjerrjen, transformimin dhe ngarkimin e t\u00eb dh\u00ebnave n\u00eb bazat e dh\u00ebnave marr\u00ebse. Procesi i pun\u00ebs s\u00eb mjeteve dokumentohet dhe gabimet regjistrohen.<\/p>\n<p>N\u00eb rast gabimi, logu p\u00ebrmban informacion n\u00eb lidhje me faktin se mjeti nuk arriti t\u00eb p\u00ebrfundoj\u00eb detyr\u00ebn dhe cilat module (shpesh \u00ebsht\u00eb java) ndaluan. N\u00eb rreshtat e fundit, mund t\u00eb gjeni nj\u00eb gabim n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave, p\u00ebr shembull, shkelje t\u00eb \u00e7el\u00ebsit unik t\u00eb tabel\u00ebs.<\/p>\n<p>P\u00ebr t\u00eb p\u00ebrgjigjur pyetjes se cili \u00ebsht\u00eb roli i informacionit mbi gabimet ETL, kam klasifikuar t\u00eb gjitha problemet q\u00eb ndodh\u00ebn gjat\u00eb dy viteve t\u00eb fundit n\u00eb nj\u00eb depo t\u00eb konsiderueshme. <\/p>\n<p><img decoding=\"async\" alt=\"Monitorimi i proceseve ETL n\u00eb nj\u00eb depo t\u00eb vog\u00ebl t\u00eb t\u00eb dh\u00ebnave\" src=\"\/wp-content\/uploads\/2019\/09\/cfe750a4a4ec952651779ec563a40e05.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Gabimet e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave p\u00ebrfshijn\u00eb ato si mungesa e hap\u00ebsir\u00ebs, nd\u00ebrprerja e lidhjes, ngrirja e sesionit etj.<\/p>\n<p>Gabimet logjike p\u00ebrfshijn\u00eb ato si shkelje t\u00eb \u00e7el\u00ebsave t\u00eb tabelave, objekte t\u00eb pavlefshme, munges\u00eb qasjeje n\u00eb objekte etj.<br \/>\nPlanifikuesi mund t\u00eb nis\u00ebt von\u00eb, mund t\u00eb ngec\u00eb etj.<\/p>\n<p>Gabimet e thjeshta nuk k\u00ebrkojn\u00eb shum\u00eb koh\u00eb p\u00ebr t'u rregulluar. Me shumic\u00ebn e tyre, nj\u00eb ETL i mir\u00eb di t\u00eb p\u00ebrballoj\u00eb vet\u00eb.<\/p>\n<p>Gabimet e komplikuara k\u00ebrkojn\u00eb q\u00eb t\u00eb hapen dhe t\u00eb kontrollohen procedurat e pun\u00ebs me t\u00eb dh\u00ebnat, t\u00eb studiohen burimet e t\u00eb dh\u00ebnave. Shpesh \u00e7ojn\u00eb n\u00eb nevoj\u00ebn p\u00ebr testimin e ndryshimeve dhe implementimin.<\/p>\n<p>Pra, gjysma e t\u00eb gjitha problemeve ka t\u00eb b\u00ebj\u00eb me baz\u00ebn e t\u00eb dh\u00ebnave. 48% e t\u00eb gjitha gabimeve jan\u00eb gabime t\u00eb thjeshta.<br \/>\nNj\u00eb e treta e t\u00eb gjitha problemeve ka t\u00eb b\u00ebj\u00eb me ndryshimin e logjik\u00ebs ose modelit t\u00eb depozit\u00ebs, dhe m\u00eb shum\u00eb se gjysma e k\u00ebtyre gabimeve jan\u00eb t\u00eb komplikuara.<\/p>\n<p>Dhe m\u00eb pak se nj\u00eb e kat\u00ebrta e t\u00eb gjitha problemeve \u00ebsht\u00eb e lidhur me planifikuesin e detyrave, 18% e t\u00eb cilave jan\u00eb gabime t\u00eb thjeshta.<\/p>\n<p>N\u00eb p\u00ebrgjith\u00ebsi, 22% e t\u00eb gjitha gabimeve jan\u00eb t\u00eb komplikuara, dhe rregullimi i tyre k\u00ebrkon m\u00eb shum\u00eb v\u00ebmendje dhe koh\u00eb. Ato ndodhin rreth nj\u00eb her\u00eb n\u00eb jav\u00eb. Nd\u00ebrsa gabimet e thjeshta ndodhin thuajse \u00e7do dit\u00eb.<\/p>\n<p>Evident \u00ebsht\u00eb se monitorimi i proceseve ETL \u00ebsht\u00eb efektiv kur logu tregon sa m\u00eb sakt\u00eb vendin e gabimit dhe k\u00ebrkon koh\u00ebn minimale p\u00ebr t\u00eb gjetur burimin e problemit.<\/p>\n<h4>Monitorim efektiv<\/h4>\n<p>\n\u00c7far\u00eb doja t\u00eb shihja n\u00eb procesin e monitorimit ETL?<\/p>\n<p><img decoding=\"async\" alt=\"Monitorimi i proceseve ETL n\u00eb nj\u00eb depo t\u00eb vog\u00ebl t\u00eb t\u00eb dh\u00ebnave\" src=\"\/wp-content\/uploads\/2019\/09\/03e6ebc3aef69137880a278f9891370a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nStart at \u2014 kur filloi puna,<br \/>\nSource \u2014 burimi i t\u00eb dh\u00ebnave,<br \/>\nLayer \u2014 cili nivel depozite po ngarkohet,<br \/>\nETL Job Name \u2014 procedura e ngarkimit q\u00eb p\u00ebrb\u00ebhet nga shum\u00eb hapa t\u00eb vegj\u00ebl,<br \/>\nStep Number \u2014 numri i hapit q\u00eb po kryhet,<br \/>\nAffected Rows \u2014 sa t\u00eb dh\u00ebna jan\u00eb p\u00ebrpunuar tashm\u00eb,<br \/>\nDuration sec \u2014 sa gjat\u00eb po kryhet,<br \/>\nStatus \u2014 a \u00ebsht\u00eb gjith\u00e7ka n\u00eb rregull apo jo: OK, ERROR, RUNNING, HANGS<br \/>\nMessage \u2014 mesazhi m\u00eb i fundit i suksessh\u00ebm ose p\u00ebrshkrimi i gabimit.<\/p>\n<p>N\u00eb baz\u00eb t\u00eb statusit t\u00eb regjistrimeve, mund t\u00eb d\u00ebrgohet nj\u00eb email te pjes\u00ebmarr\u00ebsit e tjer\u00eb. N\u00ebse nuk ka gabimeve, at\u00ebher\u00eb emaili nuk \u00ebsht\u00eb i domosdosh\u00ebm.<\/p>\n<p>Pra, n\u00eb rast gabimi, vendi i incidentit \u00ebsht\u00eb shprehur qart\u00eb.<\/p>\n<p>Ndonj\u00ebher\u00eb ndodh q\u00eb mjeti i monitorimit nuk funksionon. N\u00eb k\u00ebt\u00eb rast, ka mund\u00ebsi q\u00eb n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave t\u00eb thirret nj\u00eb pamje (view), mbi t\u00eb cil\u00ebn \u00ebsht\u00eb nd\u00ebrtuar raporti.<\/p>\n<h4>Tabela e monitorimit ETL<\/h4>\n<p>\nP\u00ebr t\u00eb realizuar monitorimin e proceseve ETL, mjafton nj\u00eb tabel\u00eb dhe nj\u00eb pamje.<\/p>\n<p>P\u00ebr k\u00ebt\u00eb, mund t\u00eb kthehemi n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462337\/\">depon ton\u00eb t\u00eb vog\u00ebl<\/a><\/noindex> dhe t\u00eb krijojm\u00eb nj\u00eb prototip n\u00eb databaz\u00ebn sqlite.<\/p>\n<p><b class=\"spoiler_title\">DDL tabela<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE UTL_JOB_STATUS (\n\/* Tabela p\u00ebr regjistrimin e logut t\u00eb ekzekutimit t\u00eb pun\u00ebs. E r\u00ebnd\u00ebsishme q\u00eb puna t\u00eb ket\u00eb hapat ETL_START dhe ETL_END ose ETL_ERROR *\/\n  UTL_JOB_STATUS_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n  SID               INTEGER NOT NULL DEFAULT -1, \/* Identifikatori i sesionit. Unik p\u00ebr \u00e7do ekzekutim t\u00eb pun\u00ebs *\/\n  LOG_DT            INTEGER NOT NULL DEFAULT 0,  \/* Data dhe ora *\/\n  LOG_D             INTEGER NOT NULL DEFAULT 0,  \/* Data *\/\n  JOB_NAME          TEXT NOT NULL DEFAULT 'N\/A', \/* Emri i pun\u00ebs si JOB_STG2DM_GEO *\/\n  STEP_NAME         TEXT NOT NULL DEFAULT 'N\/A', \/* ETL_START, ... , ETL_END\/ETL_ERROR *\/\n  STEP_DESCR        TEXT,                        \/* P\u00ebrshkrimi i detyr\u00ebs ose mesazhi i gabimit *\/\n  UNIQUE (SID, JOB_NAME, STEP_NAME)\n);\nINSERT INTO UTL_JOB_STATUS (UTL_JOB_STATUS_ID) VALUES (-1);<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">DDL pamjeje\/raporti<\/b><\/p>\n<pre><code class=\"sql\">KRIJO PAMJE N\u00cbSE NUK EKZISTON UTL_JOB_STATUS_V\nAS \/* P\u00ebrmbajtja: Logu i Ekzekutimit t\u00eb Paket\u00ebs p\u00ebr 3 muajt e fundit. *\/\nME SRC AS (\n  ZGJIDH LOG_D,\n    LOG_DT,\n    UTL_JOB_STATUS_ID,\n    SID,\n\tRASTI KUR INSTR(JOB_NAME, 'FTP') AT\u00cbHER\u00cb 'TRANSFER' \/* transferimi i skedar\u00ebve *\/\n\t     RASTI KUR INSTR(JOB_NAME, 'STG') AT\u00cbHER\u00cb 'STAGE' \/* faza *\/\n\t     RASTI KUR INSTR(JOB_NAME, 'CLS') AT\u00cbHER\u00cb 'PASTRIM' \/* pastrimi *\/\n\t     RASTI KUR INSTR(JOB_NAME, 'DIM') AT\u00cbHER\u00cb 'DIMENSION' \/* dimensioni *\/\n\t     RASTI KUR INSTR(JOB_NAME, 'FCT') AT\u00cbHER\u00cb 'FAR\u00cb' \/* fakte *\/\n\t\t RASTI KUR INSTR(JOB_NAME, 'ETL') AT\u00cbHER\u00cb 'STAGE-MART' \/* mart i t\u00eb dh\u00ebnave *\/\n\t     RASTI KUR INSTR(JOB_NAME, 'RPT') AT\u00cbHER\u00cb 'REPORT' \/* raporti *\/\n\t     T\u00cb TJERAT 'N\/A' MERR SI L\u00cbVIZJE,\n\tRASTI KUR INSTR(JOB_NAME, 'ACCESS') AT\u00cbHER\u00cb 'LOG i QASJES' \/* burimi *\/\n\t     RASTI KUR INSTR(JOB_NAME, 'MASTER') AT\u00cbHER\u00cb 'T\u00cb DH\u00cbNAT MASTER' \/* burimi *\/\n\t     RASTI KUR INSTR(JOB_NAME, 'AD-HOC') AT\u00cbHER\u00cb 'AD-HOC' \/* burimi *\/\n\t     T\u00cb TJERAT 'N\/A' SI BURIM,\n    JOB_NAME,\n    STEP_NAME,\n    RASTI KUR STEP_NAME='ETL_START' AT\u00cbHER\u00cb 1 T\u00cb TJERAT 0 SI START_FLAG,\n    RASTI KUR STEP_NAME='ETL_END' AT\u00cbHER\u00cb 1 T\u00cb TJERAT 0 SI END_FLAG,\n    RASTI KUR STEP_NAME='ETL_ERROR' AT\u00cbHER\u00cb 1 T\u00cb TJERAT 0 SI ERROR_FLAG,\n    STEP_NAME || ' : ' || STEP_DESCR SI STEP_LOG,\n\tSUBSTR( SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), 1, INSTR(SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), '***')-2 ) SI AFFECTED_ROWS\n  FROM UTL_JOB_STATUS\n  WHERE datetime(LOG_D, 'unixepoch') &gt;= date('now', 'start of month', '-3 month')\n)\nZGJIDH JB.SID,\n  JB.MIN_LOG_DT AS START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) SI LOG_DT,\n  JB.SOURCE,\n  JB.LAYER,\n  JB.JOB_NAME,\n  RASTI\n  KUR JB.ERROR_FLAG = 1 AT\u00cbHER\u00cb 'ERROR'\n  KUR JB.ERROR_FLAG = 0 DHE JB.END_FLAG = 0 DHE strftime('%s','now') - JB.MIN_LOG_DT &gt; 0.5*60*60 AT\u00cbHER\u00cb 'HANGS' \/* gjysm\u00eb ore *\/\n  KUR JB.ERROR_FLAG = 0 DHE JB.END_FLAG = 0 AT\u00cbHER\u00cb 'RUNNING'\n  T\u00cb TJERAT 'OK'\n  SI STATUS,\n  ERR.STEP_LOG     SI STEP_LOG,\n  JB.CNT           SI STEP_CNT,\n  JB.AFFECTED_ROWS SI AFFECTED_ROWS,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) SI JOB_START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MAX_LOG_DT, 'unixepoch')) SI JOB_END_DT,\n  JB.MAX_LOG_DT - JB.MIN_LOG_DT SI JOB_DURATION_SEC\nFROM\n  ( ZGJIDH SID, SOURCE, LAYER, JOB_NAME,\n           MAX(UTL_JOB_STATUS_ID) SI UTL_JOB_STATUS_ID,\n           MAX(START_FLAG)       SI START_FLAG,\n           MAX(END_FLAG)         SI END_FLAG,\n           MAX(ERROR_FLAG)       SI ERROR_FLAG,\n           MIN(LOG_DT)           SI MIN_LOG_DT,\n           MAX(LOG_DT)           SI MAX_LOG_DT,\n           SUM(1)                SI CNT,\n           SUM(IFNULL(AFFECTED_ROWS, 0)) SI AFFECTED_ROWS\n    FROM SRC\n    GRUPI NGA SID, SOURCE, LAYER, JOB_NAME\n  ) JB,\n  ( ZGJIDH UTL_JOB_STATUS_ID, SID, JOB_NAME, STEP_LOG\n    FROM SRC\n    KU 1 = 1\n  ) ERR\nKU 1 = 1\n  DHE JB.SID = ERR.SID\n  DHE JB.JOB_NAME = ERR.JOB_NAME\n  DHE JB.UTL_JOB_STATUS_ID = ERR.UTL_JOB_STATUS_ID\nPOROSIA ZGJIDH JB.MIN_LOG_DT DESC, JB.SID DESC, JB.SOURCE;<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">Kontrolli SQL i mund\u00ebsis\u00eb p\u00ebr t\u00eb marr\u00eb nj\u00eb num\u00ebr t\u00eb ri sesioni<\/b><\/p>\n<pre><code class=\"sql\">ZGJIDH SUM (\n  RASTI KUR start_job.JOB_NAME NUK \u00cbSHT\u00cb NULL DHE end_job.JOB_NAME \u00cbSHT\u00cb NULL \/* puna eksiste p\u00ebrfundoi *\/\n\t    DHE JO ( 'y' = 'n' ) \/* forcimi i rinisjes PARAMETRI *\/\n       AT\u00cbHER\u00cb 1 T\u00cb TJERAT 0\n  END ) SI IS_RUNNING\n  NGA\n    ( ZGJIDH 1 SI dummy NGA UTL_JOB_STATUS KU sid = -1) d_job\n  LEFT OUTER JOIN\n    ( ZGJIDH JOB_NAME, SID, 1 SI dummy\n      NGA UTL_JOB_STATUS\n      KU JOB_NAME = 'RPT_ACCESS_LOG' \/* emri i pun\u00ebs PARAMETRI *\/\n\t    DHE STEP_NAME = 'ETL_START'\n      GRUPI NGA JOB_NAME, SID\n    ) start_job \/* fillon *\/\n  ON d_job.dummy = start_job.dummy\n  LEFT OUTER JOIN\n    ( ZGJIDH JOB_NAME, SID\n      NGA UTL_JOB_STATUS\n      KU JOB_NAME = 'RPT_ACCESS_LOG'  \/* emri i pun\u00ebs PARAMETRI *\/\n\t    DHE STEP_NAME n\u00eb ('ETL_END', 'ETL_ERROR') \/* statusi i ndaljes *\/\n      GRUPI NGA JOB_NAME, SID\n    ) end_job \/* p\u00ebrfundon *\/\n  ON start_job.JOB_NAME = end_job.JOB_NAME\n     DHE start_job.SID = end_job.SID<\/code><\/pre>\n<p>\nKarakteristikat e tabel\u00ebs:<\/p>\n<ul>\n<li>fillimi dhe p\u00ebrfundimi i procedur\u00ebs s\u00eb p\u00ebrpunimit t\u00eb t\u00eb dh\u00ebnave duhet t\u00eb shoq\u00ebrohet me hapat ETL_START dhe ETL_END<\/li>\n<li>n\u00eb rast gabimi duhet t\u00eb krijohet hapi ETL_ERROR me p\u00ebrshkrimin e saj<\/li>\n<li>numri i t\u00eb dh\u00ebnave t\u00eb p\u00ebrpunuara duhet t\u00eb evidentohet, p\u00ebr shembull, me yje<\/li>\n<li>n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb e nj\u00ebjta procedur\u00eb mund t\u00eb iniciohet me parametrin force_restart=y, pa t\u00eb, numri i sesionit jepet vet\u00ebm p\u00ebr procedur\u00ebn e p\u00ebrfunduar <\/li>\n<li>n\u00eb m\u00ebnyr\u00eb normale nuk mund t\u00eb iniciohet paralelisht e nj\u00ebjta procedur\u00eb e p\u00ebrpunimit t\u00eb t\u00eb dh\u00ebnave<\/li>\n<\/ul>\n<p>\nOperacionet e nevojshme p\u00ebr pun\u00ebn me tabel\u00ebn jan\u00eb si m\u00eb posht\u00eb:<\/p>\n<ul>\n<li>marrja e numrit t\u00eb sesionit p\u00ebr procedur\u00ebn ETL t\u00eb nisur<\/li>\n<li>shtimi i sh\u00ebnimit t\u00eb logut n\u00eb tabel\u00eb<\/li>\n<li>marrja e sh\u00ebnimit t\u00eb fundit t\u00eb suksessh\u00ebm p\u00ebr procedur\u00ebn ETL<\/li>\n<\/ul>\n<p>\nN\u00eb baza t\u00eb dh\u00ebnash t\u00eb tilla si Oracle ose Postgres k\u00ebto operacione mund t\u00eb implementohen me funksione t\u00eb nd\u00ebrtuara. P\u00ebr sqlite nevojitet nj\u00eb mekaniz\u00ebm i jasht\u00ebm dhe n\u00eb k\u00ebt\u00eb rast ai <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\/blob\/master\/utl_func.php\">\u00ebsht\u00eb prototipizuar n\u00eb PHP<\/a><\/noindex>.<\/p>\n<h4>P\u00ebrfundim<\/h4>\n<p>\nPra, mesazhet e gabimeve n\u00eb mjetet e p\u00ebrpunimit t\u00eb t\u00eb dh\u00ebnave luajn\u00eb nj\u00eb rol shum\u00eb t\u00eb r\u00ebnd\u00ebsish\u00ebm. Por t\u00eb qen\u00ebt optimale p\u00ebr gjetjen e shpejt\u00eb t\u00eb shkakut t\u00eb problemeve, ato nuk jan\u00eb t\u00eb lehta. Kur numri i procedurave afrohet n\u00eb nj\u00ebqind, monitorimi i proceseve b\u00ebhet nj\u00eb projekt i nd\u00ebrlikuar.<\/p>\n<p>Ky artikull ofron nj\u00eb shembull t\u00eb mundsh\u00ebm t\u00eb zgjidhjes s\u00eb problemit n\u00eb form\u00ebn e nj\u00eb prototipi. E gjith\u00eb prototipi i nj\u00eb depoje t\u00eb vog\u00ebl \u00ebsht\u00eb i disponuesh\u00ebm n\u00eb gitlab <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\">SQLite PHP ETL Utilities<\/a><\/noindex>.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465637\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043e\u0448\u0438\u0431\u043a\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043b\u043e\u0433\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 (\u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e java) \u0433\u0434\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28295,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37701","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=\"\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043e\u0448\u0438\u0431\u043a\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043b\u043e\u0433\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 (\u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e java) \u0433\u0434\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435\" \/>\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\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh\" \/>\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\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 ETL-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043e\u0448\u0438\u0431\u043a\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043b\u043e\u0433\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 (\u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e java) \u0433\u0434\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh\" \/>\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:19:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:19:10+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\udd47Monitorimi i proceseve ETL n\u00eb nj\u00eb depo t\u00eb vog\u00ebl t\u00eb dh\u00ebnash | ProHoster","description":"Shum\u00eb p\u00ebrdorin mjete specifike p\u00ebr krijimin e procedurave p\u00ebr ekstraktimin, transformimin dhe ngarkimin e t\u00eb dh\u00ebnave n\u00eb bazat e t\u00eb dh\u00ebnave relacional. Procesi i pun\u00ebs s\u00eb mjeteve regjistrohet, gabimet dokumentohen. N\u00eb rast gabimi n\u00eb log p\u00ebrmban informacion se cila mjet nuk arriti t\u00eb realizoj\u00eb detyr\u00ebn dhe cilat module (n\u00eb p\u00ebrgjith\u00ebsi, java) ndaluan. N\u00eb rreshtat e fundit mund t\u00eb gjendet gabimi i baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, p\u00ebr shembull, shkelje","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","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\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 ETL-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:description":"\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043e\u0448\u0438\u0431\u043a\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043b\u043e\u0433\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 (\u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e java) \u0433\u0434\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","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:19:10+00:00","article:modified_time":"2019-10-31T19:19:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37701","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-23 18:57:59","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:22:28","updated":"2026-01-23 18:57:59","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\/37701","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=37701"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37701\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/28295"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=37701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=37701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=37701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}