{"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\/cs\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","title":{"rendered":"Monitorov\u00e1n\u00ed ETL proces\u016f v mal\u00e9m datov\u00e9m skladu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Mnoho lid\u00ed pou\u017e\u00edv\u00e1 specializovan\u00e9 n\u00e1stroje k vytv\u00e1\u0159en\u00ed proces\u016f extrakce, transformace a na\u010d\u00edt\u00e1n\u00ed dat do rela\u010dn\u00edch datab\u00e1z\u00ed. Proces pr\u00e1ce n\u00e1stroj\u016f je logov\u00e1n, chyby jsou zaznamen\u00e1ny.<\/p>\n<p>V p\u0159\u00edpad\u011b chyby obsahuje log informace o tom, \u017ee n\u00e1stroji se nepoda\u0159ilo \u00fakol splnit a kter\u00e9 moduly (\u010dasto je to Java) zastavily proces. V posledn\u00edch \u0159\u00e1dc\u00edch lze nal\u00e9zt chybu datab\u00e1ze, nap\u0159\u00edklad poru\u0161en\u00ed unik\u00e1tn\u00edho kl\u00ed\u010de tabulky.<\/p>\n<p>Abych odpov\u011bd\u011bl na ot\u00e1zku, jakou roli hraje informace o chyb\u00e1ch ETL, klasifikoval jsem v\u0161echny probl\u00e9my, kter\u00e9 se vyskytly za posledn\u00ed dva roky v pom\u011brn\u011b velk\u00e9m \u00falo\u017ei\u0161ti. <\/p>\n<p><img decoding=\"async\" alt=\"Monitorov\u00e1n\u00ed ETL proces\u016f v mal\u00e9m datov\u00e9m skladu\" 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>Mezi chyby datab\u00e1ze pat\u0159\u00ed nap\u0159\u00edklad nedostatek m\u00edsta, p\u0159eru\u0161en\u00e9 spojen\u00ed, zamrznut\u00ed relace a podobn\u011b.<\/p>\n<p>Logick\u00fdmi chybami jsou nap\u0159\u00edklad poru\u0161en\u00ed kl\u00ed\u010d\u016f tabulky, neplatn\u00e9 objekty, nedostatek p\u0159\u00edstupu k objekt\u016fm a podobn\u011b.<br \/>\nPl\u00e1nova\u010d m\u016f\u017ee b\u00fdt spu\u0161t\u011bn v nespr\u00e1vnou dobu, m\u016f\u017ee zamrznout atd.<\/p>\n<p>Jednoduch\u00e9 chyby nevy\u017eaduj\u00ed mnoho \u010dasu na opravu. V\u011bt\u0161inu z nich dobr\u00e9 ETL zvl\u00e1d\u00e1 samo.<\/p>\n<p>Slo\u017eit\u011bj\u0161\u00ed chyby vy\u017eaduj\u00ed otev\u0159en\u00ed a kontrolu datov\u00fdch proces\u016f, zkoum\u00e1n\u00ed zdroj\u016f dat. \u010casto vedou k nutnosti testov\u00e1n\u00ed zm\u011bn a nasazen\u00ed.<\/p>\n<p>Tak\u017ee polovina v\u0161ech probl\u00e9m\u016f je spojena s datab\u00e1z\u00ed. 48 % v\u0161ech chyb jsou jednoduch\u00e9 chyby.<br \/>\nT\u0159etina v\u0161ech probl\u00e9m\u016f je spojena se zm\u011bnou logiky nebo modelu \u00falo\u017ei\u0161t\u011b, v\u00edce ne\u017e polovina t\u011bchto chyb je slo\u017eit\u011bj\u0161\u00ed.<\/p>\n<p>A m\u00e9n\u011b ne\u017e \u010dtvrtina v\u0161ech probl\u00e9m\u016f je spojena s pl\u00e1nova\u010dem \u00faloh, z nich\u017e 18 % jsou jednoduch\u00e9 chyby.<\/p>\n<p>Celkov\u011b 22 % v\u0161ech vznikl\u00fdch chyb je slo\u017eit\u00fdch, jejich oprava vy\u017eaduje nejv\u00edce pozornosti a \u010dasu. Vyskytuj\u00ed se p\u0159ibli\u017en\u011b jednou t\u00fddn\u011b. Zat\u00edmco jednoduch\u00e9 chyby se vyskytuj\u00ed t\u00e9m\u011b\u0159 ka\u017ed\u00fd den.<\/p>\n<p>Je z\u0159ejm\u00e9, \u017ee monitorov\u00e1n\u00ed proces\u016f ETL bude efektivn\u00ed, kdy\u017e bude v logu maxim\u00e1ln\u011b p\u0159esn\u011b uvedeno m\u00edsto chyby a bude pot\u0159eba minim\u00e1ln\u00ed \u010das na nalezen\u00ed zdroje probl\u00e9mu.<\/p>\n<h4>Efektivn\u00ed monitorov\u00e1n\u00ed<\/h4>\n<p>\nCo bych cht\u011bl vid\u011bt v procesu monitorov\u00e1n\u00ed ETL?<\/p>\n<p><img decoding=\"async\" alt=\"Monitorov\u00e1n\u00ed ETL proces\u016f v mal\u00e9m datov\u00e9m skladu\" src=\"\/wp-content\/uploads\/2019\/09\/03e6ebc3aef69137880a278f9891370a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nStart at \u2014 kdy za\u010dal pracovn\u00ed proces,<br \/>\nSource \u2014 zdroj dat,<br \/>\nLayer \u2014 jak\u00e1 \u00farove\u0148 \u00falo\u017ei\u0161t\u011b je na\u010d\u00edt\u00e1na,<br \/>\nETL Job Name \u2014 procedura na\u010d\u00edt\u00e1n\u00ed, kter\u00e1 se skl\u00e1d\u00e1 z mnoha drobn\u00fdch krok\u016f,<br \/>\nStep Number \u2014 \u010d\u00edslo prov\u00e1d\u011bn\u00e9ho kroku,<br \/>\nOvlivn\u011bn\u00e9 \u0159\u00e1dky \u2014 kolik dat u\u017e bylo zpracov\u00e1no,<br \/>\nDoba trv\u00e1n\u00ed v sekund\u00e1ch \u2014 jak dlouho se prov\u00e1d\u00ed,<br \/>\nStav \u2014 jestli je v\u0161e v po\u0159\u00e1dku nebo ne: OK, ERROR, RUNNING, HANGS<br \/>\nZpr\u00e1va \u2014 posledn\u00ed \u00fasp\u011b\u0161n\u00e1 zpr\u00e1va nebo popis chyby.<\/p>\n<p>Na z\u00e1klad\u011b stavu z\u00e1znam\u016f lze poslat e-mail ostatn\u00edm \u00fa\u010dastn\u00edk\u016fm. Pokud nejsou \u017e\u00e1dn\u00e9 chyby, e-mail nen\u00ed nutn\u00fd.<\/p>\n<p>Tak\u017ee v p\u0159\u00edpad\u011b chyby je jasn\u011b uvedeno m\u00edsto ud\u00e1losti.<\/p>\n<p>N\u011bkdy se stane, \u017ee samotn\u00fd monitorovac\u00ed n\u00e1stroj nefunguje. V takov\u00e9m p\u0159\u00edpad\u011b je mo\u017en\u00e9 p\u0159\u00edmo v datab\u00e1zi vyvolat pohled (view), na jeho\u017e z\u00e1klad\u011b byl sestaven report.<\/p>\n<h4>Tabulka monitorov\u00e1n\u00ed ETL<\/h4>\n<p>\nPro realizaci monitorov\u00e1n\u00ed ETL proces\u016f posta\u010d\u00ed jedna tabulka a jeden pohled.<\/p>\n<p>K tomu se m\u016f\u017eeme vr\u00e1tit do <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462337\/\">sv\u00e9ho mal\u00e9ho \u00falo\u017ei\u0161t\u011b<\/a><\/noindex> a vytvo\u0159it prototyp v datab\u00e1zi sqlite.<\/p>\n<p><b class=\"spoiler_title\">DDL tabulky<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE UTL_JOB_STATUS (\n\/* Tabulka pro zaznamen\u00e1v\u00e1n\u00ed vykon\u00e1n\u00ed \u00faloh. D\u016fle\u017eit\u00e9, aby \u00faloha m\u011bla kroky ETL_START a ETL_END nebo ETL_ERROR *\/\n  UTL_JOB_STATUS_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n  SID               INTEGER NOT NULL DEFAULT -1, \/* Identifik\u00e1tor relace. Unik\u00e1tn\u00ed pro ka\u017ed\u00fd b\u011bh \u00falohy *\/\n  LOG_DT            INTEGER NOT NULL DEFAULT 0,  \/* Datum a \u010das *\/\n  LOG_D             INTEGER NOT NULL DEFAULT 0,  \/* Datum *\/\n  JOB_NAME          TEXT NOT NULL DEFAULT 'N\/A', \/* N\u00e1zev \u00falohy, jako JOB_STG2DM_GEO *\/\n  STEP_NAME         TEXT NOT NULL DEFAULT 'N\/A', \/* ETL_START, ... , ETL_END\/ETL_ERROR *\/\n  STEP_DESCR        TEXT,                        \/* Popis \u00fakolu nebo zpr\u00e1vy o chyb\u011b *\/\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 pohledu\/reportu<\/b><\/p>\n<pre><code class=\"sql\">VYTV\u00c1\u0158EJTE VIZUALIZACI, POKUD NEEXISTUJE UTL_JOB_STATUS_V\nJAKO \n\/* Obsah: Protokol prov\u00e1d\u011bn\u00ed bal\u00ed\u010dku za posledn\u00ed 3 m\u011bs\u00edce. *\/\nS SRC JAKO (\n  VYBERTE LOG_D,\n    LOG_DT,\n    UTL_JOB_STATUS_ID,\n    SID,\n\tP\u0158\u00cdPAD KDY INSTR(JOB_NAME, 'FTP') POTOM 'TRANSFER' \/* p\u0159enos souboru *\/\n\t     KDY INSTR(JOB_NAME, 'STG') POTOM 'STAGE' \/* f\u00e1ze *\/\n\t     KDY INSTR(JOB_NAME, 'CLS') POTOM 'CLEANSING' \/* \u00faprava dat *\/\n\t     KDY INSTR(JOB_NAME, 'DIM') POTOM 'DIMENSION' \/* dimenze *\/\n\t     KDY INSTR(JOB_NAME, 'FCT') POTOM 'FACT' \/* fakt *\/\n\t\t KDY INSTR(JOB_NAME, 'ETL') POTOM 'STAGE-MART' \/* datov\u00fd trh *\/\n\t     KDY INSTR(JOB_NAME, 'RPT') POTOM 'REPORT' \/* zpr\u00e1va *\/\n\t     JINAK 'N\/A' KONEC JAKO VRSTVA,\n\tP\u0158\u00cdPAD KDY INSTR(JOB_NAME, 'ACCESS') POTOM 'ACCESS LOG' \/* zdroj *\/\n\t     KDY INSTR(JOB_NAME, 'MASTER') POTOM 'MASTER DATA' \/* zdroj *\/\n\t     KDY INSTR(JOB_NAME, 'AD-HOC') POTOM 'AD-HOC' \/* zdroj *\/\n\t     JINAK 'N\/A' KONEC JAKO ZDROJ,\n    JOB_NAME,\n    STEP_NAME,\n    P\u0158\u00cdPAD KDY STEP_NAME='ETL_START' POTOM 1 JINAK 0 KONEC JAKO START_FLAG,\n    P\u0158\u00cdPAD KDY STEP_NAME='ETL_END' POTOM 1 JINAK 0 KONEC JAKO END_FLAG,\n    P\u0158\u00cdPAD KDY STEP_NAME='ETL_ERROR' POTOM 1 JINAK 0 KONEC JAKO ERROR_FLAG,\n    STEP_NAME || ' : ' || STEP_DESCR JAKO STEP_LOG,\n\tSUBSTR( SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), 1, INSTR(SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), '***')-2 ) JAKO AFFECTED_ROWS\n  Z UTL_JOB_STATUS\n  KDE datetime(LOG_D, 'unixepoch') &gt;= date('now', 'start of month', '-3 month')\n)\nVYBERTE JB.SID,\n  JB.MIN_LOG_DT JAKO START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) JAKO LOG_DT,\n  JB.SOURCE,\n  JB.LAYER,\n  JB.JOB_NAME,\n  P\u0158\u00cdPAD\n  KDY JB.ERROR_FLAG = 1 POTOM 'CHYBA'\n  KDY JB.ERROR_FLAG = 0 A JB.END_FLAG = 0 A strftime('%s','now') - JB.MIN_LOG_DT &gt; 0.5*60*60 POTOM 'ZAVIS\u00cd' \/* p\u016fl hodiny *\/\n  KDY JB.ERROR_FLAG = 0 A JB.END_FLAG = 0 POTOM 'PROB\u00cdH\u00c1'\n  JINAK 'OK'\n  KONEC JAKO STATUS,\n  ERR.STEP_LOG     JAKO STEP_LOG,\n  JB.CNT           JAKO STEP_CNT,\n  JB.AFFECTED_ROWS JAKO AFFECTED_ROWS,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) JAKO JOB_START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MAX_LOG_DT, 'unixepoch')) JAKO JOB_END_DT,\n  JB.MAX_LOG_DT - JB.MIN_LOG_DT JAKO JOB_DURATION_SEC\nZ\n  ( VYBERTE SID, SOURCE, LAYER, JOB_NAME,\n           MAX(UTL_JOB_STATUS_ID) JAKO UTL_JOB_STATUS_ID,\n           MAX(START_FLAG)       JAKO START_FLAG,\n           MAX(END_FLAG)         JAKO END_FLAG,\n           MAX(ERROR_FLAG)       JAKO ERROR_FLAG,\n           MIN(LOG_DT)           JAKO MIN_LOG_DT,\n           MAX(LOG_DT)           JAKO MAX_LOG_DT,\n           SUM(1)                JAKO CNT,\n           SUM(IFNULL(AFFECTED_ROWS, 0)) JAKO AFFECTED_ROWS\n    Z SRC\n    SKUPINA PODLE SID, SOURCE, LAYER, JOB_NAME\n  ) JB,\n  ( VYBERTE UTL_JOB_STATUS_ID, SID, JOB_NAME, STEP_LOG\n    Z SRC\n    KDE 1 = 1\n  ) ERR\nKDE 1 = 1\n  A JB.SID = ERR.SID\n  A JB.JOB_NAME = ERR.JOB_NAME\n  A JB.UTL_JOB_STATUS_ID = ERR.UTL_JOB_STATUS_ID\nOBJEDN\u00c1VAJTE PODLE JB.MIN_LOG_DT DESC, JB.SID DESC, JB.SOURCE;<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">SQL Zkontrolujte mo\u017enost z\u00edsk\u00e1n\u00ed nov\u00e9ho \u010d\u00edsla relace<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE SUMU (\n  P\u0158\u00cdPAD KDY start_job.JOB_NAME NEN\u00cd NULL A end_job.JOB_NAME JE NULL \/* existuj\u00edc\u00ed \u00faloha skon\u010dila *\/\n\t    A NE ('y' = 'n') \/* parametrem pro vynucen\u00ed restartu *\/\n       POTOM 1 JINAK 0\n  KONEC ) JAKO IS_RUNNING\n  Z\n    ( VYBERTE 1 JAKO dummy Z UTL_JOB_STATUS KDE sid = -1) d_job\n  LEV\u00dd EXTERN\u00cd JOIN\n    ( VYBERTE JOB_NAME, SID, 1 JAKO dummy\n      Z UTL_JOB_STATUS\n      KDE JOB_NAME = 'RPT_ACCESS_LOG' \/* jm\u00e9no \u00falohy PARAMETRU *\/\n\t    A STEP_NAME = 'ETL_START'\n      SKUPINA PODLE JOB_NAME, SID\n    ) start_job \/* za\u010d\u00e1tky *\/\n  NA d_job.dummy = start_job.dummy\n  LEV\u00dd EXTERN\u00cd JOIN\n    ( VYBERTE JOB_NAME, SID\n      Z UTL_JOB_STATUS\n      KDE JOB_NAME = 'RPT_ACCESS_LOG'  \/* jm\u00e9no \u00falohy PARAMETRU *\/\n\t    A STEP_NAME IN ('ETL_END', 'ETL_ERROR') \/* stav zastaven\u00ed *\/\n      SKUPINA PODLE JOB_NAME, SID\n    ) end_job \/* konce *\/\n  NA start_job.JOB_NAME = end_job.JOB_NAME\n     A start_job.SID = end_job.SID<\/code><\/pre>\n<p>\nVlastnosti tabulky:<\/p>\n<ul>\n<li>Za\u010d\u00e1tek a konec procesu zpracov\u00e1n\u00ed dat mus\u00ed b\u00fdt doprov\u00e1zen kroky ETL_START a ETL_END<\/li>\n<li>V p\u0159\u00edpad\u011b chyby mus\u00ed b\u00fdt vytvo\u0159en krok ETL_ERROR s jej\u00edm popisem<\/li>\n<li>Po\u010det zpracovan\u00fdch dat je t\u0159eba vyzna\u010dit, nap\u0159\u00edklad hv\u011bzdi\u010dkami<\/li>\n<li>Stejn\u00fd proces lze sou\u010dasn\u011b spustit s parametrem force_restart=y, bez n\u011bj se \u010d\u00edslo relace vrac\u00ed pouze dokon\u010den\u00e9mu procesu <\/li>\n<li>V b\u011b\u017en\u00e9m re\u017eimu nelze paraleln\u011b spustit stejn\u00fd proces zpracov\u00e1n\u00ed dat<\/li>\n<\/ul>\n<p>\nNezbytn\u00e9 operace pr\u00e1ce s tabulkou jsou n\u00e1sleduj\u00edc\u00ed:<\/p>\n<ul>\n<li>Z\u00edsk\u00e1n\u00ed \u010d\u00edsla relace spou\u0161t\u011bn\u00e9ho procesu ETL<\/li>\n<li>Vlo\u017een\u00ed z\u00e1znamu protokolu do tabulky<\/li>\n<li>Z\u00edsk\u00e1n\u00ed posledn\u00edho \u00fasp\u011b\u0161n\u00e9ho z\u00e1znamu procesu ETL<\/li>\n<\/ul>\n<p>\nV takov\u00fdch datab\u00e1z\u00edch, jako je nap\u0159\u00edklad Oracle nebo Postgres, lze tyto operace realizovat vestav\u011bn\u00fdmi funkcemi. Pro SQLite je pot\u0159eba extern\u00ed mechanismus a ten je v tomto p\u0159\u00edpad\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\/blob\/master\/utl_func.php\">prototypov\u00e1n na PHP<\/a><\/noindex>.<\/p>\n<h4>V\u00fdstup<\/h4>\n<p>\nT\u00edmto zp\u016fsobem hraj\u00ed zpr\u00e1vy o chyb\u00e1ch v n\u00e1stroj\u00edch pro zpracov\u00e1n\u00ed dat mega-d\u016fle\u017eitou roli. Ale optim\u00e1ln\u00ed pro rychl\u00e9 nalezen\u00ed p\u0159\u00ed\u010diny probl\u00e9m\u016f je t\u011b\u017eko nazvat. Kdy\u017e po\u010det procedur dosahuje stovky, monitoring proces\u016f se st\u00e1v\u00e1 slo\u017eit\u00fdm projektem.<\/p>\n<p>V \u010dl\u00e1nku je uveden p\u0159\u00edklad mo\u017en\u00e9ho \u0159e\u0161en\u00ed probl\u00e9mu ve form\u011b prototypu. Cel\u00fd prototyp mal\u00e9ho \u00falo\u017ei\u0161t\u011b je dostupn\u00fd na gitlabu <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\">SQLite PHP ETL Utility<\/a><\/noindex>.<br \/>\n<br \/>Zdroj: <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.3 - 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.\" \/>\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\/cs\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/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\udd47Monitorov\u00e1n\u00ed ETL proces\u016f v mal\u00e9m datov\u00e9m \u00falo\u017ei\u0161ti | ProHoster","description":"Mnoz\u00ed pou\u017e\u00edvaj\u00ed specializovan\u00e9 n\u00e1stroje pro vytv\u00e1\u0159en\u00ed procedur extrakce, transformace a na\u010d\u00edt\u00e1n\u00ed dat do rela\u010dn\u00edch datab\u00e1z\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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.","og:url":"https:\/\/prohoster.info\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/37701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=37701"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37701\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/28295"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=37701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=37701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=37701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}