{"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 Data Warehouse","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Viele verwenden spezialisierte Werkzeuge zur Erstellung von Prozessen zur Extraktion, Transformation und Laden von Daten in relationale Datenbanken. Der Arbeitsprozess der Werkzeuge wird protokolliert, Fehler werden erfasst.<\/p>\n<p>Im Falle eines Fehlers enth\u00e4lt das Protokoll Informationen dar\u00fcber, dass es dem Werkzeug nicht gelungen ist, die Aufgabe auszuf\u00fchren, und welche Module (h\u00e4ufig java) wo gestoppt sind. In den letzten Zeilen kann man den Datenbankfehler finden, zum Beispiel einen Versto\u00df gegen den einzigartigen Schl\u00fcssel der Tabelle.<\/p>\n<p>Um die Rolle der Informationen \u00fcber ETL-Fehler zu beantworten, habe ich alle Probleme klassifiziert, die in den letzten zwei Jahren in einem nicht kleinen Data Warehouse aufgetreten sind. <\/p>\n<p><img decoding=\"async\" alt=\"\u00dcberwachung von ETL-Prozessen in einem kleinen Data Warehouse\" 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>Datenbankfehler umfassen Dinge wie unzureichenden Speicherplatz, unterbrochene Verbindungen, h\u00e4ngende Sitzungen usw.<\/p>\n<p>Logische Fehler umfassen Dinge wie Verst\u00f6\u00dfe gegen Tabellenschl\u00fcssel, ung\u00fcltige Objekte, fehlender Zugriff auf Objekte usw.<br \/>\nDer Scheduler kann zu einem falschen Zeitpunkt gestartet werden, h\u00e4ngen bleiben usw.<\/p>\n<p>Einfache Fehler erfordern nicht viel Zeit zur Behebung. Die meisten davon kann ein gutes ETL-System selbst bew\u00e4ltigen.<\/p>\n<p>Komplexe Fehler f\u00fchren dazu, dass man die Datenverarbeitungsverfahren \u00f6ffnen und \u00fcberpr\u00fcfen, die Datenquellen untersuchen muss. Dies f\u00fchrt oft zu Test\u00e4nderungen und Deployment.<\/p>\n<p>Somit h\u00e4ngen die H\u00e4lfte aller Probleme mit der Datenbank zusammen. 48 % aller Fehler sind einfache Fehler.<br \/>\nEin Drittel aller Probleme h\u00e4ngt mit \u00c4nderungen in der Logik oder dem Modell des Data Warehouses zusammen, mehr als die H\u00e4lfte dieser Fehler sind komplexe Fehler.<\/p>\n<p>Und weniger als ein Viertel aller Probleme h\u00e4ngt mit dem Aufgabenplaner zusammen, 18 % davon sind einfache Fehler.<\/p>\n<p>Insgesamt sind 22 % aller aufgetretenen Fehler komplex, ihre Behebung erfordert die gr\u00f6\u00dfte Aufmerksamkeit und Zeit. Sie treten ungef\u00e4hr einmal pro Woche auf. W\u00e4hrend einfache Fehler fast jeden Tag passieren.<\/p>\n<p>Offensichtlich ist die \u00dcberwachung von ETL-Prozessen dann effektiv, wenn im Protokoll der Fehlerort so genau wie m\u00f6glich angegeben ist und minimaler Aufwand erforderlich ist, um die Ursache des Problems zu finden.<\/p>\n<h4>Effektive \u00dcberwachung<\/h4>\n<p>\nWas wollte ich im Prozess der ETL-\u00dcberwachung sehen?<\/p>\n<p><img decoding=\"async\" alt=\"\u00dcberwachung von ETL-Prozessen in einem kleinen Data Warehouse\" src=\"\/wp-content\/uploads\/2019\/09\/03e6ebc3aef69137880a278f9891370a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nStartzeit - wann die Arbeit begann,<br \/>\nQuelle - Datenquelle,<br \/>\nSchicht - welche Ebene des Data Warehouses geladen wird,<br \/>\nETL Job Name \u2014 ein Ladeverfahren, das aus vielen kleinen Schritten besteht,<br \/>\nStep Number \u2014 die Nummer des ausgef\u00fchrten Schrittes,<br \/>\nAffected Rows \u2014 wie viele Daten bereits verarbeitet wurden,<br \/>\nDuration sec \u2014 wie lange es dauert,<br \/>\nStatus \u2014 ob alles gut ist oder nicht: OK, ERROR, RUNNING, HANGS<br \/>\nMessage \u2014 die letzte erfolgreiche Nachricht oder eine Fehlermeldung.<\/p>\n<p>Anhand des Status der Eintr\u00e4ge kann eine E-Mail an andere Teilnehmer gesendet werden. Wenn es keine Fehler gibt, ist die E-Mail nicht unbedingt erforderlich.<\/p>\n<p>Somit wird im Fehlerfall genau der Ort des Vorfalls angegeben.<\/p>\n<p>Manchmal kommt es vor, dass das \u00dcberwachungstool selbst nicht funktioniert. In diesem Fall besteht die M\u00f6glichkeit, direkt in der Datenbank die Sicht (View) aufzurufen, auf deren Grundlage der Bericht erstellt wurde.<\/p>\n<h4>\u00dcberwachungstabelle ETL<\/h4>\n<p>\nUm die \u00dcberwachung der ETL-Prozesse zu realisieren, gen\u00fcgt eine Tabelle und eine Sicht.<\/p>\n<p>Daf\u00fcr kann man zu <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462337\/\">seinem kleinen Lager zur\u00fcckkehren<\/a><\/noindex> und ein Prototyp in der SQLite-Datenbank erstellen.<\/p>\n<p><b class=\"spoiler_title\">DDL der Tabelle<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE UTL_JOB_STATUS (\n\n\/* Tabelle zum Protokollieren der Ausf\u00fchrung des Jobs. Wichtig, dass der Job die Schritte ETL_START und ETL_END oder ETL_ERROR hat *\/\n  UTL_JOB_STATUS_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n  SID               INTEGER NOT NULL DEFAULT -1, \/* Sitzungsidentifikator. Einzigartig f\u00fcr jeden Lauf des Jobs *\/\n  LOG_DT            INTEGER NOT NULL DEFAULT 0,  \/* Datum und Uhrzeit *\/\n  LOG_D             INTEGER NOT NULL DEFAULT 0,  \/* Datum *\/\n  JOB_NAME          TEXT NOT NULL DEFAULT 'N\/A', \/* Jobname wie JOB_STG2DM_GEO *\/\n  STEP_NAME         TEXT NOT NULL DEFAULT 'N\/A', \/* ETL_START, ... , ETL_END\/ETL_ERROR *\/\n  STEP_DESCR        TEXT,                        \/* Beschreibung der Aufgabe oder Fehlermeldung *\/\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 der Sicht\/Berichts<\/b><\/p>\n<pre><code class=\"sql\">CREATE VIEW IF NOT EXISTS UTL_JOB_STATUS_V\nAS \n\/* Inhalt: Protokoll der Paketausf\u00fchrungen der letzten 3 Monate. *\/\nWITH SRC AS (\n  SELECT LOG_D,\n    LOG_DT,\n    UTL_JOB_STATUS_ID,\n    SID,\n\tCASE WHEN INSTR(JOB_NAME, 'FTP') THEN '\u00dcBERTRAGUNG' \/* Datei\u00fcbertragung *\/\n\t     WHEN INSTR(JOB_NAME, 'STG') THEN 'STUFEN' \/* Stufe *\/\n\t     WHEN INSTR(JOB_NAME, 'CLS') THEN 'REINIGUNG' \/* Reinigung *\/\n\t     WHEN INSTR(JOB_NAME, 'DIM') THEN 'DIMENSION' \/* Dimension *\/\n\t     WHEN INSTR(JOB_NAME, 'FCT') THEN 'FAKT' \/* Fakt *\/\n\t\t WHEN INSTR(JOB_NAME, 'ETL') THEN 'STUFE-MART' \/* Datenmarkt *\/\n\t     WHEN INSTR(JOB_NAME, 'RPT') THEN 'BERICHT' \/* Bericht *\/\n\t     ELSE 'N\/A' END AS LAYER,\n\tCASE WHEN INSTR(JOB_NAME, 'ACCESS') THEN 'ZUGRIFFSPROTOKOLL' \/* Quelle *\/\n\t     WHEN INSTR(JOB_NAME, 'MASTER') THEN 'STAMMDATEN' \/* Quelle *\/\n\t     WHEN INSTR(JOB_NAME, 'AD-HOC') THEN 'AD-HOC' \/* Quelle *\/\n\t     ELSE 'N\/A' END AS SOURCE,\n    JOB_NAME,\n    STEP_NAME,\n    CASE WHEN STEP_NAME='ETL_START' THEN 1 ELSE 0 END AS START_FLAG,\n    CASE WHEN STEP_NAME='ETL_END' THEN 1 ELSE 0 END AS END_FLAG,\n    CASE WHEN STEP_NAME='ETL_ERROR' THEN 1 ELSE 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  FROM UTL_JOB_STATUS\n  WHERE datetime(LOG_D, 'unixepoch') &gt;= date('now', 'start of month', '-3 month')\n)\nSELECT JB.SID,\n  JB.MIN_LOG_DT AS START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) AS LOG_DT,\n  JB.SOURCE,\n  JB.LAYER,\n  JB.JOB_NAME,\n  CASE\n  WHEN JB.ERROR_FLAG = 1 THEN 'FEHLER'\n  WHEN JB.ERROR_FLAG = 0 AND JB.END_FLAG = 0 AND strftime('%s','now') - JB.MIN_LOG_DT &gt; 0.5*60*60 THEN 'H\u00c4NGT' \/* eine halbe Stunde *\/\n  WHEN JB.ERROR_FLAG = 0 AND JB.END_FLAG = 0 THEN 'L\u00c4UFT'\n  ELSE 'OK'\n  END AS STATUS,\n  ERR.STEP_LOG     AS STEP_LOG,\n  JB.CNT           AS STEP_CNT,\n  JB.AFFECTED_ROWS AS AFFECTED_ROWS,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) AS JOB_START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MAX_LOG_DT, 'unixepoch')) AS JOB_END_DT,\n  JB.MAX_LOG_DT - JB.MIN_LOG_DT AS JOB_DURATION_SEC\nFROM\n  ( SELECT SID, SOURCE, LAYER, JOB_NAME,\n           MAX(UTL_JOB_STATUS_ID) AS UTL_JOB_STATUS_ID,\n           MAX(START_FLAG)       AS START_FLAG,\n           MAX(END_FLAG)         AS END_FLAG,\n           MAX(ERROR_FLAG)       AS ERROR_FLAG,\n           MIN(LOG_DT)           AS MIN_LOG_DT,\n           MAX(LOG_DT)           AS MAX_LOG_DT,\n           SUM(1)                AS CNT,\n           SUM(IFNULL(AFFECTED_ROWS, 0)) AS AFFECTED_ROWS\n    FROM SRC\n    GROUP BY SID, SOURCE, LAYER, JOB_NAME\n  ) JB,\n  ( SELECT UTL_JOB_STATUS_ID, SID, JOB_NAME, STEP_LOG\n    FROM SRC\n    WHERE 1 = 1\n  ) ERR\nWHERE 1 = 1\n  AND JB.SID = ERR.SID\n  AND JB.JOB_NAME = ERR.JOB_NAME\n  AND JB.UTL_JOB_STATUS_ID = ERR.UTL_JOB_STATUS_ID\nORDER BY 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, eine neue Sitzungsnummer zu erhalten<\/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 \/* existierender Job abgeschlossen *\/\n\t    AND NOT ( 'y' = 'n' ) \/* Zwangsneustart PARAMETER *\/\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 \/* beginnt *\/\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') \/* Stoppstatus *\/\n      GROUP BY JOB_NAME, SID\n    ) end_job \/* endet *\/\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 von den Schritten ETL_START und ETL_END begleitet werden.<\/li>\n<li>Im Falle eines Fehlers muss ein Schritt ETL_ERROR mit dessen Beschreibung erstellt werden.<\/li>\n<li>Die Anzahl der verarbeiteten Daten sollte hervorgehoben werden, zum Beispiel mit Sternchen.<\/li>\n<li>Gleichzeitig kann derselbe Prozess mit dem Parameter force_restart=y gestartet werden, ohne den wird die Sitzungsnummer nur f\u00fcr abgeschlossene Prozesse ausgegeben. <\/li>\n<li>Im regul\u00e4ren Modus kann derselbe Datenverarbeitungsprozess nicht parallel gestartet werden.<\/li>\n<\/ul>\n<p>\nDie notwendigen Operationen beim Arbeiten mit der Tabelle sind folgende:<\/p>\n<ul>\n<li>Abruf der Sitzungsnummer des gestarteten ETL-Prozesses<\/li>\n<li>Einf\u00fcgen eines Logeintrags in die Tabelle<\/li>\n<li>Abruf des letzten erfolgreichen Eintrags des ETL-Prozesses<\/li>\n<\/ul>\n<p>\nIn Datenbanken wie Oracle oder Postgres k\u00f6nnen diese Operationen mit eingebauten Funktionen realisiert werden. F\u00fcr SQLite ist ein externes Mechanismus erforderlich, der in diesem Fall <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\/blob\/master\/utl_func.php\">in PHP prototypisiert wurde.<\/a><\/noindex>.<\/p>\n<h4>Ausgabe<\/h4>\n<p>\nSomit spielen Fehlermeldungen in Datenverarbeitungstools eine \u00fcberaus wichtige Rolle. Doch f\u00fcr eine schnelle Ursachenfindung sind sie schwer als optimal zu bezeichnen. Wenn die Anzahl der Prozesse nahe der Hundert liegt, wird das Monitoring zu einem komplexen Projekt.<\/p>\n<p>Im Artikel wird ein Beispiel f\u00fcr eine m\u00f6gliche L\u00f6sung des Problems in Form eines Prototyps vorgestellt. Der gesamte Prototyp eines kleinen Speichers ist in GitLab verf\u00fcgbar. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\">SQLite PHP ETL Utilities<\/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 5.0.1.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.\" \/>\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) 5.0.1.1\" \/>\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.\" \/>\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 einem kleinen Datenspeicher | ProHoster","description":"Viele nutzen spezialisierte Werkzeuge zur Erstellung von Prozessen f\u00fcr das Extrahieren, Transformieren und Laden von Daten in relationale Datenbanken.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}