{"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\/de\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","title":{"rendered":"\u00dcberwachung von ETL-Prozessen in einem kleinen Datenspeicher","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Viele nutzen spezialisierte Werkzeuge zur Erstellung von Prozessen zur Extraktion, Transformation und Speicherung von Daten in relationalen Datenbanken. Die Arbeitsabl\u00e4ufe der Werkzeuge werden protokolliert und Fehler festgehalten.<\/p>\n<p>Im Fehlerfall enth\u00e4lt das Protokoll Informationen dar\u00fcber, dass das Werkzeug die Aufgabe nicht ausf\u00fchren konnte und in welchen Modulen (h\u00e4ufig handelt es sich um Java) es zu einem Halt kam. In den letzten Zeilen l\u00e4sst sich der Datenbankfehler finden, beispielsweise ein Versto\u00df gegen den einzigartigen Schl\u00fcssel der Tabelle.<\/p>\n<p>Um die Rolle der Fehlermeldungen im ETL-Prozess zu erl\u00e4utern, habe ich alle Probleme, die in den letzten zwei Jahren in einem gro\u00dfen Speicher aufgetreten sind, klassifiziert. <\/p>\n<p><img decoding=\"async\" alt=\"\u00dcberwachung von ETL-Prozessen in einem kleinen Datenspeicher\" 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>Zu den Datenbankfehlern geh\u00f6ren Probleme wie nicht ausreichender Speicherplatz, unterbrochene Verbindungen, h\u00e4ngende Sessions usw.<\/p>\n<p>Logische Fehler umfassen Dinge wie Verletzungen von Tabellenschl\u00fcsseln, ung\u00fcltige Objekte, fehlender Zugriff auf Objekte usw.<br \/>\nDer Scheduler kann versp\u00e4tet gestartet werden, h\u00e4ngen bleiben usw.<\/p>\n<p>Einfache Fehler erfordern nicht viel Zeit zur Behebung. Mit den meisten kann ein gutes ETL-System selbstst\u00e4ndig umgehen.<\/p>\n<p>Komplexe Fehler erfordern das \u00d6ffnen und \u00dcberpr\u00fcfen von Datenverarbeitungsverfahren sowie die Analyse von Datenquellen. Dies f\u00fchrt h\u00e4ufig zu \u00c4nderungen und Tests von Deployments.<\/p>\n<p>So h\u00e4ngt die H\u00e4lfte aller Probleme mit der Datenbank zusammen. 48 % aller Fehler sind einfache Fehler.<br \/>\nEin Drittel aller Probleme ist auf Ver\u00e4nderungen in der Logik oder Struktur des Speichers zur\u00fcckzuf\u00fchren, wobei mehr als die H\u00e4lfte dieser Fehler komplex ist.<\/p>\n<p>Und weniger als ein Viertel aller Probleme betrifft den Aufgabenplaner, von denen 18 % einfache Fehler sind.<\/p>\n<p>Insgesamt sind 22 % aller aufgetretenen Fehler komplex, deren Behebung die meiste Aufmerksamkeit und Zeit erfordert. Sie treten etwa einmal pro Woche auf, w\u00e4hrend einfache Fehler fast t\u00e4glich vorkommen.<\/p>\n<p>Offensichtlich wird das Monitoring von ETL-Prozessen dann effektiv sein, wenn der Fehler im Protokoll so genau wie m\u00f6glich angegeben ist und die Suche nach der Problembquelle minimalen Aufwand erfordert.<\/p>\n<h4>Effektives Monitoring<\/h4>\n<p>\nWas h\u00e4tte ich mir im ETL-Monitoring gew\u00fcnscht?<\/p>\n<p><img decoding=\"async\" alt=\"\u00dcberwachung von ETL-Prozessen in einem kleinen Datenspeicher\" src=\"\/wp-content\/uploads\/2019\/09\/03e6ebc3aef69137880a278f9891370a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nStart at \u2014 wann der Prozess begonnen hat,<br \/>\nSource \u2014 Datenquelle,<br \/>\nLayer \u2014 welche Ebene des Speichers geladen wird,<br \/>\nETL-Job-Name \u2014 ein Ladeprozess, der aus vielen kleinen Schritten besteht,<br \/>\nSchritt Nummer \u2014 die Nummer des ausgef\u00fchrten Schrittes,<br \/>\nBetroffene Zeilen \u2014 wie viele Daten bereits verarbeitet wurden,<br \/>\nDauer in Sekunden \u2014 wie lange die Ausf\u00fchrung dauert,<br \/>\nStatus \u2014 ob alles in Ordnung ist oder nicht: OK, ERROR, RUNNING, HANGS<br \/>\nNachricht \u2014 die letzte erfolgreiche Mitteilung oder eine Fehlerbeschreibung.<\/p>\n<p>Basierend auf dem Status der Aufzeichnungen kann eine E-Mail an andere Teilnehmer gesendet werden. Wenn keine Fehler auftreten, ist die E-Mail nicht zwingend erforderlich.<\/p>\n<p>So ist im Falle eines Fehlers der genaue Ort des Vorfalls klar angegeben.<\/p>\n<p>Es kommt manchmal vor, dass das \u00dcberwachungstool selbst nicht funktioniert. In diesem Fall besteht die M\u00f6glichkeit, direkt in der Datenbank die Ansicht (View) aufzurufen, auf der der Bericht basiert.<\/p>\n<h4>ETL-\u00dcberwachungstabelle<\/h4>\n<p>\nUm die ETL-Prozesse zu \u00fcberwachen, gen\u00fcgt eine Tabelle und eine Ansicht.<\/p>\n<p>Dazu kann man zur\u00fcckgehen zu <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462337\/\">seinem kleinen Speicher<\/a><\/noindex> und einen Prototyp in der SQLite-Datenbank erstellen.<\/p>\n<p><b class=\"spoiler_title\">DDL-Tabelle<\/b><\/p>\n<pre><code class=\"sql\">ERSTELLEN SIE DIE TABELLE UTL_JOB_STATUS (\n\/* Tabelle zur Protokollierung der Jobausf\u00fchrung. Wichtig, dass der Job die Schritte ETL_START und ETL_END oder ETL_ERROR hat *\/\n  UTL_JOB_STATUS_ID INTEGER NICHT NULL PRIMARY KEY AUTOINCREMENT,\n  SID               INTEGER NICHT NULL STANDARD -1, \/* Sitzungsidentifikator. Einzigartig f\u00fcr jede Ausf\u00fchrung des Jobs *\/\n  LOG_DT            INTEGER NICHT NULL STANDARD 0,  \/* Datum und Uhrzeit *\/\n  LOG_D             INTEGER NICHT NULL STANDARD 0,  \/* Datum *\/\n  JOB_NAME          TEXT NICHT NULL STANDARD 'N\/A', \/* Jobname wie JOB_STG2DM_GEO *\/\n  STEP_NAME         TEXT NICHT NULL STANDARD 'N\/A', \/* ETL_START, ..., ETL_END\/ETL_ERROR *\/\n  STEP_DESCR        TEXT,                        \/* Beschreibung der Aufgabe oder Fehlermeldung *\/\n  EINDEUTIG (SID, JOB_NAME, STEP_NAME)\n);\nEINF\u00dcGEN IN UTL_JOB_STATUS (UTL_JOB_STATUS_ID) WERTE (-1);<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">DDL Ansicht\/Bericht<\/b><\/p>\n<pre><code class=\"sql\">ERSTELLEN SIE DIEANSICHT, WENN NICHT BEREITS VORHANDEN UTL_JOB_STATUS_V\nAS \/* Inhalt: Ausf\u00fchrungsprotokoll des Pakets f\u00fcr die letzten 3 Monate. *\/\nMIT SRC ALS (\n  W\u00c4HLEN SIE LOG_D,\n    LOG_DT,\n    UTL_JOB_STATUS_ID,\n    SID,\n\tFALLS INSTR(JOB_NAME, 'FTP') DANN '\u00dcBERTRAGUNG' \/* Datei\u00fcbertragung *\/\n\t     F\u00c4LLS INSTR(JOB_NAME, 'STG') DANN 'STUFE' \/* Stufe *\/\n\t     F\u00c4LLS INSTR(JOB_NAME, 'CLS') DANN 'REINIGUNG' \/* Reinigung *\/\n\t     F\u00c4LLS INSTR(JOB_NAME, 'DIM') DANN 'DIMENSION' \/* Dimension *\/\n\t     F\u00c4LLS INSTR(JOB_NAME, 'FCT') DANN 'FAKT' \/* Fakt *\/\n\t\t F\u00c4LLS INSTR(JOB_NAME, 'ETL') DANN 'STUFE-MART' \/* Datenmart *\/\n\t     F\u00c4LLS INSTR(JOB_NAME, 'RPT') DANN 'BERICHT' \/* Bericht *\/\n\t     ANDERES 'N\/A' END AS LAYER,\n\tFALLS INSTR(JOB_NAME, 'ACCESS') DANN 'ZUGRIFFSPROTOKOLL' \/* Quelle *\/\n\t     F\u00c4LLS INSTR(JOB_NAME, 'MASTER') DANN 'STAMMDATEN' \/* Quelle *\/\n\t     F\u00c4LLS INSTR(JOB_NAME, 'AD-HOC') DANN 'AD-HOC' \/* Quelle *\/\n\t     ANDERES 'N\/A' END AS SOURCE,\n    JOB_NAME,\n    STEP_NAME,\n    FALLS STEP_NAME='ETL_START' DANN 1 SONST 0 END AS START_FLAG,\n    FALLS STEP_NAME='ETL_END' DANN 1 SONST 0 END AS END_FLAG,\n    FALLS STEP_NAME='ETL_ERROR' DANN 1 SONST 0 END AS ERROR_FLAG,\n    STEP_NAME || ' : ' || STEP_DESCR AS STEP_LOG,\n\tSUBSTR( SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), 1, INSTR(SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), '***')-2 ) AS AFFECTED_ROWS\n  VON UTL_JOB_STATUS\n  WO datetime(LOG_D, 'unixepoch') &gt;= date('now', 'start of month', '-3 month')\n)\nW\u00c4HLEN SIE JB.SID,\n  JB.MIN_LOG_DT ALS START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) ALS LOG_DT,\n  JB.SOURCE,\n  JB.LAYER,\n  JB.JOB_NAME,\n  FALLS\n  WENN JB.ERROR_FLAG = 1 DANN 'FEHLER'\n  WENN JB.ERROR_FLAG = 0 UND JB.END_FLAG = 0 UND strftime('%s','now') - JB.MIN_LOG_DT &gt; 0,5*60*60 DANN 'BEH\u00c4NGT' \/* eine halbe Stunde *\/\n  WENN JB.ERROR_FLAG = 0 UND JB.END_FLAG = 0 DANN 'L\u00c4UFT'\n  ANDERES 'OK'\n  END ALS STATUS,\n  ERR.STEP_LOG     ALS STEP_LOG,\n  JB.CNT           ALS STEP_CNT,\n  JB.AFFECTED_ROWS ALS AFFECTED_ROWS,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) ALS JOB_START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MAX_LOG_DT, 'unixepoch')) ALS JOB_END_DT,\n  JB.MAX_LOG_DT - JB.MIN_LOG_DT ALS JOB_DURATION_SEC\nVON\n  ( W\u00c4HLEN SID, SOURCE, LAYER, JOB_NAME,\n           MAX(UTL_JOB_STATUS_ID) ALS UTL_JOB_STATUS_ID,\n           MAX(START_FLAG)       ALS START_FLAG,\n           MAX(END_FLAG)         ALS END_FLAG,\n           MAX(ERROR_FLAG)       ALS ERROR_FLAG,\n           MIN(LOG_DT)           ALS MIN_LOG_DT,\n           MAX(LOG_DT)           ALS MAX_LOG_DT,\n           SUM(1)                ALS CNT,\n           SUM(IFNULL(AFFECTED_ROWS, 0)) ALS AFFECTED_ROWS\n    VON SRC\n    GRUPPIEREN NACH SID, SOURCE, LAYER, JOB_NAME\n  ) JB,\n  ( W\u00c4HLEN UTL_JOB_STATUS_ID, SID, JOB_NAME, STEP_LOG\n    VON SRC\n    WO 1 = 1\n  ) ERR\nWO 1 = 1\n  UND JB.SID = ERR.SID\n  UND JB.JOB_NAME = ERR.JOB_NAME\n  UND JB.UTL_JOB_STATUS_ID = ERR.UTL_JOB_STATUS_ID\nBESTELLEN NACH JB.MIN_LOG_DT DESC, JB.SID DESC, JB.SOURCE;<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">SQL \u00dcberpr\u00fcfung der M\u00f6glichkeit zur Erhaltung einer neuen Sitzungsnummer<\/b><\/p>\n<pre><code class=\"sql\">SELECT SUM (\n  CASE WHEN start_job.JOB_NAME IS NOT NULL AND end_job.JOB_NAME IS NULL \/* bereits ausgef\u00fchrter Job abgeschlossen *\/\n\t    AND NOT ( 'y' = 'n' ) \/* Parameter f\u00fcr Zwangsneustart *\/\n       THEN 1 ELSE 0\n  END ) AS IS_RUNNING\n  FROM\n    ( SELECT 1 AS dummy FROM UTL_JOB_STATUS WHERE sid = -1) d_job\n  LEFT OUTER JOIN\n    ( SELECT JOB_NAME, SID, 1 AS dummy\n      FROM UTL_JOB_STATUS\n      WHERE JOB_NAME = 'RPT_ACCESS_LOG' \/* Jobname-Parameter *\/\n\t    AND STEP_NAME = 'ETL_START'\n      GROUP BY JOB_NAME, SID\n    ) start_job \/* Beginn *\/\n  ON d_job.dummy = start_job.dummy\n  LEFT OUTER JOIN\n    ( SELECT JOB_NAME, SID\n      FROM UTL_JOB_STATUS\n      WHERE JOB_NAME = 'RPT_ACCESS_LOG'  \/* Jobname-Parameter *\/\n\t    AND STEP_NAME in ('ETL_END', 'ETL_ERROR') \/* Stopstatus *\/\n      GROUP BY JOB_NAME, SID\n    ) end_job \/* Ende *\/\n  ON start_job.JOB_NAME = end_job.JOB_NAME\n     AND start_job.SID = end_job.SID<\/code><\/pre>\n<p>\nBesonderheiten der Tabelle:<\/p>\n<ul>\n<li>Der Beginn und das Ende des Datenverarbeitungsprozesses m\u00fcssen durch die Schritte ETL_START und ETL_END begleitet werden.<\/li>\n<li>Im Fehlerfall muss ein Schritt ETL_ERROR mit einer Beschreibung erstellt werden.<\/li>\n<li>Die Menge der verarbeiteten Daten sollte hervorgehoben werden, beispielsweise durch Sterne.<\/li>\n<li>Gleichzeitig kann die gleiche Prozedur mit dem Parameter force_restart=y gestartet werden; ohne diesen Parameter wird die Sitzungsnummer nur zur abgeschlossenen Prozedur ausgegeben. <\/li>\n<li>Im regul\u00e4ren Modus kann die gleiche Datenverarbeitungsprozedur nicht parallel gestartet werden.<\/li>\n<\/ul>\n<p>\nDie erforderlichen Operationen zur Bearbeitung der Tabelle sind die folgenden:<\/p>\n<ul>\n<li>Abrufen der Sitzungsnummer des gestarteten ETL-Verfahrens<\/li>\n<li>Einf\u00fcgen eines Logeintrags in die Tabelle<\/li>\n<li>Abrufen des letzten erfolgreichen Eintrags des ETL-Verfahrens<\/li>\n<\/ul>\n<p>\nIn Datenbanken wie Oracle oder Postgres k\u00f6nnen diese Operationen durch eingebaute Funktionen umgesetzt werden. F\u00fcr SQLite ist ein externes Mechanismus notwendig, und in diesem Fall <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\/blob\/master\/utl_func.php\">wurde es in PHP prototypisiert<\/a><\/noindex>.<\/p>\n<h4>Fazit<\/h4>\n<p>\nSomit spielen Fehlermeldungen in Datenverarbeitungswerkzeugen eine entscheidende Rolle. Dennoch sind sie f\u00fcr eine schnelle Ursachenfindung oft nicht optimal. Wenn die Anzahl der Verfahren die Hundert erreicht, wird das Monitoring der Prozesse zu einem komplexen Projekt.<\/p>\n<p>Der Artikel enth\u00e4lt ein Beispiel f\u00fcr eine m\u00f6gliche Probleml\u00f6sung in Form eines Prototyps. Der gesamte Prototyp eines kleinen Speichers ist auf GitLab verf\u00fcgbar. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\">SQLite PHP ETL-Dienstprogramme<\/a><\/noindex>.<br \/>\n<br \/>Quelle: <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 4.9.10 - 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\/de\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47\u00dcberwachung von ETL-Prozessen in einer kleinen Datenlagerung | ProHoster","description":"Viele nutzen spezialisierte Werkzeuge zur Erstellung von Extraktions-, Transformations- und Ladeprozessen (ETL) f\u00fcr relationale Datenbanken. Der Arbeitsprozess der Werkzeuge wird protokolliert, und Fehler werden erfasst. Im Falle eines Fehlers enth\u00e4lt das Protokoll Informationen dar\u00fcber, dass das Werkzeug die Aufgabe nicht ausf\u00fchren konnte und an welchen Modulen (h\u00e4ufig Java) der Prozess gestoppt wurde. In den letzten Zeilen kann man den Datenbankfehler finden, zum Beispiel einen Versto\u00df gegen...","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=37701"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37701\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/28295"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=37701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=37701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=37701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}