{"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\/es\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","title":{"rendered":"Monitoreo de procesos ETL en un peque\u00f1o almac\u00e9n de datos","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Muchos utilizan herramientas especializadas para crear procedimientos de extracci\u00f3n, transformaci\u00f3n y carga de datos en bases de datos relacionales. El proceso de trabajo de las herramientas se registra y los errores se documentan.<\/p>\n<p>En caso de error, el registro contiene informaci\u00f3n sobre qu\u00e9 tarea el instrumento no pudo ejecutar y en qu\u00e9 m\u00f3dulos (frecuentemente es Java) se detuvieron. En las \u00faltimas l\u00edneas se puede encontrar el error de la base de datos, como una violaci\u00f3n de la clave \u00fanica de la tabla.<\/p>\n<p>Para responder a la pregunta sobre qu\u00e9 papel juega la informaci\u00f3n de errores de ETL, clasifiqu\u00e9 todos los problemas que ocurrieron en los \u00faltimos dos a\u00f1os en un gran almac\u00e9n de datos. <\/p>\n<p><img decoding=\"async\" alt=\"Monitoreo de procesos ETL en un peque\u00f1o almac\u00e9n de datos\" 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>Los errores de la base de datos incluyen aquellos como falta de espacio, desconexi\u00f3n, sesi\u00f3n bloqueada, etc.<\/p>\n<p>Los errores l\u00f3gicos incluyen aquellos como violaciones de claves de tabla, objetos no v\u00e1lidos, ausencia de acceso a objetos, etc.<br \/>\nEl programador puede no ejecutarse a tiempo, puede bloquearse, etc.<\/p>\n<p>Los errores simples no requieren mucho tiempo para corregirse. La mayor\u00eda de ellos pueden ser manejados por un buen ETL de forma aut\u00f3noma.<\/p>\n<p>Los errores complejos requieren abrir y revisar procedimientos de trabajo con datos, investigar fuentes de datos. A menudo llevan a la necesidad de probar cambios y despliegues.<\/p>\n<p>As\u00ed que, la mitad de todos los problemas est\u00e1n relacionados con la base de datos. El 48% de todos los errores son errores simples.<br \/>\nUn tercio de todos los problemas est\u00e1 relacionado con el cambio de l\u00f3gica o modelo del almac\u00e9n, m\u00e1s de la mitad de estos errores son complejos.<\/p>\n<p>Y menos de una cuarta parte de todos los problemas est\u00e1n relacionados con el programador de tareas, de los cuales el 18% son errores simples.<\/p>\n<p>En general, el 22% de todos los errores ocurridos son complejos, su correcci\u00f3n requiere la mayor atenci\u00f3n y tiempo. Ocurren aproximadamente una vez a la semana, mientras que los errores simples suceden casi todos los d\u00edas.<\/p>\n<p>Es evidente que el monitoreo de los procesos ETL ser\u00e1 efectivo cuando el registro indique con m\u00e1xima precisi\u00f3n el lugar del error y se requiera el m\u00ednimo tiempo para localizar la fuente del problema.<\/p>\n<h4>Monitoreo efectivo<\/h4>\n<p>\n\u00bfQu\u00e9 me gustar\u00eda ver en el proceso de monitoreo de ETL?<\/p>\n<p><img decoding=\"async\" alt=\"Monitoreo de procesos ETL en un peque\u00f1o almac\u00e9n de datos\" src=\"\/wp-content\/uploads\/2019\/09\/03e6ebc3aef69137880a278f9891370a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nInicio en \u2014 cu\u00e1ndo comenz\u00f3 a trabajar,<br \/>\nFuente \u2014 fuente de datos,<br \/>\nCapa \u2014 qu\u00e9 nivel del almac\u00e9n se est\u00e1 cargando,<br \/>\nNombre del trabajo ETL \u2014 procedimiento de carga que consiste en m\u00faltiples pasos peque\u00f1os,<br \/>\nN\u00famero de paso \u2014 n\u00famero del paso que se est\u00e1 llevando a cabo,<br \/>\nFilas afectadas \u2014 cu\u00e1ntos datos ya se han procesado.<br \/>\nDuraci\u00f3n en segundos \u2014 cu\u00e1nto tiempo ha estado en ejecuci\u00f3n.<br \/>\nEstado \u2014 si todo est\u00e1 bien o no: OK, ERROR, EN EJECUCI\u00d3N, BLOQUEADO.<br \/>\nMensaje \u2014 el \u00faltimo mensaje exitoso o la descripci\u00f3n del error.<\/p>\n<p>Con base en el estado de los registros, se puede enviar un correo electr\u00f3nico a otros participantes. Si no hay errores, el correo no es necesario.<\/p>\n<p>As\u00ed, en caso de error, se indica claramente el lugar del incidente.<\/p>\n<p>A veces ocurre que la propia herramienta de monitoreo no funciona. En tal caso, se puede llamar directamente en la base de datos a la vista utilizada para generar el informe.<\/p>\n<h4>Tabla de monitoreo ETL.<\/h4>\n<p>\nPara implementar el monitoreo de procesos ETL, se necesita solo una tabla y una vista.<\/p>\n<p>Para ello, se puede volver a <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462337\/\">su peque\u00f1o almacenamiento.<\/a><\/noindex> y crear un prototipo en la base de datos SQLite.<\/p>\n<p><b class=\"spoiler_title\">DDL de la tabla.<\/b><\/p>\n<pre><code class=\"sql\">CREATE TABLE UTL_JOB_STATUS (\n\/* Tabla para registrar el log de ejecuci\u00f3n del trabajo. Es importante que el trabajo tenga los pasos ETL_START y ETL_END o ETL_ERROR *\/\n  UTL_JOB_STATUS_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n  SID               INTEGER NOT NULL DEFAULT -1, \/* Identificador de sesi\u00f3n. \u00danico para cada ejecuci\u00f3n del trabajo *\/\n  LOG_DT            INTEGER NOT NULL DEFAULT 0,  \/* Fecha y hora *\/\n  LOG_D             INTEGER NOT NULL DEFAULT 0,  \/* Fecha *\/\n  JOB_NAME          TEXT NOT NULL DEFAULT 'N\/A', \/* Nombre del trabajo como JOB_STG2DM_GEO *\/\n  STEP_NAME         TEXT NOT NULL DEFAULT 'N\/A', \/* ETL_START, ..., ETL_END\/ETL_ERROR *\/\n  STEP_DESCR        TEXT,                        \/* Descripci\u00f3n de la tarea o mensaje de error *\/\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 de la vista\/informe.<\/b><\/p>\n<pre><code class=\"sql\">CREAR VISTA SI NO EXISTE UTL_JOB_STATUS_V\nCOMO \n\/* Contenido: Registro de Ejecuci\u00f3n del Paquete para los \u00faltimos 3 Meses. *\/\nCON SRC COMO (\n  SELECCIONAR LOG_D,\n    LOG_DT,\n    UTL_JOB_STATUS_ID,\n    SID,\n\tCASO CUANDO INSTR(JOB_NAME, 'FTP') ENTONCES 'TRANSFERENCIA' \/* transferencia de archivos *\/\n\t     CUANDO INSTR(JOB_NAME, 'STG') ENTONCES 'ETAPA' \/* etapa *\/\n\t     CUANDO INSTR(JOB_NAME, 'CLS') ENTONCES 'LIMPIEZA' \/* limpieza *\/\n\t     CUANDO INSTR(JOB_NAME, 'DIM') ENTONCES 'DIMENSI\u00d3N' \/* dimensi\u00f3n *\/\n\t     CUANDO INSTR(JOB_NAME, 'FCT') ENTONCES 'HECHO' \/* hecho *\/\n\t\t CUANDO INSTR(JOB_NAME, 'ETL') ENTONCES 'ETAPA-MART' \/* data mart *\/\n\t     CUANDO INSTR(JOB_NAME, 'RPT') ENTONCES 'INFORME' \/* informe *\/\n\t     OTRA 'N\/A' FIN COMO CAPA,\n\tCASO CUANDO INSTR(JOB_NAME, 'ACCESS') ENTONCES 'REGISTRO DE ACCESO' \/* fuente *\/\n\t     CUANDO INSTR(JOB_NAME, 'MASTER') ENTONCES 'DATOS MAESTROS' \/* fuente *\/\n\t     CUANDO INSTR(JOB_NAME, 'AD-HOC') ENTONCES 'AD-HOC' \/* fuente *\/\n\t     OTRA 'N\/A' FIN COMO FUENTE,\n    JOB_NAME,\n    STEP_NAME,\n    CASO CUANDO STEP_NAME='ETL_START' ENTONCES 1 OTRA 0 FIN COMO START_FLAG,\n    CASO CUANDO STEP_NAME='ETL_END' ENTONCES 1 OTRA 0 FIN COMO END_FLAG,\n    CASO CUANDO STEP_NAME='ETL_ERROR' ENTONCES 1 OTRA 0 FIN COMO ERROR_FLAG,\n    STEP_NAME || ' : ' || STEP_DESCR COMO STEP_LOG,\n\tSUBSTR(SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), 1, INSTR(SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), '***')-2 ) COMO AFFECTED_ROWS\n  DE UTL_JOB_STATUS\n  DONDE datetime(LOG_D, 'unixepoch') &gt;= date('now', 'start of month', '-3 month')\n)\nSELECCIONAR JB.SID,\n  JB.MIN_LOG_DT COMO START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) COMO LOG_DT,\n  JB.SOURCE,\n  JB.LAYER,\n  JB.JOB_NAME,\n  CASO\n  CUANDO JB.ERROR_FLAG = 1 ENTONCES 'ERROR'\n  CUANDO JB.ERROR_FLAG = 0 Y JB.END_FLAG = 0 Y strftime('%s','ahora') - JB.MIN_LOG_DT &gt; 0.5*60*60 ENTONCES 'EN ESPERA' \/* media hora *\/\n  CUANDO JB.ERROR_FLAG = 0 Y JB.END_FLAG = 0 ENTONCES 'EN EJECUCI\u00d3N'\n  OTRA 'OK'\n  FIN COMO ESTADO,\n  ERR.STEP_LOG     COMO STEP_LOG,\n  JB.CNT           COMO STEP_CNT,\n  JB.AFFECTED_ROWS COMO AFFECTED_ROWS,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) COMO JOB_START_DT,\n  strftime('%d.%m.%Y %H:%M', datetime(JB.MAX_LOG_DT, 'unixepoch')) COMO JOB_END_DT,\n  JB.MAX_LOG_DT - JB.MIN_LOG_DT COMO JOB_DURATION_SEC\nDE\n  ( SELECCIONAR SID, SOURCE, LAYER, JOB_NAME,\n           MAX(UTL_JOB_STATUS_ID) COMO UTL_JOB_STATUS_ID,\n           MAX(START_FLAG)       COMO START_FLAG,\n           MAX(END_FLAG)         COMO END_FLAG,\n           MAX(ERROR_FLAG)       COMO ERROR_FLAG,\n           MIN(LOG_DT)           COMO MIN_LOG_DT,\n           MAX(LOG_DT)           COMO MAX_LOG_DT,\n           SUM(1)                COMO CNT,\n           SUM(IFNULL(AFFECTED_ROWS, 0)) COMO AFFECTED_ROWS\n    DE SRC\n    GROUP BY SID, SOURCE, LAYER, JOB_NAME\n  ) JB,\n  ( SELECCIONAR UTL_JOB_STATUS_ID, SID, JOB_NAME, STEP_LOG\n    DE SRC\n    DONDE 1 = 1\n  ) ERR\nDONDE 1 = 1\n  Y JB.SID = ERR.SID\n  Y JB.JOB_NAME = ERR.JOB_NAME\n  Y 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\">Verificaci\u00f3n SQL de la posibilidad de obtener un nuevo n\u00famero de sesi\u00f3n<\/b><\/p>\n<pre><code class=\"sql\">SELECCIONAR SUMA (\n  CASO CUANDO start_job.JOB_NAME NO ES NULO Y end_job.JOB_NAME ES NULO \/* trabajo existente finalizado *\/\n\t    Y NO ( 'y' = 'n' ) \/* reinicio forzado PAR\u00c1METRO *\/\n       ENTONCES 1 OTRA 0\n  FIN ) COMO IS_RUNNING\n  DE\n    ( SELECCIONAR 1 COMO dummy DE UTL_JOB_STATUS DONDE sid = -1) d_job\n  UNIR EXTERNO A LA IZQUIERDA\n    ( SELECCIONAR JOB_NAME, SID, 1 COMO dummy\n      DE UTL_JOB_STATUS\n      DONDE JOB_NAME = 'RPT_ACCESS_LOG' \/* nombre del trabajo PAR\u00c1METRO *\/\n\t    Y STEP_NAME = 'ETL_START'\n      GROUP BY JOB_NAME, SID\n    ) start_job \/* inicios *\/\n  EN d_job.dummy = start_job.dummy\n  UNIR EXTERNO A LA IZQUIERDA\n    ( SELECCIONAR JOB_NAME, SID\n      DE UTL_JOB_STATUS\n      DONDE JOB_NAME = 'RPT_ACCESS_LOG'  \/* nombre del trabajo PAR\u00c1METRO *\/\n\t    Y STEP_NAME en ('ETL_END', 'ETL_ERROR') \/* estado de parada *\/\n      GROUP BY JOB_NAME, SID\n    ) end_job \/* finales *\/\n  EN start_job.JOB_NAME = end_job.JOB_NAME\n     Y start_job.SID = end_job.SID<\/code><\/pre>\n<p>\nCaracter\u00edsticas de la tabla:<\/p>\n<ul>\n<li>El inicio y el final del proceso de tratamiento de datos deben ir acompa\u00f1ados de los pasos ETL_START y ETL_END<\/li>\n<li>En caso de error, debe crearse un paso ETL_ERROR con su descripci\u00f3n<\/li>\n<li>La cantidad de datos procesados debe resaltarse, por ejemplo, con asteriscos<\/li>\n<li>Simult\u00e1neamente, se puede iniciar el mismo procedimiento con el par\u00e1metro force_restart=y; sin \u00e9l, el n\u00famero de sesi\u00f3n se asigna solo al procedimiento que ha finalizado <\/li>\n<li>En modo normal, no se puede ejecutar en paralelo el mismo procedimiento de tratamiento de datos<\/li>\n<\/ul>\n<p>\nLas operaciones necesarias para trabajar con la tabla son las siguientes:<\/p>\n<ul>\n<li>Obtenci\u00f3n del n\u00famero de sesi\u00f3n del procedimiento ETL que se est\u00e1 ejecutando<\/li>\n<li>Inserci\u00f3n de un registro de log en la tabla<\/li>\n<li>Obteniendo el \u00faltimo registro exitoso del procedimiento ETL<\/li>\n<\/ul>\n<p>\nEn bases de datos como Oracle o Postgres, estas operaciones se pueden realizar mediante funciones integradas. Para sqlite, se requiere un mecanismo externo y en este caso est\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\/blob\/master\/utl_func.php\">prototipado en PHP<\/a><\/noindex>.<\/p>\n<h4>Salida<\/h4>\n<p>\nAs\u00ed, los mensajes de error en las herramientas de tratamiento de datos juegan un papel mega-importante. Pero dif\u00edciles de considerar \u00f3ptimos para una b\u00fasqueda r\u00e1pida de la causa del problema. Cuando la cantidad de procedimientos se aproxima al centenar, el monitoreo de procesos se convierte en un proyecto complicado.<\/p>\n<p>El art\u00edculo proporciona un ejemplo de una posible soluci\u00f3n al problema en forma de prototipo. Todo el prototipo de un peque\u00f1o almac\u00e9n est\u00e1 disponible en gitlab <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/marchanka\/sqlite-php-etl-utilities\">Utilidades ETL PHP para SQLite<\/a><\/noindex>.<br \/>\n<br \/>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Monitoreo de procesos ETL en un peque\u00f1o almac\u00e9n de datos | ProHoster","description":"Muchos utilizan herramientas especializadas para crear procedimientos de extracci\u00f3n, transformaci\u00f3n y carga de datos en bases de datos relacionales.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/monitoring-etl-protsessov-v-malenkom-hranilishhe-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/37701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=37701"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/37701\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/28295"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=37701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=37701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=37701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}