<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Glosario on Ivan Luminaria</title><link>https://ivanluminaria.com/es/glossary/</link><description>Recent content in Glosario on Ivan Luminaria</description><generator>Hugo</generator><language>es</language><atom:link href="https://ivanluminaria.com/es/glossary/index.xml" rel="self" type="application/rss+xml"/><item><title>Additive Measure</title><link>https://ivanluminaria.com/es/glossary/additive-measure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/additive-measure/</guid><description>&lt;p&gt;Una &lt;strong&gt;additive measure&lt;/strong&gt; (medida aditiva) es un valor numérico en una fact table que puede sumarse legítimamente a lo largo de cualquier dimensión: por cliente, por producto, por período, por zona.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Las medidas en las fact tables se clasifican en tres categorías:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aditivas&lt;/strong&gt;: pueden sumarse a lo largo de todas las dimensiones (ej. importe de venta, cantidad, coste). Son las más comunes y las más útiles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semi-aditivas&lt;/strong&gt;: pueden sumarse a lo largo de algunas dimensiones pero no a lo largo del tiempo (ej. saldo de una cuenta: sumable por sucursal, no por mes)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No aditivas&lt;/strong&gt;: no pueden sumarse de ninguna manera (ej. porcentajes, ratios, promedios precalculados)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="para-qué-sirve" class="relative group"&gt;Para qué sirve &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#para-qu%c3%a9-sirve" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Las medidas aditivas son el corazón de toda fact table porque permiten las agregaciones que el negocio requiere: totales por período, por región, por producto. La regla clave: almacenar siempre los valores atómicos (el detalle), nunca los agregados. De un importe por línea de factura puedes obtener el total mensual; del total mensual no puedes reconstruir las líneas individuales.&lt;/p&gt;</description></item><item><title>AI Manager</title><link>https://ivanluminaria.com/es/glossary/ai-manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/ai-manager/</guid><description>&lt;p&gt;El &lt;strong&gt;AI Manager&lt;/strong&gt; es el rol profesional que gobierna la introducción y el uso de la inteligencia artificial dentro de un proyecto u organización. No es quien usa la IA — es quien decide dónde, cómo y con qué precauciones integrarla en las arquitecturas existentes.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El AI Manager responde a preguntas que ningún modelo puede responder: ¿dónde la IA genera valor real y dónde genera solo entusiasmo? ¿Cuánto cuesta mantenerla, no solo implementarla? ¿Qué pasa cuando el modelo se equivoca? ¿Cómo se integra con las arquitecturas mission-critical sin comprometer su estabilidad?&lt;/p&gt;</description></item><item><title>ANALYZE</title><link>https://ivanluminaria.com/es/glossary/postgresql-analyze/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/postgresql-analyze/</guid><description>&lt;p&gt;&lt;strong&gt;ANALYZE&lt;/strong&gt; es el comando PostgreSQL que recopila estadisticas sobre la distribucion de los datos en las tablas y las almacena en el catalogo &lt;code&gt;pg_statistic&lt;/code&gt; (legible a traves de la vista &lt;code&gt;pg_stats&lt;/code&gt;). El optimizer usa estas estadisticas para estimar la cardinalidad — cuantas filas devolvera cada operacion — y elegir el plan de ejecucion mas eficiente.&lt;/p&gt;
&lt;h2 id="que-recopila" class="relative group"&gt;Que recopila &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#que-recopila" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Las estadisticas recopiladas por ANALYZE incluyen:&lt;/p&gt;</description></item><item><title>Anonymous User</title><link>https://ivanluminaria.com/es/glossary/anonymous-user/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/anonymous-user/</guid><description>&lt;p&gt;El &lt;strong&gt;Anonymous User&lt;/strong&gt; (usuario anónimo) es una cuenta MySQL/MariaDB con username vacío (&lt;code&gt;''@'localhost'&lt;/code&gt;) que se crea automáticamente durante la instalación. No tiene nombre y frecuentemente no tiene contraseña.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando un usuario se conecta, MySQL busca la correspondencia más específica en la tabla &lt;code&gt;mysql.user&lt;/code&gt;. El usuario anónimo &lt;code&gt;''@'localhost'&lt;/code&gt; es más específico que &lt;code&gt;'mario'@'%'&lt;/code&gt; para una conexión desde localhost, porque &lt;code&gt;'localhost'&lt;/code&gt; gana sobre &lt;code&gt;'%'&lt;/code&gt; en la jerarquía de especificidad. En consecuencia, Mario que se conecta desde local es autenticado como usuario anónimo y pierde todos sus privilegios.&lt;/p&gt;</description></item><item><title>ASH</title><link>https://ivanluminaria.com/es/glossary/ash/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/ash/</guid><description>&lt;p&gt;&lt;strong&gt;ASH&lt;/strong&gt; (Active Session History) es un componente de Oracle Database que muestrea el estado de cada sesion activa una vez por segundo y almacena los datos en un buffer circular en memoria (vista &lt;code&gt;V$ACTIVE_SESSION_HISTORY&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada segundo Oracle registra para cada sesion activa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL en ejecucion (&lt;code&gt;SQL_ID&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Wait event actual&lt;/li&gt;
&lt;li&gt;Programa y modulo llamante&lt;/li&gt;
&lt;li&gt;Plan de ejecucion utilizado (&lt;code&gt;SQL_PLAN_HASH_VALUE&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los datos mas antiguos se descargan automaticamente en las tablas AWR (&lt;code&gt;DBA_HIST_ACTIVE_SESS_HISTORY&lt;/code&gt;) y se conservan durante el periodo configurado.&lt;/p&gt;</description></item><item><title>Authentication Plugin</title><link>https://ivanluminaria.com/es/glossary/authentication-plugin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/authentication-plugin/</guid><description>&lt;p&gt;Un &lt;strong&gt;Authentication Plugin&lt;/strong&gt; es el módulo que MySQL o MariaDB usa para verificar las credenciales de un usuario al momento de la conexión. Cada usuario en el sistema está asociado a un plugin específico que determina cómo la contraseña es hasheada, transmitida y verificada.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Los plugins principales son: &lt;code&gt;mysql_native_password&lt;/code&gt; (default en MySQL 5.7 y MariaDB), que usa un hash SHA1 doble; &lt;code&gt;caching_sha2_password&lt;/code&gt; (default en MySQL 8.0+), que usa SHA-256 con caching para mejorar seguridad y rendimiento. Cuando un cliente se conecta, debe soportar el plugin del usuario al que intenta autenticarse.&lt;/p&gt;</description></item><item><title>Autovacuum</title><link>https://ivanluminaria.com/es/glossary/autovacuum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/autovacuum/</guid><description>&lt;p&gt;El &lt;strong&gt;Autovacuum&lt;/strong&gt; es un daemon de PostgreSQL que ejecuta automáticamente VACUUM y ANALYZE en las tablas cuando el número de dead tuples supera un umbral calculado como: &lt;code&gt;threshold + scale_factor × n_live_tup&lt;/code&gt;. Con los valores por defecto (threshold=50, scale_factor=0.2), en una tabla con 10 millones de filas se activa tras 2 millones de dead tuples.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El daemon comprueba periódicamente &lt;code&gt;pg_stat_user_tables&lt;/code&gt; y lanza un worker por cada tabla que supera el umbral. El número máximo de workers simultáneos se controla con &lt;code&gt;autovacuum_max_workers&lt;/code&gt; (por defecto 3). El parámetro &lt;code&gt;autovacuum_vacuum_cost_delay&lt;/code&gt; controla cuánto se autofrena el vacuum para no sobrecargar el I/O.&lt;/p&gt;</description></item><item><title>AWR</title><link>https://ivanluminaria.com/es/glossary/awr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/awr/</guid><description>&lt;p&gt;&lt;strong&gt;AWR&lt;/strong&gt; (Automatic Workload Repository) es un componente integrado en Oracle Database que recopila automaticamente estadisticas de rendimiento del sistema a intervalos regulares (por defecto cada 60 minutos) y las conserva durante un periodo configurable.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;AWR captura snapshots periodicos que incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estadisticas de sesiones y wait events&lt;/li&gt;
&lt;li&gt;Metricas SQL (top SQL por tiempo de ejecucion, I/O, CPU)&lt;/li&gt;
&lt;li&gt;Estadisticas de estructuras de memoria (SGA, PGA)&lt;/li&gt;
&lt;li&gt;Estadisticas I/O por datafile y tablespace&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="para-que-sirve" class="relative group"&gt;Para que sirve &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#para-que-sirve" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El informe AWR es la herramienta principal para diagnosticar problemas de rendimiento en Oracle. Comparando dos snapshots se pueden identificar:&lt;/p&gt;</description></item><item><title>B-Tree</title><link>https://ivanluminaria.com/es/glossary/b-tree/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/b-tree/</guid><description>&lt;p&gt;El &lt;strong&gt;B-Tree&lt;/strong&gt; (Balanced Tree) es la estructura de datos más común para índices en bases de datos relacionales y es el tipo de índice predeterminado en PostgreSQL, MySQL y Oracle. Mantiene los datos ordenados en una estructura de árbol balanceado que garantiza tiempos de búsqueda logarítmicos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un B-Tree organiza las claves en nodos ordenados, con cada nodo conteniendo punteros a nodos hijos. La búsqueda parte de la raíz y desciende hacia las hojas, dividiendo a la mitad el espacio de búsqueda en cada nivel. Para una tabla de 6 millones de filas, un B-Tree requiere típicamente 3-4 niveles de profundidad, es decir 3-4 lecturas de página para encontrar un valor.&lt;/p&gt;</description></item><item><title>Bicicleta Plegable</title><link>https://ivanluminaria.com/es/glossary/bicicletta-pieghevole/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/bicicletta-pieghevole/</guid><description>&lt;p&gt;Una &lt;strong&gt;Bicicleta Plegable&lt;/strong&gt; es una bicicleta diseñada para plegarse en dimensiones compactas (típicamente 60×55×25 cm) en pocos segundos, convirtiéndose en transportable como equipaje. La Brompton es el modelo más conocido, con mecanismo de plegado en 10-20 segundos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un sistema de bisagras y enganches rápidos permite plegar cuadro, manillar y pedales en un paquete compacto. Una vez plegada, se lleva a la oficina bajo el escritorio, se sube al metro o se mete en el maletero. En la versión eléctrica, combina las ventajas del pedaleo asistido con la portabilidad total.&lt;/p&gt;</description></item><item><title>Binary log</title><link>https://ivanluminaria.com/es/glossary/binary-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/binary-log/</guid><description>&lt;p&gt;El &lt;strong&gt;binary log&lt;/strong&gt; (o binlog) es un registro secuencial en formato binario donde MySQL escribe todos los eventos que modifican datos: INSERT, UPDATE, DELETE y operaciones DDL. Los archivos se numeran progresivamente (&lt;code&gt;mysql-bin.000001&lt;/code&gt;, &lt;code&gt;mysql-bin.000002&lt;/code&gt;, etc.) y se gestionan mediante un archivo índice.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Desde MySQL 8.0 el binary log está habilitado por defecto mediante el parámetro &lt;code&gt;log_bin&lt;/code&gt;. MySQL crea un nuevo archivo binlog cuando el servidor se inicia, cuando el archivo actual alcanza &lt;code&gt;max_binlog_size&lt;/code&gt;, o cuando se ejecuta &lt;code&gt;FLUSH BINARY LOGS&lt;/code&gt;. Soporta tres formatos de registro: STATEMENT (registra las instrucciones SQL), ROW (registra los cambios fila por fila) y MIXED (elección automática).&lt;/p&gt;</description></item><item><title>Bloat</title><link>https://ivanluminaria.com/es/glossary/bloat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/bloat/</guid><description>&lt;p&gt;El &lt;strong&gt;Bloat&lt;/strong&gt; es la acumulación de espacio muerto dentro de una tabla o índice PostgreSQL, causada por dead tuples aún no eliminados por VACUUM. Una tabla con un 50% de bloat ocupa el doble del espacio necesario y obliga a los escaneos secuenciales a leer el doble de páginas.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El bloat se mide comparando el tamaño efectivo de la tabla con el tamaño esperado basado en las filas vivas. La extensión &lt;code&gt;pgstattuple&lt;/code&gt; proporciona el campo &lt;code&gt;dead_tuple_percent&lt;/code&gt;. Un bloat por encima del 20-30% es una señal de alarma; por encima del 50% es una emergencia.&lt;/p&gt;</description></item><item><title>Branch</title><link>https://ivanluminaria.com/es/glossary/branch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/branch/</guid><description>&lt;p&gt;Un &lt;strong&gt;Branch&lt;/strong&gt; (rama) es una línea de desarrollo independiente en un repositorio Git. Cada branch contiene una copia del código sobre la que se puede trabajar sin afectar el branch principal (main) o el trabajo de otros desarrolladores.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando un desarrollador crea un branch (ej. &lt;code&gt;fix/issue-234-error-calculo&lt;/code&gt;), Git crea un puntero a la versión actual del código. Desde ese momento, los cambios hechos en el branch quedan aislados. Al terminar el trabajo, los cambios se proponen al equipo mediante Pull Request y, tras la aprobación, se unen (merge) al branch principal.&lt;/p&gt;</description></item><item><title>Brompton</title><link>https://ivanluminaria.com/es/glossary/brompton/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/brompton/</guid><description>&lt;p&gt;La &lt;strong&gt;Brompton&lt;/strong&gt; es una bicicleta plegable fabricada en Londres desde 1975, considerada la referencia mundial en su categoría. Se pliega en 10-20 segundos alcanzando dimensiones de aproximadamente 58×56×27 cm — lo suficientemente compacta para caber bajo un escritorio o en el maletero de un utilitario.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El mecanismo patentado permite plegar la bici en tres movimientos: cuadro, manillar y sillín. En la versión eléctrica (Brompton Electric), un motor en el buje delantero proporciona pedaleo asistido hasta 25 km/h con una autonomía de 40-70 km. La batería es extraíble y se carga en 4 horas.&lt;/p&gt;</description></item><item><title>BYOL</title><link>https://ivanluminaria.com/es/glossary/byol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/byol/</guid><description>&lt;p&gt;&lt;strong&gt;BYOL&lt;/strong&gt; (Bring Your Own License) es un programa de Oracle que permite a las empresas transferir las licencias de software adquiridas para la infraestructura on-premises a Oracle Cloud Infrastructure (OCI), sin necesidad de comprar nuevas licencias cloud.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando una empresa ya tiene licencias Oracle — tipicamente Enterprise Edition con opciones como RAC, Data Guard o Partitioning — puede &amp;ldquo;llevarlas consigo&amp;rdquo; en la migracion a OCI. El contrato de soporte (Software Update License &amp;amp; Support) se mantiene, y las licencias se asocian a los recursos cloud en lugar de a los servidores fisicos.&lt;/p&gt;</description></item><item><title>Carbon Footprint</title><link>https://ivanluminaria.com/es/glossary/carbon-footprint/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/carbon-footprint/</guid><description>&lt;p&gt;El &lt;strong&gt;Carbon Footprint&lt;/strong&gt; (huella de carbono) es la cantidad total de gases de efecto invernadero — principalmente CO₂ — emitidos directa o indirectamente por una actividad, producto o individuo, expresada en toneladas de CO₂ equivalente.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Para el pendularismo urbano, el cálculo es directo: un coche parado en el tráfico de Roma produce en promedio 120-150 g de CO₂ por kilómetro. En tráfico congestionado incluso más, porque el motor funciona al ralentí consumiendo sin moverse. Una bicicleta produce cero emisiones directas.&lt;/p&gt;</description></item><item><title>CDC</title><link>https://ivanluminaria.com/es/glossary/cdc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/cdc/</guid><description>&lt;p&gt;&lt;strong&gt;CDC&lt;/strong&gt; (Change Data Capture) es una técnica para interceptar las modificaciones de datos (INSERT, UPDATE, DELETE) en el momento en que ocurren y propagarlas hacia otros sistemas en tiempo real o casi real. A diferencia de los enfoques batch tradicionales (ETL periódicos), el CDC captura los cambios de forma continua e incremental.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El enfoque más difundido es el &lt;strong&gt;log-based CDC&lt;/strong&gt;: un componente externo lee los logs de transacciones de la base de datos (binary log en MySQL, WAL en PostgreSQL, redo log en Oracle) y convierte los eventos en un flujo de datos consumible por otros sistemas. Herramientas como Debezium, Maxwell y Canal implementan este enfoque para MySQL leyendo directamente los binary log.&lt;/p&gt;</description></item><item><title>Churn</title><link>https://ivanluminaria.com/es/glossary/churn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/churn/</guid><description>&lt;p&gt;El &lt;strong&gt;churn&lt;/strong&gt; de una tabla es la medida de cuánto cambian sus datos después de la inserción. Una tabla con alto churn sufre frecuentes UPDATE y DELETE; una tabla con bajo churn es predominantemente append-only (solo INSERT).&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En PostgreSQL, cada UPDATE crea una nueva versión de la fila (debido al modelo MVCC) y la versión antigua se convierte en una dead tuple. Los DELETE también crean dead tuples. Cuanto mayor es el churn, más trabajo deben hacer VACUUM y los índices para mantener el rendimiento. Un índice GIN en una tabla de alto churn puede degradar significativamente el rendimiento de escritura.&lt;/p&gt;</description></item><item><title>Clave subrogada</title><link>https://ivanluminaria.com/es/glossary/chiave-surrogata/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/chiave-surrogata/</guid><description>&lt;p&gt;La &lt;strong&gt;clave subrogada&lt;/strong&gt; (surrogate key) es un identificador numérico secuencial generado internamente por el data warehouse, sin ningún significado de negocio. Es distinta de la clave natural — la que proviene del sistema fuente (ej. el código de cliente, el número de empleado).&lt;/p&gt;
&lt;h2 id="por-qué-es-necesaria" class="relative group"&gt;Por qué es necesaria &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#por-qu%c3%a9-es-necesaria" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En la SCD Tipo 2, el mismo cliente puede tener múltiples filas en la tabla dimensional — una por cada versión histórica. La clave natural (&lt;code&gt;cliente_id&lt;/code&gt;) ya no es única, así que se necesita un identificador que distinga cada versión individual: la clave subrogada (&lt;code&gt;cliente_key&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>COALESCE</title><link>https://ivanluminaria.com/es/glossary/coalesce/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/coalesce/</guid><description>&lt;p&gt;&lt;strong&gt;COALESCE&lt;/strong&gt; es una función SQL estándar que acepta una lista de expresiones y devuelve la primera que no es NULL. Si todas las expresiones son NULL, devuelve NULL.&lt;/p&gt;
&lt;h2 id="sintaxis" class="relative group"&gt;Sintaxis &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#sintaxis" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expresion1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresion2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresion3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Equivale a una cadena de CASE WHEN:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CASE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresion1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresion1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresion2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresion2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresion3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresion3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ELSE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="uso-en-las-jerarquías" class="relative group"&gt;Uso en las jerarquías &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#uso-en-las-jerarqu%c3%adas" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En el contexto de las ragged hierarchies, COALESCE se usa a menudo para rellenar los niveles faltantes:&lt;/p&gt;</description></item><item><title>Code Review</title><link>https://ivanluminaria.com/es/glossary/code-review/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/code-review/</guid><description>&lt;p&gt;La &lt;strong&gt;Code Review&lt;/strong&gt; es la práctica por la cual un colega examina el código escrito por otro desarrollador antes de que se incorpore al branch principal. En GitHub ocurre dentro de las Pull Requests.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El desarrollador abre una Pull Request con sus cambios. Un reviewer asignado examina el diff del código, deja comentarios, sugiere mejoras y finalmente aprueba o solicita cambios. El proceso es asíncrono: no hacen falta reuniones, la revisión ocurre en la herramienta. Solo después de la aprobación el código se fusiona en el branch principal.&lt;/p&gt;</description></item><item><title>Compliance</title><link>https://ivanluminaria.com/es/glossary/compliance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/compliance/</guid><description>&lt;p&gt;La &lt;strong&gt;Compliance&lt;/strong&gt; (cumplimiento normativo) es la adhesión de una organización a las leyes, regulaciones y estándares del sector aplicables a su actividad. En el contexto AI, incluye GDPR, regulaciones bancarias (SOX, PCI-DSS), normativas sanitarias y políticas internas sobre el uso de datos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La compliance se verifica a través de auditorías, controles documentales y monitorización continua. Para los proyectos AI, requiere la trazabilidad de los datos usados para el training, la documentación de las decisiones automatizadas y la capacidad de explicar cómo el modelo llegó a un determinado output (explainability).&lt;/p&gt;</description></item><item><title>CTAS</title><link>https://ivanluminaria.com/es/glossary/ctas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/ctas/</guid><description>&lt;p&gt;&lt;strong&gt;CTAS&lt;/strong&gt; (Create Table As Select) es un comando SQL Oracle que crea una nueva tabla y la puebla en una única operación con los resultados de un SELECT. Es la técnica estándar para migrar datos de una estructura a otra en tablas de gran tamaño.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El comando combina DDL y DML: crea la tabla con la estructura derivada del SELECT e inserta los datos en un solo paso. Con el hint &lt;code&gt;PARALLEL&lt;/code&gt; y el modo &lt;code&gt;NOLOGGING&lt;/code&gt;, la copia de cientos de GB puede completarse en pocas horas. Después de la copia, se renombra la tabla original, se renombra la nueva, y el downtime se limita a los pocos segundos del rename.&lt;/p&gt;</description></item><item><title>Cutover</title><link>https://ivanluminaria.com/es/glossary/cutover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/cutover/</guid><description>&lt;p&gt;El &lt;strong&gt;cutover&lt;/strong&gt; es el momento en que un sistema de produccion se traslada de la vieja infraestructura a la nueva. Es la fase mas visible de una migracion — la que todos recuerdan, para bien o para mal.&lt;/p&gt;
&lt;h2 id="anatomia-de-un-cutover" class="relative group"&gt;Anatomia de un cutover &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#anatomia-de-un-cutover" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un cutover bien planificado sigue un runbook detallado con pasos numerados, tiempos estimados, criterios de exito y procedimientos de rollback para cada paso. Los componentes tipicos:&lt;/p&gt;</description></item><item><title>Daily Standup</title><link>https://ivanluminaria.com/es/glossary/daily-standup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/daily-standup/</guid><description>&lt;p&gt;El &lt;strong&gt;Daily Standup&lt;/strong&gt; es una reunión diaria breve (máximo 15 minutos) donde cada miembro del equipo responde a tres preguntas: qué hice ayer, qué haré hoy, hay algo que me bloquea. El propósito es sincronizar al equipo, no resolver problemas.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada persona tiene aproximadamente dos minutos para su actualización. Los problemas se señalan pero no se discuten: la resolución ocurre después, entre las personas involucradas. La restricción temporal es lo que hace efectivo el standup — sin ella, degenera en una reunión de estado de 45 minutos.&lt;/p&gt;</description></item><item><title>Data Governance</title><link>https://ivanluminaria.com/es/glossary/data-governance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/data-governance/</guid><description>&lt;p&gt;La &lt;strong&gt;Data Governance&lt;/strong&gt; es el conjunto de políticas, procesos, roles y estándares que una organización adopta para garantizar que sus datos sean precisos, seguros, conformes a las normativas y utilizados de forma coherente.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Define quién es responsable de los datos (data owner, data steward), qué reglas de calidad aplicar, cómo clasificar los datos por sensibilidad y cómo rastrear su procedencia (data lineage). En un contexto AI, incluye también la verificación de la procedencia y calidad de los datos usados para el training de los modelos.&lt;/p&gt;</description></item><item><title>Data Guard</title><link>https://ivanluminaria.com/es/glossary/data-guard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/data-guard/</guid><description>&lt;p&gt;&lt;strong&gt;Data Guard&lt;/strong&gt; es la tecnologia Oracle que mantiene una o mas copias sincronizadas (standby) de una base de datos de produccion (primario). El standby recibe y aplica continuamente los redo logs generados por el primario, manteniendose alineado en tiempo real o casi.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El primario genera redo logs con cada transaccion. Estos logs se transmiten al standby por red, donde se aplican de dos formas posibles:&lt;/p&gt;</description></item><item><title>Data Warehouse</title><link>https://ivanluminaria.com/es/glossary/data-warehouse/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/data-warehouse/</guid><description>&lt;p&gt;Un &lt;strong&gt;Data Warehouse&lt;/strong&gt; (DWH) es un sistema de almacenamiento de datos diseñado específicamente para el análisis, el reporting y el soporte a las decisiones empresariales. A diferencia de las bases de datos operacionales (OLTP), un DWH recopila datos de múltiples fuentes, los transforma y los organiza en estructuras optimizadas para consultas analíticas.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Los datos se extraen de los sistemas fuente (gestionales, CRM, ERP), se transforman mediante procesos ETL que los limpian, normalizan y enriquecen, y finalmente se cargan en el DWH. El modelo de datos típico es el star schema: una fact table central con las medidas numéricas conectada a tablas dimensionales que describen el contexto (tiempo, cliente, producto, geografía).&lt;/p&gt;</description></item><item><title>Dead Tuple</title><link>https://ivanluminaria.com/es/glossary/dead-tuple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/dead-tuple/</guid><description>&lt;p&gt;Un &lt;strong&gt;Dead Tuple&lt;/strong&gt; es una fila en una tabla PostgreSQL que ha sido actualizada (UPDATE) o eliminada (DELETE) pero aún no ha sido removida físicamente. Permanece en las páginas de datos, ocupando espacio en disco y ralentizando los escaneos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando PostgreSQL ejecuta un UPDATE, no sobrescribe la fila original: crea una nueva versión y marca la antigua como &amp;ldquo;muerta.&amp;rdquo; La fila antigua permanece físicamente en la página de datos hasta que VACUUM la limpia. Los dead tuples son el precio del modelo MVCC — necesarios para garantizar el aislamiento transaccional.&lt;/p&gt;</description></item><item><title>DEFAULT PRIVILEGES</title><link>https://ivanluminaria.com/es/glossary/default-privileges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/default-privileges/</guid><description>&lt;p&gt;&lt;strong&gt;DEFAULT PRIVILEGES&lt;/strong&gt; es un mecanismo de PostgreSQL que permite definir con antelación los privilegios que se asignarán automáticamente a todos los objetos futuros creados en un schema. Se configura con el comando &lt;code&gt;ALTER DEFAULT PRIVILEGES&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El comando &lt;code&gt;ALTER DEFAULT PRIVILEGES IN SCHEMA schema1 GRANT SELECT ON TABLES TO srv_monitoreo&lt;/code&gt; hace que cada nueva tabla creada en &lt;code&gt;schema1&lt;/code&gt; sea automáticamente legible por &lt;code&gt;srv_monitoreo&lt;/code&gt;. Sin esta configuración, las tablas futuras requerirían un GRANT manual cada vez.&lt;/p&gt;</description></item><item><title>default_statistics_target</title><link>https://ivanluminaria.com/es/glossary/postgresql-default-statistics-target/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/postgresql-default-statistics-target/</guid><description>&lt;p&gt;&lt;strong&gt;default_statistics_target&lt;/strong&gt; es el parametro PostgreSQL que define el numero de muestras recopiladas por el comando &lt;code&gt;ANALYZE&lt;/code&gt; para construir las estadisticas de cada columna. El valor por defecto es 100.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;PostgreSQL muestrea un cierto numero de valores por cada columna y los usa para construir dos estructuras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Most common values (MCV)&lt;/strong&gt;: la lista de los valores mas frecuentes, con sus respectivas frecuencias&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Histograma&lt;/strong&gt;: la distribucion de los valores restantes, dividida en buckets de igual poblacion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El parametro &lt;code&gt;default_statistics_target&lt;/code&gt; determina cuantos elementos tendran estas estructuras. Con el valor 100 (por defecto), el histograma tendra 100 buckets y la lista MCV contendra hasta 100 valores.&lt;/p&gt;</description></item><item><title>Directiva 2011/7/UE</title><link>https://ivanluminaria.com/es/glossary/direttiva-2011-7-ue/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/direttiva-2011-7-ue/</guid><description>&lt;p&gt;La &lt;strong&gt;Directiva 2011/7/UE&lt;/strong&gt; es la normativa europea sobre morosidad en las transacciones comerciales. Establece reglas claras: plazo estándar de 30 días, máximo 60 entre empresas (con acuerdo explícito), 30 para la administración pública, e intereses de demora automáticos al tipo BCE + 8%.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La directiva fue transpuesta al derecho italiano mediante el D.Lgs. 231/2002 (modificado en 2012). Sobre el papel las reglas existen: 30 días estándar, intereses automáticos, compensación forfetaria de 40€ por factura pagada con retraso. En la práctica italiana es como si no existieran — el DSO medio italiano es de 80 días, muy por encima del máximo de 60.&lt;/p&gt;</description></item><item><title>Drill-down</title><link>https://ivanluminaria.com/es/glossary/drill-down/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/drill-down/</guid><description>&lt;p&gt;El &lt;strong&gt;drill-down&lt;/strong&gt; es la operación de navegación en reportes que permite pasar de un nivel agregado a un nivel de mayor detalle, descendiendo por una jerarquía.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En una jerarquía Top Group → Group → Client:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Se parte del nivel más alto: facturación total por Top Group&lt;/li&gt;
&lt;li&gt;Se hace clic en un Top Group para ver sus Groups (drill-down de primer nivel)&lt;/li&gt;
&lt;li&gt;Se hace clic en un Group para ver los Clients individuales (drill-down de segundo nivel)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La operación inversa — subir del detalle al agregado — se llama &lt;strong&gt;drill-up&lt;/strong&gt; (o roll-up).&lt;/p&gt;</description></item><item><title>DSO</title><link>https://ivanluminaria.com/es/glossary/dso/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/dso/</guid><description>&lt;p&gt;El &lt;strong&gt;DSO&lt;/strong&gt; (Days Sales Outstanding) es la métrica que mide el número medio de días que una empresa tarda en cobrar sus créditos tras la emisión de la factura. Es el indicador principal de la velocidad de pago en un mercado.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se calcula como: &lt;code&gt;(Créditos comerciales / Facturación) × Días del periodo&lt;/code&gt;. Un DSO de 30 significa que en promedio los clientes pagan en un mes. En Italia el DSO medio es de 80 días según el European Payment Report — casi tres veces la media del norte de Europa (24-27 días).&lt;/p&gt;</description></item><item><title>ETL</title><link>https://ivanluminaria.com/es/glossary/etl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/etl/</guid><description>&lt;p&gt;&lt;strong&gt;ETL&lt;/strong&gt; (Extract, Transform, Load) es el proceso fundamental a traves del cual los datos se mueven desde los sistemas fuente (bases de datos operacionales, archivos, APIs) al data warehouse.&lt;/p&gt;
&lt;h2 id="las-tres-fases" class="relative group"&gt;Las tres fases &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#las-tres-fases" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extract&lt;/strong&gt;: extraccion de datos de los sistemas fuente. Puede ser completa (full load) o incremental (solo datos nuevos o modificados)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transform&lt;/strong&gt;: limpieza, validacion, estandarizacion y enriquecimiento de los datos. Aqui se aplican las reglas de negocio, las lookup sobre las dimensiones, los calculos derivados&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Load&lt;/strong&gt;: carga de los datos transformados en las tablas del data warehouse (fact y dimension)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="por-que-es-critico" class="relative group"&gt;Por que es critico &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#por-que-es-critico" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El ETL es la parte menos visible pero mas critica de un data warehouse. Si los datos se extraen de forma incompleta, se transforman con reglas erroneas o se cargan sin controles, todo lo que esta encima — reportes, dashboards, decisiones — sera incorrecto.&lt;/p&gt;</description></item><item><title>Exchange Partition</title><link>https://ivanluminaria.com/es/glossary/exchange-partition/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/exchange-partition/</guid><description>&lt;p&gt;El &lt;strong&gt;Exchange Partition&lt;/strong&gt; es una operación DDL de Oracle que permite intercambiar instantáneamente el contenido de una partición con el de una tabla no particionada. No se mueve ni un solo byte de datos — la operación solo modifica los punteros en el data dictionary.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El comando &lt;code&gt;ALTER TABLE ... EXCHANGE PARTITION ... WITH TABLE ...&lt;/code&gt; modifica los metadatos en el data dictionary de modo que los segmentos físicos de la partición y de la tabla de staging intercambien su propiedad. La tabla de staging se convierte en la partición y viceversa. La operación dura menos de un segundo independientemente del volumen de datos, porque no implica ningún movimiento físico.&lt;/p&gt;</description></item><item><title>Execution Plan</title><link>https://ivanluminaria.com/es/glossary/execution-plan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/execution-plan/</guid><description>&lt;p&gt;Un &lt;strong&gt;execution plan&lt;/strong&gt; (plan de ejecucion) es la secuencia de operaciones que la base de datos elige para resolver una consulta SQL. Cuando escribes un SELECT con JOINs, filtros WHERE y ordenamientos, el optimizer evalua decenas de estrategias posibles y elige una basandose en las estadisticas disponibles.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El plan se representa como un arbol de nodos: cada nodo es una operacion (scan, join, sort, aggregate) que recibe datos de sus nodos hijos y los pasa al nodo padre. En PostgreSQL se visualiza con &lt;code&gt;EXPLAIN&lt;/code&gt; (plan estimado) o &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; (plan real con tiempos efectivos y conteos de filas).&lt;/p&gt;</description></item><item><title>Facilitador</title><link>https://ivanluminaria.com/es/glossary/facilitatore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/facilitatore/</guid><description>&lt;p&gt;El &lt;strong&gt;Facilitador&lt;/strong&gt; es la persona encargada de guiar el desarrollo de una reunión. No es quien decide — es quien garantiza que la decisión se tome de manera ordenada, en los tiempos previstos y con la contribución de todos los participantes.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El facilitador controla el tiempo, gestiona los turnos de palabra, corta las discusiones fuera de tema (&amp;ldquo;lo anoto en el parking lot, lo hablamos después&amp;rdquo;) y se asegura de que el standup no supere los 15 minutos. El rol puede ser fijo o rotativo en el equipo.&lt;/p&gt;</description></item><item><title>Fact table</title><link>https://ivanluminaria.com/es/glossary/fact-table/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/fact-table/</guid><description>&lt;p&gt;La &lt;strong&gt;fact table&lt;/strong&gt; (tabla de hechos) es la tabla central de un star schema en el data warehouse. Contiene las medidas numéricas — importes, cantidades, conteos, duraciones — y las claves foráneas que la conectan con las tablas dimensionales.&lt;/p&gt;
&lt;h2 id="estructura" class="relative group"&gt;Estructura &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#estructura" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada fila de la fact table representa un evento o una transacción de negocio: una venta, un siniestro, un envío, un acceso. Las columnas se dividen en dos categorías:&lt;/p&gt;</description></item><item><title>Float Financiero</title><link>https://ivanluminaria.com/es/glossary/float-finanziario/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/float-finanziario/</guid><description>&lt;p&gt;El &lt;strong&gt;Float Financiero&lt;/strong&gt; es la liquidez que una empresa genera de la diferencia entre los tiempos de cobro de sus clientes (más cortos) y los tiempos de pago a sus proveedores (más largos). Es de hecho un préstamo a coste cero obtenido a expensas de los proveedores.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Una empresa de consultoría cobra del cliente final a 30 días pero paga a sus consultores a 90 días. La diferencia de 60 días genera un float: por cada 100.000€ de facturación mensual, la empresa dispone de ~200.000€ de liquidez gratuita que puede invertir o usar como capital circulante.&lt;/p&gt;</description></item><item><title>FLUSH PRIVILEGES</title><link>https://ivanluminaria.com/es/glossary/flush-privileges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/flush-privileges/</guid><description>&lt;p&gt;&lt;strong&gt;FLUSH PRIVILEGES&lt;/strong&gt; es un comando MySQL/MariaDB que fuerza al servidor a recargar en memoria las tablas de privilegios desde la base de datos &lt;code&gt;mysql&lt;/code&gt;. Hace inmediatamente efectivos los cambios en los permisos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;MySQL mantiene en memoria una caché de las tablas de grant (&lt;code&gt;mysql.user&lt;/code&gt;, &lt;code&gt;mysql.db&lt;/code&gt;, &lt;code&gt;mysql.tables_priv&lt;/code&gt;). Cuando se usan &lt;code&gt;CREATE USER&lt;/code&gt; y &lt;code&gt;GRANT&lt;/code&gt;, MySQL actualiza tanto las tablas como la caché automáticamente. Pero si las tablas de grant se modifican directamente con &lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt; o &lt;code&gt;DELETE&lt;/code&gt;, la caché no se actualiza. &lt;code&gt;FLUSH PRIVILEGES&lt;/code&gt; fuerza la recarga de la caché desde las tablas.&lt;/p&gt;</description></item><item><title>Full Table Scan</title><link>https://ivanluminaria.com/es/glossary/full-table-scan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/full-table-scan/</guid><description>&lt;p&gt;&lt;strong&gt;Full Table Scan&lt;/strong&gt; (o TABLE ACCESS FULL) es una operacion en la que la base de datos lee todos los bloques de datos de una tabla, de principio a fin, sin pasar por ningun indice.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle solicita bloques del disco (o de la cache) en secuencia, usando lecturas multi-bloque (&lt;code&gt;db file scattered read&lt;/code&gt;). Cada fila de la tabla es examinada, independientemente de si cumple o no los criterios de la query.&lt;/p&gt;</description></item><item><title>GIN Index</title><link>https://ivanluminaria.com/es/glossary/gin-index/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/gin-index/</guid><description>&lt;p&gt;Un &lt;strong&gt;GIN Index&lt;/strong&gt; (Generalized Inverted Index) es un tipo de índice PostgreSQL diseñado para indexar valores compuestos: arrays, documentos JSONB, texto con trigramas y búsquedas full-text. A diferencia del B-Tree, un GIN crea un mapping inverso: de cada elemento (palabra, trigrama, clave JSON) a los registros que lo contienen.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Para cada valor distinto en el dato indexado, GIN mantiene una lista de punteros a las filas que contienen ese valor. En el caso de &lt;code&gt;pg_trgm&lt;/code&gt;, el texto se descompone en trigramas (secuencias de 3 caracteres) y cada trigrama se indexa. Una búsqueda &lt;code&gt;LIKE '%ABC%'&lt;/code&gt; se traduce en una intersección de trigramas, evitando el escaneo secuencial.&lt;/p&gt;</description></item><item><title>Grain</title><link>https://ivanluminaria.com/es/glossary/grain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/grain/</guid><description>&lt;p&gt;El &lt;strong&gt;grain&lt;/strong&gt; (granularidad) es el nivel de detalle de una fact table en un data warehouse. Define qué representa una fila individual: una transacción, un resumen diario, un total mensual, una línea de factura.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La elección del grain es la primera decisión al diseñar una fact table. Todas las demás decisiones — medidas, dimensiones, ETL — derivan de ella:&lt;/p&gt;</description></item><item><title>GRANT</title><link>https://ivanluminaria.com/es/glossary/grant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/grant/</guid><description>&lt;p&gt;&lt;strong&gt;GRANT&lt;/strong&gt; es el comando SQL usado para asignar privilegios a un usuario o rol sobre objetos específicos de la base de datos. En MySQL y MariaDB, los privilegios se asignan al par &lt;code&gt;'usuario'@'host'&lt;/code&gt;, no solo al nombre de usuario.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La sintaxis básica es &lt;code&gt;GRANT &amp;lt;privilegios&amp;gt; ON &amp;lt;base_de_datos&amp;gt;.&amp;lt;tabla&amp;gt; TO 'usuario'@'host'&lt;/code&gt;. Los privilegios pueden ser granulares (SELECT, INSERT, UPDATE, DELETE) o globales (ALL PRIVILEGES). En MySQL 8, GRANT ya no crea usuarios implícitamente: se necesita primero un &lt;code&gt;CREATE USER&lt;/code&gt; explícito, luego el GRANT. En MySQL 5.7 y MariaDB, GRANT con &lt;code&gt;IDENTIFIED BY&lt;/code&gt; crea el usuario y asigna privilegios en un solo comando.&lt;/p&gt;</description></item><item><title>Group Replication</title><link>https://ivanluminaria.com/es/glossary/group-replication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/group-replication/</guid><description>&lt;p&gt;&lt;strong&gt;Group Replication&lt;/strong&gt; es el mecanismo nativo de MySQL para crear clusters de alta disponibilidad con replicación síncrona entre múltiples nodos. A diferencia de la replicación clásica (asíncrona, master-slave), Group Replication garantiza que cada transacción sea confirmada por la mayoría de los nodos antes de considerarse committed.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Los nodos se comunican mediante un protocolo de grupo (GCS — Group Communication System) que gestiona el consenso distribuido. Cada nodo mantiene una copia completa de los datos. Las transacciones son certificadas por el grupo: si no hay conflictos, se aplican en todos los nodos. Si hay un conflicto, la transacción se revierte en el nodo que la originó.&lt;/p&gt;</description></item><item><title>GTID</title><link>https://ivanluminaria.com/es/glossary/gtid/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/gtid/</guid><description>&lt;p&gt;&lt;strong&gt;GTID&lt;/strong&gt; (Global Transaction Identifier) es un identificador único asignado automáticamente a cada transacción confirmada en un servidor MySQL. El formato es &lt;code&gt;server_uuid:transaction_id&lt;/code&gt; — por ejemplo &lt;code&gt;3E11FA47-71CA-11E1-9E33-C80AA9429562:23&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando el GTID está habilitado (&lt;code&gt;gtid_mode = ON&lt;/code&gt;), cada transacción recibe un identificador que la hace rastreable en cualquier servidor del cluster de replicación. La réplica sabe exactamente qué transacciones ya ejecutó y cuáles necesita recibir, sin necesidad de especificar manualmente posiciones de binlog (archivo + offset).&lt;/p&gt;</description></item><item><title>Hash Join</title><link>https://ivanluminaria.com/es/glossary/hash-join/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/hash-join/</guid><description>&lt;p&gt;&lt;strong&gt;Hash join&lt;/strong&gt; es una estrategia de join disenada para grandes volumenes de datos. Funciona en dos fases: primero construye una estructura de datos en memoria, luego la usa para encontrar las correspondencias de forma eficiente.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La base de datos lee la tabla mas pequena (build side) y construye una hash table en memoria, indexando las filas por la columna de join. Luego escanea la tabla mas grande (probe side) y para cada fila busca la correspondencia en la hash table con un lookup O(1).&lt;/p&gt;</description></item><item><title>Hot Desk</title><link>https://ivanluminaria.com/es/glossary/hot-desk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/hot-desk/</guid><description>&lt;p&gt;El &lt;strong&gt;Hot Desk&lt;/strong&gt; (hot desking) es un modelo de organización de espacios de trabajo donde los escritorios no están asignados a empleados individuales. Quien va a la oficina ocupa un puesto libre, típicamente reservable a través de un sistema digital.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En lugar de 50 puestos fijos para 50 empleados, la empresa dispone 15-20 puestos compartidos (hot desks) equipados con monitor, docking station y conectividad. Los empleados reservan el puesto los días que deben ir a la oficina, usando los demás días en smart working.&lt;/p&gt;</description></item><item><title>Huge Pages</title><link>https://ivanluminaria.com/es/glossary/huge-pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/huge-pages/</guid><description>&lt;p&gt;Las &lt;strong&gt;Huge Pages&lt;/strong&gt; son páginas de memoria de 2 MB, frente a los 4 KB estándar de Linux. Para una SGA Oracle de 64 GB, pasar de páginas de 4 KB (16,7 millones de páginas) a Huge Pages de 2 MB (32.768 páginas) reduce en 500 veces el número de entradas en la Page Table.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se configuran mediante el parámetro del kernel &lt;code&gt;vm.nr_hugepages&lt;/code&gt; en &lt;code&gt;/etc/sysctl.d/&lt;/code&gt;. El número necesario se calcula dividiendo el tamaño de la SGA entre 2 MB y añadiendo un margen del 1,5%. Tras reiniciar la instancia Oracle, la SGA se asigna en Huge Pages, verificable desde &lt;code&gt;/proc/meminfo&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>I/O Scheduler</title><link>https://ivanluminaria.com/es/glossary/io-scheduler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/io-scheduler/</guid><description>&lt;p&gt;El &lt;strong&gt;I/O Scheduler&lt;/strong&gt; es el componente del kernel Linux que gestiona la cola de solicitudes de lectura y escritura hacia los dispositivos de bloque (discos). Decide el orden de ejecución de las solicitudes para optimizar el throughput y minimizar la latencia.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Linux ofrece varios schedulers: &lt;code&gt;cfq&lt;/code&gt; (Completely Fair Queuing, para escritorio), &lt;code&gt;deadline&lt;/code&gt;/&lt;code&gt;mq-deadline&lt;/code&gt; (para servidores y bases de datos), &lt;code&gt;noop&lt;/code&gt;/&lt;code&gt;none&lt;/code&gt; (para SSD/NVMe). Para Oracle la recomendación es &lt;code&gt;deadline&lt;/code&gt;, que sirve las solicitudes minimizando los seeks del disco. Se configura vía &lt;code&gt;/sys/block/sdX/queue/scheduler&lt;/code&gt; y se hace permanente vía GRUB.&lt;/p&gt;</description></item><item><title>Intereses de Demora</title><link>https://ivanluminaria.com/es/glossary/interessi-di-mora/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/interessi-di-mora/</guid><description>&lt;p&gt;Los &lt;strong&gt;Intereses de Demora&lt;/strong&gt; son los intereses que se devengan automáticamente sobre cada factura pagada con retraso respecto al plazo contractual. Según el D.Lgs. 231/2002 italiano (transposición de la Directiva UE 2011/7/UE), el tipo es igual al tipo BCE + 8 puntos porcentuales, sin necesidad de requerimiento formal.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Desde el día siguiente al vencimiento de la factura, los intereses se devengan automáticamente. El acreedor tiene derecho también a una compensación forfetaria de 40€ por cada factura pagada con retraso, por gastos de recuperación. No es necesario enviar un requerimiento — el derecho nace de la ley.&lt;/p&gt;</description></item><item><title>INTO OUTFILE</title><link>https://ivanluminaria.com/es/glossary/into-outfile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/into-outfile/</guid><description>&lt;p&gt;&lt;strong&gt;INTO OUTFILE&lt;/strong&gt; es una cláusula SQL de MySQL que permite exportar el resultado de una query directamente a un archivo en el filesystem del servidor de base de datos. Es el método nativo para generar archivos CSV, TSV o con separadores personalizados.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La cláusula se añade al final de un &lt;code&gt;SELECT&lt;/code&gt; y especifica la ruta del archivo de destino. Los parámetros &lt;code&gt;FIELDS TERMINATED BY&lt;/code&gt;, &lt;code&gt;ENCLOSED BY&lt;/code&gt; y &lt;code&gt;LINES TERMINATED BY&lt;/code&gt; controlan el formato de la salida. El archivo es creado por el usuario de sistema MySQL (no por el usuario que ejecuta la query), por lo que debe estar en un directorio con los permisos correctos.&lt;/p&gt;</description></item><item><title>Issue Tracker</title><link>https://ivanluminaria.com/es/glossary/issue-tracker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/issue-tracker/</guid><description>&lt;p&gt;Un &lt;strong&gt;Issue Tracker&lt;/strong&gt; es un sistema para registrar, asignar, priorizar y monitorizar bugs, solicitudes de funcionalidades y tareas de proyecto. En GitHub está integrado directamente en el repositorio del código.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada problema o solicitud se crea como &amp;ldquo;issue&amp;rdquo; con título, descripción, etiquetas de categoría/prioridad y asignación a un desarrollador. Las issues pueden vincularse a branches y Pull Requests: cuando una PR que referencia una issue se fusiona, la issue se cierra automáticamente. Esto crea una trazabilidad completa del problema a la solución.&lt;/p&gt;</description></item><item><title>IST</title><link>https://ivanluminaria.com/es/glossary/ist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/ist/</guid><description>&lt;p&gt;&lt;strong&gt;IST&lt;/strong&gt; (Incremental State Transfer) es el mecanismo por el cual un nodo Galera que reingresa al cluster después de una ausencia breve recibe solo las transacciones faltantes, sin necesidad de descargar el dataset entero.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando un nodo se reconecta al cluster, el donante verifica si las transacciones faltantes aún están disponibles en su gcache (Galera cache). Si el gap está cubierto por el gcache, se ejecuta un IST: solo las transacciones faltantes se envían al nodo, que las aplica y vuelve al estado Synced. Si el gap supera el gcache, Galera recurre a un SST completo.&lt;/p&gt;</description></item><item><title>Kimball</title><link>https://ivanluminaria.com/es/glossary/kimball/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/kimball/</guid><description>&lt;p&gt;&lt;strong&gt;Kimball&lt;/strong&gt; se refiere a Ralph Kimball y su metodología de diseño de data warehouses, descrita en el libro &lt;em&gt;The Data Warehouse Toolkit&lt;/em&gt; (primera edición 1996, tercera edición 2013).&lt;/p&gt;
&lt;h2 id="el-enfoque" class="relative group"&gt;El enfoque &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#el-enfoque" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La metodología Kimball se basa en tres pilares:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dimensional modeling&lt;/strong&gt;: organizar los datos en star schemas con fact tables y dimension tables, optimizados para consultas analíticas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bottom-up&lt;/strong&gt;: construir el DWH partiendo de los data marts departamentales individuales, integrándolos progresivamente a través de dimensiones conformes (conformed dimensions)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bus architecture&lt;/strong&gt;: un framework para garantizar coherencia entre los data marts a través de dimensiones y hechos compartidos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="slowly-changing-dimensions" class="relative group"&gt;Slowly Changing Dimensions &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#slowly-changing-dimensions" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Kimball definió la clasificación de las SCD (Slowly Changing Dimensions) en los tipos del 0 al 7, que se ha convertido en el estándar de facto en la industria. El Tipo 2 — con claves subrogadas y fechas de validez — es el más utilizado para rastrear la historia de las dimensiones.&lt;/p&gt;</description></item><item><title>Knowledge Transfer</title><link>https://ivanluminaria.com/es/glossary/knowledge-transfer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/knowledge-transfer/</guid><description>&lt;p&gt;El &lt;strong&gt;Knowledge Transfer&lt;/strong&gt; (transferencia de conocimiento) es el proceso a través del cual competencias, información y know-how se transfieren de quien los posee a quien los necesita — entre colegas, entre equipos, o entre personas y sistemas de documentación.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Puede ser formal (documentación, sesiones de formación, wikis) o informal (pair programming, mentoring, acompañamiento). La IA puede acelerar el knowledge transfer generando documentación a partir del código, los commits y las issues — no perfecta, pero suficiente para no perder conocimiento cuando alguien deja el proyecto.&lt;/p&gt;</description></item><item><title>KPI</title><link>https://ivanluminaria.com/es/glossary/kpi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/kpi/</guid><description>&lt;p&gt;Un &lt;strong&gt;KPI&lt;/strong&gt; (Key Performance Indicator) es una métrica cuantificable usada para evaluar el éxito de una actividad, proyecto u organización respecto a objetivos predefinidos. En el contexto del trabajo remoto, los KPIs sustituyen la presencia física como indicador de productividad.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un KPI efectivo es específico, medible y vinculado a un objetivo concreto. En la consultoría IT: tickets cerrados, código liberado, SLAs cumplidos, clientes satisfechos. No &amp;ldquo;horas en el escritorio&amp;rdquo; — porque las horas no miden el valor producido, solo miden el tiempo transcurrido.&lt;/p&gt;</description></item><item><title>Least Privilege</title><link>https://ivanluminaria.com/es/glossary/least-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/least-privilege/</guid><description>&lt;p&gt;El &lt;strong&gt;Least Privilege&lt;/strong&gt; (principio del privilegio mínimo) es un principio fundamental de la seguridad informática: cada usuario, proceso o sistema debe tener solo los permisos estrictamente necesarios para desempeñar su función, nada más.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En el ámbito de bases de datos, el principio se aplica asignando privilegios granulares: &lt;code&gt;SELECT&lt;/code&gt; si el usuario solo debe leer, &lt;code&gt;SELECT + INSERT + UPDATE&lt;/code&gt; si también debe escribir, nunca &lt;code&gt;ALL PRIVILEGES&lt;/code&gt; si no es estrictamente necesario. Combinado con el modelo &lt;code&gt;usuario@host&lt;/code&gt; de MySQL, el principio puede aplicarse también según el origen de la conexión.&lt;/p&gt;</description></item><item><title>Lift-and-Shift</title><link>https://ivanluminaria.com/es/glossary/lift-and-shift/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/lift-and-shift/</guid><description>&lt;p&gt;&lt;strong&gt;Lift-and-Shift&lt;/strong&gt; (rehosting) es una estrategia de migración que consiste en trasladar un sistema de un entorno a otro — típicamente de on-premise a cloud — sin modificar su arquitectura, código aplicativo o configuración. Se toma el sistema tal cual y se &amp;ldquo;levanta y traslada&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La infraestructura se replica en el entorno de destino: mismas máquinas virtuales, mismas bases de datos, mismo middleware. La ventaja es la velocidad: no hay reescritura de código, no hay rediseño arquitectónico. El riesgo es llevarse todos los problemas del entorno original, incluidas ineficiencias y deuda técnica.&lt;/p&gt;</description></item><item><title>Local Index</title><link>https://ivanluminaria.com/es/glossary/local-index/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/local-index/</guid><description>&lt;p&gt;Un &lt;strong&gt;Local Index&lt;/strong&gt; es un índice Oracle creado sobre una tabla particionada, que se particiona automáticamente con la misma clave y los mismos límites que la tabla. Cada partición de la tabla tiene una partición de índice correspondiente.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando se crea un índice con la cláusula &lt;code&gt;LOCAL&lt;/code&gt;, Oracle crea una partición de índice por cada partición de la tabla. Si la tabla tiene 100 particiones mensuales, el índice tendrá 100 particiones correspondientes. Las operaciones DDL sobre una partición (DROP, TRUNCATE, SPLIT) invalidan solo la partición de índice correspondiente, no el índice entero.&lt;/p&gt;</description></item><item><title>MERGE</title><link>https://ivanluminaria.com/es/glossary/merge-sql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/merge-sql/</guid><description>&lt;p&gt;&lt;strong&gt;MERGE&lt;/strong&gt; es una instrucción SQL que combina las operaciones de INSERT y UPDATE (y opcionalmente DELETE) en un único statement. Si el registro existe lo actualiza, si no existe lo inserta. Informalmente se conoce como &amp;ldquo;upsert&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="sintaxis-oracle" class="relative group"&gt;Sintaxis Oracle &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#sintaxis-oracle" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MERGE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tabla_destino&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tabla_fuente&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clave&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clave&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MATCHED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SET&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MATCHED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clave&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clave&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="uso-en-el-data-warehouse" class="relative group"&gt;Uso en el data warehouse &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#uso-en-el-data-warehouse" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En el contexto ETL, el MERGE es el mecanismo base para cargar las tablas dimensionales:&lt;/p&gt;</description></item><item><title>Movilidad Sostenible</title><link>https://ivanluminaria.com/es/glossary/mobilita-sostenibile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/mobilita-sostenibile/</guid><description>&lt;p&gt;La &lt;strong&gt;Movilidad Sostenible&lt;/strong&gt; es un enfoque del transporte urbano que privilegia el uso de medios de bajo impacto ambiental — bicicleta, transporte público, vehículos eléctricos, car sharing — frente al coche privado de combustión interna.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se basa en un cambio de paradigma: en lugar de construir más carreteras para más coches, se invierte en infraestructura ciclable, transporte público eficiente e incentivos para la movilidad activa. Ciudades como Ámsterdam, Copenhague y Múnich demuestran que el modelo funciona a gran escala.&lt;/p&gt;</description></item><item><title>MVCC</title><link>https://ivanluminaria.com/es/glossary/mvcc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/mvcc/</guid><description>&lt;p&gt;&lt;strong&gt;MVCC&lt;/strong&gt; (Multi-Version Concurrency Control) es el modelo de concurrencia usado por PostgreSQL para gestionar el acceso simultáneo a los datos. Cada UPDATE crea una nueva versión de la fila y marca la antigua como &amp;ldquo;muerta&amp;rdquo;; cada DELETE marca la fila como ya no visible. Las lecturas no bloquean las escrituras y viceversa.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada transacción ve un snapshot consistente de la base de datos en el momento de su inicio. Las filas modificadas por otras transacciones aún no confirmadas son invisibles. Esto elimina la necesidad de locks exclusivos en las lecturas, permitiendo alta concurrencia — pero genera &amp;ldquo;basura&amp;rdquo; en forma de dead tuples que deben ser limpiados por el VACUUM.&lt;/p&gt;</description></item><item><title>mydumper</title><link>https://ivanluminaria.com/es/glossary/mydumper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/mydumper/</guid><description>&lt;p&gt;&lt;strong&gt;mydumper&lt;/strong&gt; es una herramienta open source de backup lógico para MySQL y MariaDB que implementa paralelismo real: no solo entre tablas diferentes, sino también dentro de la misma tabla, dividiéndola en chunks basados en la primary key.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mydumper se conecta al servidor MySQL, adquiere un snapshot consistente con &lt;code&gt;FLUSH TABLES WITH READ LOCK&lt;/code&gt; (o &lt;code&gt;--trx-consistency-only&lt;/code&gt; para evitar locks globales en InnoDB), luego distribuye el trabajo entre threads múltiples. Cada tabla grande se rompe en chunks — por defecto basados en los rangos de la primary key — y cada chunk se exporta por un thread separado.&lt;/p&gt;</description></item><item><title>mysqlbinlog</title><link>https://ivanluminaria.com/es/glossary/mysqlbinlog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/mysqlbinlog/</guid><description>&lt;p&gt;&lt;strong&gt;mysqlbinlog&lt;/strong&gt; es la utilidad de línea de comandos proporcionada con MySQL para leer y decodificar el contenido de los archivos binary log. Es la única herramienta capaz de convertir el formato binario de los binlog en salida legible o en instrucciones SQL re-ejecutables.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqlbinlog lee los archivos binlog y produce salida en formato texto. Soporta varios filtros:&lt;/p&gt;</description></item><item><title>mysqldump</title><link>https://ivanluminaria.com/es/glossary/mysqldump/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/mysqldump/</guid><description>&lt;p&gt;&lt;strong&gt;mysqldump&lt;/strong&gt; es la utilidad de backup lógico incluida de serie en cada instalación de MySQL y MariaDB. Produce un archivo SQL que contiene todas las instrucciones (CREATE TABLE, INSERT) necesarias para reconstruir completamente el esquema y los datos de una base de datos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqldump se conecta al servidor MySQL y lee las tablas una por una, generando las instrucciones SQL correspondientes como salida. La operación es rigurosamente single-threaded: una tabla tras otra, una fila tras otra. El archivo producido puede comprimirse externamente (gzip, zstd) pero la herramienta en sí no ofrece compresión nativa.&lt;/p&gt;</description></item><item><title>mysqlpump</title><link>https://ivanluminaria.com/es/glossary/mysqlpump/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/mysqlpump/</guid><description>&lt;p&gt;&lt;strong&gt;mysqlpump&lt;/strong&gt; es la utilidad de backup lógico introducida por Oracle en MySQL 5.7 como evolución de mysqldump. La diferencia principal es el soporte para paralelismo a nivel de tabla y compresión nativa del output (zlib, lz4, zstd).&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqlpump puede hacer dump de múltiples tablas simultáneamente usando threads paralelos, configurables con &lt;code&gt;--default-parallelism&lt;/code&gt;. La compresión se aplica directamente durante el dump, sin necesidad de pipes externos hacia gzip. También soporta el dump selectivo de usuarios y cuentas MySQL.&lt;/p&gt;</description></item><item><title>Nested Loop</title><link>https://ivanluminaria.com/es/glossary/nested-loop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/nested-loop/</guid><description>&lt;p&gt;&lt;strong&gt;Nested loop&lt;/strong&gt; es la estrategia de join mas simple: por cada fila de la tabla externa, la base de datos busca las filas correspondientes en la tabla interna. Funciona como un doble ciclo &lt;code&gt;for&lt;/code&gt; anidado — de ahi el nombre.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El optimizer elige una tabla como &amp;ldquo;externa&amp;rdquo; (outer) y una como &amp;ldquo;interna&amp;rdquo; (inner). Por cada fila de la tabla externa, ejecuta una busqueda en la tabla interna sobre la columna de join. Si la tabla interna tiene un indice en la columna de join, cada busqueda es un acceso directo via B-tree. Sin indice, cada busqueda se convierte en un sequential scan completo.&lt;/p&gt;</description></item><item><title>NOLOGGING</title><link>https://ivanluminaria.com/es/glossary/nologging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/nologging/</guid><description>&lt;p&gt;&lt;strong&gt;NOLOGGING&lt;/strong&gt; es un modo Oracle que deshabilita la generación de redo log durante operaciones de carga masiva. Las operaciones se completan mucho más rápido, pero los datos no son recuperables mediante redo en caso de crash antes de un backup.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando un segmento (tabla, índice, partición) está en modo NOLOGGING, las operaciones masivas como CTAS, &lt;code&gt;INSERT /*+ APPEND */&lt;/code&gt; y &lt;code&gt;ALTER TABLE MOVE&lt;/code&gt; no escriben redo log para los bloques de datos. En una copia de 380 GB, esto elimina la generación de la misma cantidad de redo, evitando saturar el área de archivelog y reduciendo los tiempos de días a horas.&lt;/p&gt;</description></item><item><title>Object Privilege</title><link>https://ivanluminaria.com/es/glossary/object-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/object-privilege/</guid><description>&lt;p&gt;Un &lt;strong&gt;Object Privilege&lt;/strong&gt; en Oracle es una autorización que permite ejecutar operaciones sobre un objeto específico de la base de datos: una tabla, una vista, una secuencia o un procedimiento PL/SQL. Ejemplos típicos incluyen &lt;code&gt;SELECT ON schema.tabla&lt;/code&gt;, &lt;code&gt;INSERT ON schema.tabla&lt;/code&gt; y &lt;code&gt;EXECUTE ON schema.procedimiento&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Los object privileges se asignan con &lt;code&gt;GRANT&lt;/code&gt; especificando la operación y el objeto destino: &lt;code&gt;GRANT SELECT ON app_owner.clientes TO srv_report&lt;/code&gt;. Pueden asignarse a usuarios individuales o a roles. A diferencia de los system privileges, operan sobre un único objeto y no confieren poderes globales sobre la base de datos.&lt;/p&gt;</description></item><item><title>OCI</title><link>https://ivanluminaria.com/es/glossary/oci/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/oci/</guid><description>&lt;p&gt;&lt;strong&gt;OCI&lt;/strong&gt; (Oracle Cloud Infrastructure) es la plataforma cloud de Oracle, lanzada en su segunda generacion en 2018. A diferencia de otros proveedores cloud, OCI esta disenada nativamente para cargas de trabajo Oracle Database y ofrece ventajas significativas en licensing y rendimiento.&lt;/p&gt;
&lt;h2 id="por-que-oci-para-oracle-database" class="relative group"&gt;Por que OCI para Oracle Database &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#por-que-oci-para-oracle-database" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La ventaja principal es el licensing. En OCI, Oracle reconoce sus propias OCPU (Oracle CPU) con una relacion 1:1 para el conteo de licencias. En otros proveedores cloud como AWS o Azure, la relacion vCPU-licencias es menos favorable y el riesgo de auditoria es real.&lt;/p&gt;</description></item><item><title>OLAP</title><link>https://ivanluminaria.com/es/glossary/olap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/olap/</guid><description>&lt;p&gt;&lt;strong&gt;OLAP&lt;/strong&gt; (Online Analytical Processing) indica un enfoque de procesamiento de datos orientado al análisis multidimensional: agregaciones, drill-down, comparaciones temporales, slice-and-dice sobre grandes volúmenes de datos históricos.&lt;/p&gt;
&lt;h2 id="olap-vs-oltp" class="relative group"&gt;OLAP vs OLTP &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#olap-vs-oltp" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Característica&lt;/th&gt;
 &lt;th&gt;OLAP&lt;/th&gt;
 &lt;th&gt;OLTP&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Propósito&lt;/td&gt;
 &lt;td&gt;Análisis y reporting&lt;/td&gt;
 &lt;td&gt;Transacciones operativas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Modelo de datos&lt;/td&gt;
 &lt;td&gt;Star schema, desnormalizado&lt;/td&gt;
 &lt;td&gt;3NF, normalizado&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Consulta típica&lt;/td&gt;
 &lt;td&gt;Agregaciones sobre millones de filas&lt;/td&gt;
 &lt;td&gt;Lectura/escritura de pocas filas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Usuarios&lt;/td&gt;
 &lt;td&gt;Analistas, management&lt;/td&gt;
 &lt;td&gt;Aplicaciones, operadores&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Actualización&lt;/td&gt;
 &lt;td&gt;Batch (ETL periódico)&lt;/td&gt;
 &lt;td&gt;Tiempo real&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="operaciones-olap" class="relative group"&gt;Operaciones OLAP &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#operaciones-olap" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Las operaciones fundamentales del análisis OLAP son:&lt;/p&gt;</description></item><item><title>Outsourcing</title><link>https://ivanluminaria.com/es/glossary/outsourcing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/outsourcing/</guid><description>&lt;p&gt;El &lt;strong&gt;Outsourcing&lt;/strong&gt; es la práctica de confiar el desarrollo, el mantenimiento o la gestión de sistemas IT a proveedores externos a la empresa. Puede abarcar proyectos completos (desarrollo de software custom) o servicios continuos (gestión de infraestructura, soporte aplicativo).&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La empresa cliente define los requisitos y firma un contrato con un proveedor externo que se compromete a realizar el proyecto. Los modelos contractuales más comunes son: a cuerpo (precio fijo por resultado definido), por tiempo y materiales (jornadas-hombre facturadas), o híbridos. El proveedor pone a disposición un equipo de consultores que trabajan en el proyecto, frecuentemente con rotación periódica del personal.&lt;/p&gt;</description></item><item><title>Parking Lot</title><link>https://ivanluminaria.com/es/glossary/parking-lot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/parking-lot/</guid><description>&lt;p&gt;El &lt;strong&gt;Parking Lot&lt;/strong&gt; es una lista visible — en una pizarra, un documento compartido o el chat — donde el facilitador anota los temas que surgen durante una reunión pero que no pueden discutirse en el tiempo disponible. Los temas se &amp;ldquo;aparcan&amp;rdquo; y se abordan después de la reunión solo con las personas involucradas.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando durante un standup alguien plantea un problema complejo, el facilitador dice: &amp;ldquo;Lo anoto en el parking lot, lo hablamos después.&amp;rdquo; El tema no se ignora — simplemente se traslada al contexto adecuado, donde puede abordarse sin hacer perder tiempo a quienes no están involucrados.&lt;/p&gt;</description></item><item><title>Partita IVA</title><link>https://ivanluminaria.com/es/glossary/partita-iva/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/partita-iva/</guid><description>&lt;p&gt;La &lt;strong&gt;Partita IVA&lt;/strong&gt; es el código de identificación fiscal asignado a los trabajadores autónomos y empresas en Italia para las operaciones sujetas a IVA. En la consultoría IT, &amp;ldquo;trabajar con partita IVA&amp;rdquo; significa operar como profesional independiente, facturando los servicios directamente al cliente.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El consultor autónomo emite factura al cliente al final del periodo de trabajo. El pago se realiza según los términos contractuales — que en Italia son típicamente 60-90-120 días fin de mes. Mientras tanto, el consultor asume todos los gastos (cotizaciones sociales, impuestos, alquiler, suministros) con fondos propios.&lt;/p&gt;</description></item><item><title>Partition Pruning</title><link>https://ivanluminaria.com/es/glossary/partition-pruning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/partition-pruning/</guid><description>&lt;p&gt;El &lt;strong&gt;Partition Pruning&lt;/strong&gt; es el mecanismo por el cual Oracle, durante la ejecución de una query sobre una tabla particionada, identifica y excluye automáticamente las particiones que no pueden contener datos relevantes para el predicado de la query.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando una query incluye un predicado sobre la columna de partición (ej. &lt;code&gt;WHERE data_movimento BETWEEN ...&lt;/code&gt;), Oracle consulta los metadatos de las particiones y determina cuáles contienen datos en el rango solicitado. Solo esas particiones se leen. En el plan de ejecución aparece como &lt;code&gt;PARTITION RANGE SINGLE&lt;/code&gt; o &lt;code&gt;PARTITION RANGE ITERATOR&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Pedaleo Asistido</title><link>https://ivanluminaria.com/es/glossary/pedalata-assistita/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/pedalata-assistita/</guid><description>&lt;p&gt;El &lt;strong&gt;Pedaleo Asistido&lt;/strong&gt; es un sistema de propulsión eléctrica montado en una bicicleta que amplifica la fuerza del pedaleo del ciclista mediante un motor eléctrico. El motor se activa solo cuando se pedalea y se desactiva por encima de los 25 km/h (límite europeo).&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un sensor detecta la fuerza y la cadencia del pedaleo y activa el motor eléctrico proporcionalmente. Cuanto más fuerte pedaleas, más ayuda el motor. El resultado es que cuestas como el Celio en Roma se convierten en una ligera pendiente, y se llega al destino sin sudar — un detalle crucial para quien tiene que presentarse en la oficina.&lt;/p&gt;</description></item><item><title>Pendularismo</title><link>https://ivanluminaria.com/es/glossary/pendolarismo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/pendolarismo/</guid><description>&lt;p&gt;El &lt;strong&gt;Pendularismo&lt;/strong&gt; (commuting) es el desplazamiento diario entre casa y lugar de trabajo. En las grandes ciudades italianas como Roma, el desplazamiento medio absorbe 2-4 horas al día, con costes directos (combustible, aparcamiento, transporte público) e indirectos (estrés, cansancio, productividad perdida).&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un consultor IT que vive a 30 km de la oficina en Roma puede tardar 1h15-2h30 solo para la ida. En 220 días laborables, son 47-89 horas perdidas al mes — hasta dos semanas laborables pasadas en el coche sin producir nada.&lt;/p&gt;</description></item><item><title>pg_stat_statements</title><link>https://ivanluminaria.com/es/glossary/pg-stat-statements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/pg-stat-statements/</guid><description>&lt;p&gt;&lt;strong&gt;pg_stat_statements&lt;/strong&gt; es una extensión de PostgreSQL — incluida en la distribución oficial pero no activa por defecto — que lleva el registro de las estadísticas de ejecución de todas las queries SQL que pasan por el servidor. Las queries se normalizan (los valores literales se reemplazan con parámetros) para agrupar las ejecuciones del mismo patrón.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La extensión requiere ser cargada como shared library al arranque del servidor mediante el parámetro &lt;code&gt;shared_preload_libraries&lt;/code&gt;. Una vez activa, registra para cada query: número de ejecuciones, tiempo total y medio, filas devueltas, bloques leídos de disco y de caché. El parámetro &lt;code&gt;pg_stat_statements.max&lt;/code&gt; controla cuántas queries distintas se rastrean (por defecto 5000).&lt;/p&gt;</description></item><item><title>pg_trgm</title><link>https://ivanluminaria.com/es/glossary/pg-trgm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/pg-trgm/</guid><description>&lt;p&gt;&lt;strong&gt;pg_trgm&lt;/strong&gt; es una extensión de PostgreSQL que implementa la búsqueda basada en trigramas — secuencias de tres caracteres consecutivos extraídos del texto. Habilita el uso de índices GIN y GiST para acelerar búsquedas &lt;code&gt;LIKE '%valor%'&lt;/code&gt; e &lt;code&gt;ILIKE&lt;/code&gt;, que de otro modo requerirían escaneos secuenciales.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La extensión descompone cada cadena en trigramas: por ejemplo, &amp;ldquo;hello&amp;rdquo; se convierte en {&amp;quot; h&amp;quot;, &amp;quot; he&amp;quot;, &amp;ldquo;hel&amp;rdquo;, &amp;ldquo;ell&amp;rdquo;, &amp;ldquo;llo&amp;rdquo;, &amp;ldquo;lo &amp;ldquo;}. Un índice GIN con operator class &lt;code&gt;gin_trgm_ops&lt;/code&gt; indexa estos trigramas. Al ejecutar un &lt;code&gt;LIKE '%ell%'&lt;/code&gt;, PostgreSQL busca los trigramas correspondientes en el índice en lugar de escanear toda la tabla.&lt;/p&gt;</description></item><item><title>PITR</title><link>https://ivanluminaria.com/es/glossary/pitr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/pitr/</guid><description>&lt;p&gt;&lt;strong&gt;PITR&lt;/strong&gt; (Point-in-Time Recovery) es una técnica de restauración que permite llevar una base de datos a cualquier momento en el tiempo, no solo al momento del backup. Se basa en la combinación de un backup completo y los logs de transacciones (binary log en MySQL, WAL en PostgreSQL, redo log en Oracle).&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El proceso se articula en dos fases:&lt;/p&gt;</description></item><item><title>Presentismo</title><link>https://ivanluminaria.com/es/glossary/presenteismo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/presenteismo/</guid><description>&lt;p&gt;El &lt;strong&gt;Presentismo&lt;/strong&gt; es la cultura organizativa que mide el valor del trabajo en base a la presencia física del empleado en la oficina, independientemente de la calidad y cantidad de los resultados producidos. Es la suposición de que &amp;ldquo;si te veo en tu escritorio, estás trabajando.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En una organización presentista, estar en la oficina de 9 a 18 es más importante que cerrar tareas. Llegar tarde es un problema incluso si has producido más que todos. Trabajar desde casa es sospechoso incluso si los resultados son excelentes. El control se basa en la vista, no en las métricas.&lt;/p&gt;</description></item><item><title>Pull Request</title><link>https://ivanluminaria.com/es/glossary/pull-request/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/pull-request/</guid><description>&lt;p&gt;Una &lt;strong&gt;Pull Request&lt;/strong&gt; (PR) es una solicitud formal de incorporar los cambios de un branch de desarrollo al branch principal del repositorio. Es el mecanismo central de colaboración en GitHub y plataformas similares.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El desarrollador trabaja en un branch dedicado (ej. &lt;code&gt;fix/issue-234-error-calculo&lt;/code&gt;), completa los cambios, y abre una PR. La PR muestra el diff del código, permite a los colegas comentar línea por línea, solicitar cambios o aprobar. Solo después de la aprobación el código se une (merge) al branch principal. Esto garantiza que el código &amp;ldquo;bueno&amp;rdquo; siga siendo bueno.&lt;/p&gt;</description></item><item><title>Quorum</title><link>https://ivanluminaria.com/es/glossary/quorum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/quorum/</guid><description>&lt;p&gt;El &lt;strong&gt;quorum&lt;/strong&gt; es el número mínimo de nodos que deben estar de acuerdo para considerar el cluster operativo. En un cluster de 3 nodos, el quorum es 2 (la mayoría). Si un nodo se desconecta, los otros dos reconocen que son la mayoría y continúan operando normalmente.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Galera Cluster utiliza un protocolo de comunicación de grupo que verifica continuamente cuántos nodos son alcanzables. El cálculo es simple: quorum = (número total de nodos / 2) + 1. Con 3 nodos el quorum es 2, con 5 nodos es 3. Los nodos que pierden el quorum pasan al estado Non-Primary y rechazan las escrituras para evitar inconsistencias.&lt;/p&gt;</description></item><item><title>RAC</title><link>https://ivanluminaria.com/es/glossary/rac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/rac/</guid><description>&lt;p&gt;&lt;strong&gt;RAC&lt;/strong&gt; (Real Application Clusters) es la tecnologia Oracle que permite a multiples instancias de base de datos acceder simultaneamente al mismo almacenamiento compartido. Si un nodo falla, los demas continuan atendiendo solicitudes sin interrupcion — el failover es transparente para las aplicaciones.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un cluster RAC esta compuesto por dos o mas servidores (nodos) conectados entre si mediante una red privada de alta velocidad (interconnect) y almacenamiento compartido (tipicamente ASM — Automatic Storage Management). Cada nodo ejecuta su propia instancia Oracle, pero todos acceden a los mismos datafiles.&lt;/p&gt;</description></item><item><title>Ragged hierarchy</title><link>https://ivanluminaria.com/es/glossary/ragged-hierarchy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/ragged-hierarchy/</guid><description>&lt;p&gt;Una &lt;strong&gt;ragged hierarchy&lt;/strong&gt; (jerarquía desequilibrada) es una estructura jerárquica en la que no todas las ramas alcanzan la misma profundidad. Algunos niveles intermedios están ausentes para determinadas entidades.&lt;/p&gt;
&lt;h2 id="ejemplo-concreto" class="relative group"&gt;Ejemplo concreto &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#ejemplo-concreto" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En una jerarquía de tres niveles Top Group → Group → Client:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Algunos clientes tienen los tres niveles (jerarquía completa)&lt;/li&gt;
&lt;li&gt;Algunos clientes tienen un Group pero ningún Top Group&lt;/li&gt;
&lt;li&gt;Algunos clientes no tienen ni Group ni Top Group (clientes directos)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El resultado es una estructura con &amp;ldquo;huecos&amp;rdquo; que causa problemas en los reportes de agregación: filas con NULL, totales divididos, drill-downs incompletos.&lt;/p&gt;</description></item><item><title>Range Partitioning</title><link>https://ivanluminaria.com/es/glossary/range-partitioning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/range-partitioning/</guid><description>&lt;p&gt;El &lt;strong&gt;Range Partitioning&lt;/strong&gt; (particionamiento por rango) es una estrategia de particionamiento de tablas en la que las filas se distribuyen en particiones diferentes según el valor de una columna respecto a intervalos predefinidos. La columna de particionamiento es casi siempre una fecha en los data warehouses.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada partición se define con una cláusula &lt;code&gt;VALUES LESS THAN&lt;/code&gt; que establece el límite superior del intervalo. Oracle asigna automáticamente cada fila a la partición correcta según el valor de la columna de particionamiento. Si una fila tiene &lt;code&gt;data_vendita = '2025-03-15'&lt;/code&gt;, se inserta en la partición cuyo rango incluye esa fecha.&lt;/p&gt;</description></item><item><title>Redo Log</title><link>https://ivanluminaria.com/es/glossary/redo-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/redo-log/</guid><description>&lt;p&gt;&lt;strong&gt;Redo Log&lt;/strong&gt; es el mecanismo con el que Oracle registra cada modificacion de datos (INSERT, UPDATE, DELETE, DDL) antes de que se escriba definitivamente en los datafiles. Es la garantia fundamental de durabilidad de las transacciones.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle escribe las modificaciones en los redo log online de forma secuencial y continua. Los redo log estan organizados en grupos circulares: cuando un grupo se llena, Oracle pasa al siguiente. Cuando todos los grupos han sido utilizados, Oracle vuelve al primero (log switch).&lt;/p&gt;</description></item><item><title>Relay log</title><link>https://ivanluminaria.com/es/glossary/relay-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/relay-log/</guid><description>&lt;p&gt;El &lt;strong&gt;relay log&lt;/strong&gt; es un archivo de log intermedio presente en el slave en una arquitectura de replicación MySQL. Contiene los eventos recibidos del binary log del master, a la espera de ser ejecutados localmente por el hilo SQL del slave.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El flujo de la replicación MySQL pasa por el relay log en tres fases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El &lt;strong&gt;I/O thread&lt;/strong&gt; del slave se conecta al master y lee los binary log&lt;/li&gt;
&lt;li&gt;Los eventos recibidos se escriben en el relay log local&lt;/li&gt;
&lt;li&gt;El &lt;strong&gt;SQL thread&lt;/strong&gt; del slave lee los eventos del relay log y los ejecuta en la base de datos local&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esta arquitectura de dos hilos permite desacoplar la recepción de datos de su aplicación: el slave puede seguir recibiendo eventos del master incluso si la ejecución local está temporalmente ralentizada.&lt;/p&gt;</description></item><item><title>REVOKE</title><link>https://ivanluminaria.com/es/glossary/revoke/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/revoke/</guid><description>&lt;p&gt;&lt;strong&gt;REVOKE&lt;/strong&gt; es el comando SQL que elimina privilegios o roles previamente asignados con &lt;code&gt;GRANT&lt;/code&gt;. Es el complemento indispensable del GRANT y la herramienta principal para restringir permisos cuando se reestructura un modelo de seguridad.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La sintaxis sigue el mismo esquema que GRANT: &lt;code&gt;REVOKE SELECT ON schema.tabla FROM usuario&lt;/code&gt; o &lt;code&gt;REVOKE rol FROM usuario&lt;/code&gt;. En Oracle, revocar un rol como &lt;code&gt;DBA&lt;/code&gt; elimina de un solo golpe todos los system privileges incluidos en ese rol. Antes de ejecutar un REVOKE crítico, es fundamental verificar que el usuario mantenga los privilegios necesarios para sus funciones.&lt;/p&gt;</description></item><item><title>RMAN</title><link>https://ivanluminaria.com/es/glossary/rman/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/rman/</guid><description>&lt;p&gt;&lt;strong&gt;RMAN&lt;/strong&gt; (Recovery Manager) es la herramienta nativa de Oracle para el backup, restore y recovery de la base de datos. Es una utilidad de linea de comandos que gestiona todas las operaciones de proteccion de datos de forma integrada con la base de datos.&lt;/p&gt;
&lt;h2 id="que-hace" class="relative group"&gt;Que hace &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#que-hace" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backup&lt;/strong&gt;: completos, incrementales, solo de archived logs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore&lt;/strong&gt;: recuperacion de datafiles, tablespaces o de toda la base de datos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recovery&lt;/strong&gt;: aplicacion de redo logs para llevar la base de datos a un punto en el tiempo especifico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duplicate&lt;/strong&gt;: creacion de copias de la base de datos, incluyendo bases de datos standby para Data Guard&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rman-y-data-guard" class="relative group"&gt;RMAN y Data Guard &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rman-y-data-guard" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Para la creacion de una base de datos standby, RMAN permite el &lt;code&gt;DUPLICATE ... FOR STANDBY FROM ACTIVE DATABASE&lt;/code&gt; — una copia directa por red del primario al standby, sin necesidad de backups intermedios en cinta o disco. El comando transfiere todos los datafiles y controlfiles y los configura automaticamente para la replica.&lt;/p&gt;</description></item><item><title>ROI</title><link>https://ivanluminaria.com/es/glossary/roi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/roi/</guid><description>&lt;p&gt;El &lt;strong&gt;ROI&lt;/strong&gt; (Return on Investment) es la métrica que mide el rendimiento de una inversión relacionando el beneficio neto con el coste incurrido, expresado como porcentaje. Un ROI del 200% significa que cada euro invertido generó dos de retorno.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se calcula como: &lt;code&gt;(Beneficio - Coste) / Coste × 100&lt;/code&gt;. En el contexto de proyectos IT con componentes IA, el cálculo del ROI debe incluir no solo los costes de implementación sino también los de mantenimiento, formación del equipo, governance y gestión de errores del modelo.&lt;/p&gt;</description></item><item><title>ROLE</title><link>https://ivanluminaria.com/es/glossary/postgresql-role/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/postgresql-role/</guid><description>&lt;p&gt;En PostgreSQL, &lt;strong&gt;ROLE&lt;/strong&gt; es la única entidad de seguridad. No existe distinción entre &amp;ldquo;usuario&amp;rdquo; y &amp;ldquo;rol&amp;rdquo;: todo es un ROLE. Un ROLE con el atributo &lt;code&gt;LOGIN&lt;/code&gt; se comporta como un usuario; sin &lt;code&gt;LOGIN&lt;/code&gt;, es un contenedor de privilegios asignable a otros ROLEs.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CREATE USER mario&lt;/code&gt; es simplemente un atajo para &lt;code&gt;CREATE ROLE mario WITH LOGIN&lt;/code&gt;. Los ROLEs pueden poseer objetos, heredar privilegios de otros ROLEs a través del atributo &lt;code&gt;INHERIT&lt;/code&gt;, y ser utilizados para construir jerarquías de permisos. Un ROLE &amp;ldquo;funcional&amp;rdquo; (sin LOGIN) agrupa privilegios; los ROLEs &amp;ldquo;usuario&amp;rdquo; (con LOGIN) los heredan.&lt;/p&gt;</description></item><item><title>RPO</title><link>https://ivanluminaria.com/es/glossary/rpo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/rpo/</guid><description>&lt;p&gt;&lt;strong&gt;RPO&lt;/strong&gt; (Recovery Point Objective) es la cantidad maxima de datos que una organizacion puede permitirse perder en caso de fallo o desastre. Se mide en tiempo: un RPO de 1 hora significa aceptar la perdida de como maximo la ultima hora de transacciones.&lt;/p&gt;
&lt;h2 id="como-se-determina" class="relative group"&gt;Como se determina &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-se-determina" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El RPO depende de la estrategia de backup y replica:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Estrategia&lt;/th&gt;
 &lt;th&gt;RPO tipico&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Backup nocturno en cinta&lt;/td&gt;
 &lt;td&gt;12-24 horas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Backup + archived logs en almacenamiento remoto&lt;/td&gt;
 &lt;td&gt;1-4 horas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard asincrono (MaxPerformance)&lt;/td&gt;
 &lt;td&gt;Pocos segundos&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard sincrono (MaxAvailability)&lt;/td&gt;
 &lt;td&gt;Cero&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rpo-vs-rto" class="relative group"&gt;RPO vs RTO &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rpo-vs-rto" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;RPO y RTO son complementarios pero distintos:&lt;/p&gt;</description></item><item><title>RTO</title><link>https://ivanluminaria.com/es/glossary/rto/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/rto/</guid><description>&lt;p&gt;&lt;strong&gt;RTO&lt;/strong&gt; (Recovery Time Objective) es el tiempo maximo aceptable para restaurar el servicio despues de un fallo o desastre. Se mide desde el momento del fallo hasta el momento en que el sistema vuelve a estar operativo.&lt;/p&gt;
&lt;h2 id="como-se-determina" class="relative group"&gt;Como se determina &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-se-determina" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El RTO depende de la estrategia de recuperacion y la infraestructura disponible:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Estrategia&lt;/th&gt;
 &lt;th&gt;RTO tipico&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Restore desde backup en cinta&lt;/td&gt;
 &lt;td&gt;4-12 horas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Restore desde backup en disco&lt;/td&gt;
 &lt;td&gt;1-4 horas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard con switchover manual&lt;/td&gt;
 &lt;td&gt;1-5 minutos&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard con Fast-Start Failover&lt;/td&gt;
 &lt;td&gt;10-30 segundos&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rto-vs-rpo" class="relative group"&gt;RTO vs RPO &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rto-vs-rpo" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RTO&lt;/strong&gt;: cuanto tiempo se necesita para reiniciar (mira hacia adelante)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RPO&lt;/strong&gt;: cuantos datos puedes perder (mira hacia atras)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Son metricas independientes. Un restore desde backup puede tener RTO=2 horas y RPO=24 horas. Un Data Guard sincrono puede tener RTO=30 segundos y RPO=0.&lt;/p&gt;</description></item><item><title>SCAN Listener</title><link>https://ivanluminaria.com/es/glossary/scan-listener/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/scan-listener/</guid><description>&lt;p&gt;El &lt;strong&gt;SCAN Listener&lt;/strong&gt; (Single Client Access Name) es el componente de Oracle RAC que proporciona un unico nombre DNS para acceder al cluster. Las aplicaciones se conectan al SCAN name sin necesidad de conocer los nodos individuales: el listener distribuye automaticamente las conexiones entre los nodos activos.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;SCAN es un nombre DNS que resuelve a tres direcciones IP virtuales (VIP), distribuidas entre los nodos del cluster. Cuando un cliente se conecta al SCAN name, el DNS devuelve una de las tres IPs, y el listener en esa IP redirige la conexion al nodo mas apropiado segun el servicio solicitado y la carga.&lt;/p&gt;</description></item><item><title>SCD</title><link>https://ivanluminaria.com/es/glossary/scd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/scd/</guid><description>&lt;p&gt;&lt;strong&gt;SCD&lt;/strong&gt; (Slowly Changing Dimension) indica un conjunto de tecnicas usadas en data warehouse para gestionar los cambios en los datos de las tablas dimensionales a lo largo del tiempo.&lt;/p&gt;
&lt;h2 id="tipos-principales" class="relative group"&gt;Tipos principales &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#tipos-principales" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tipo 1&lt;/strong&gt;: sobreescritura del valor anterior. No se conserva historia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipo 2&lt;/strong&gt;: insercion de una nueva fila con fechas de validez (fecha inicio, fecha fin). Conserva toda la historia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipo 3&lt;/strong&gt;: adicion de una columna para el valor anterior. Conserva solo el ultimo cambio&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="por-que-es-importante" class="relative group"&gt;Por que es importante &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#por-que-es-importante" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En una base de datos transaccional, cuando un cliente cambia de direccion se actualiza el registro. En un data warehouse esto significaria perder la historia: todas las ventas anteriores aparecerian asociadas a la nueva direccion.&lt;/p&gt;</description></item><item><title>Schema</title><link>https://ivanluminaria.com/es/glossary/schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/schema/</guid><description>&lt;p&gt;Un &lt;strong&gt;Schema&lt;/strong&gt; en una base de datos relacional es un namespace lógico que agrupa objetos como tablas, vistas, funciones y secuencias. Funciona como un contenedor organizativo dentro de una base de datos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En PostgreSQL, el schema predeterminado es &lt;code&gt;public&lt;/code&gt;. Para acceder a un objeto en otro schema se necesita el prefijo: &lt;code&gt;schema1.tabla&lt;/code&gt;. El privilegio &lt;code&gt;USAGE&lt;/code&gt; sobre un schema es prerequisito para acceder a cualquier objeto dentro de él — sin &lt;code&gt;USAGE&lt;/code&gt;, ni siquiera un &lt;code&gt;GRANT SELECT&lt;/code&gt; sobre las tablas funciona.&lt;/p&gt;</description></item><item><title>Scope</title><link>https://ivanluminaria.com/es/glossary/scope/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/scope/</guid><description>&lt;p&gt;El &lt;strong&gt;Scope&lt;/strong&gt; (alcance) de un proyecto define el perímetro de lo que el proyecto debe realizar: funcionalidades incluidas, entregables esperados, restricciones y límites acordados con los stakeholders. Todo lo que está dentro del scope se hace; todo lo que está fuera, no.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El scope se define en las fases iniciales del proyecto a través de documentos como el Statement of Work o el Project Charter. Cualquier solicitud de cambio posterior debe pasar por un proceso formal de gestión de cambios para evaluar su impacto en plazos, costes y recursos.&lt;/p&gt;</description></item><item><title>Scope Creep</title><link>https://ivanluminaria.com/es/glossary/scope-creep/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/scope-creep/</guid><description>&lt;p&gt;El &lt;strong&gt;Scope Creep&lt;/strong&gt; es la expansión progresiva y frecuentemente no controlada del alcance de un proyecto respecto a lo definido inicialmente. Nuevos requisitos, modificaciones a las especificaciones y funcionalidades adicionales se acumulan sin un correspondiente ajuste de presupuesto y plazos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En un proyecto software, el scope creep empieza típicamente con peticiones aparentemente pequeñas: &amp;ldquo;añadamos también este campo&amp;rdquo;, &amp;ldquo;sería útil también esta función&amp;rdquo;. Cada modificación individual parece razonable, pero el efecto acumulativo es devastador. Las especificaciones se convierten en un objetivo móvil, el equipo nunca logra alcanzar una baseline estable, y el proyecto entra en un ciclo infinito de revisiones.&lt;/p&gt;</description></item><item><title>Scrum</title><link>https://ivanluminaria.com/es/glossary/scrum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/scrum/</guid><description>&lt;p&gt;&lt;strong&gt;Scrum&lt;/strong&gt; es un framework ágil para la gestión de proyectos que organiza el trabajo en iteraciones de duración fija llamadas sprints (típicamente 2 semanas). Define tres roles (Product Owner, Scrum Master, Development Team) y cuatro ceremonias (Sprint Planning, Daily Standup, Sprint Review, Sprint Retrospective).&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada sprint comienza con una planificación, continúa con standups diarios para la sincronización, y termina con una review (qué se hizo) y una retrospectiva (cómo mejorar el proceso). El timeboxing es el principio fundamental: cada ceremonia tiene una duración máxima no negociable.&lt;/p&gt;</description></item><item><title>secure-file-priv</title><link>https://ivanluminaria.com/es/glossary/secure-file-priv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/secure-file-priv/</guid><description>&lt;p&gt;&lt;strong&gt;secure-file-priv&lt;/strong&gt; es una variable de sistema MySQL que controla dónde las instrucciones &lt;code&gt;LOAD DATA INFILE&lt;/code&gt;, &lt;code&gt;SELECT INTO OUTFILE&lt;/code&gt; y la función &lt;code&gt;LOAD_FILE()&lt;/code&gt; pueden operar en el filesystem del servidor.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La variable acepta tres valores: una ruta específica (ej. &lt;code&gt;/var/lib/mysql-files/&lt;/code&gt;), que limita las operaciones sobre archivos a ese directorio; una cadena vacía (&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;), que no impone restricciones; o &lt;code&gt;NULL&lt;/code&gt;, que deshabilita completamente las operaciones sobre archivos. El valor solo se puede configurar en el archivo de configuración (&lt;code&gt;my.cnf&lt;/code&gt;) y requiere reinicio del servicio para modificarse — no se puede cambiar en tiempo de ejecución.&lt;/p&gt;</description></item><item><title>Self-parenting</title><link>https://ivanluminaria.com/es/glossary/self-parenting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/self-parenting/</guid><description>&lt;p&gt;El &lt;strong&gt;self-parenting&lt;/strong&gt; es una técnica de dimensional modeling usada para balancear las jerarquías desequilibradas (ragged hierarchies). El principio es simple: una entidad que no tiene un nivel jerárquico superior se convierte en su propio padre a ese nivel.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En una jerarquía de tres niveles Top Group → Group → Client:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un Client sin Group usa su propio nombre/ID como Group&lt;/li&gt;
&lt;li&gt;Un Group sin Top Group usa su propio nombre/ID como Top Group&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El resultado es una tabla dimensional sin NULLs en las columnas jerárquicas, con todos los niveles siempre poblados.&lt;/p&gt;</description></item><item><title>Sequential Scan</title><link>https://ivanluminaria.com/es/glossary/sequential-scan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/sequential-scan/</guid><description>&lt;p&gt;El &lt;strong&gt;Sequential Scan&lt;/strong&gt; (Seq Scan) es la operación con la que PostgreSQL lee una tabla de principio a fin, bloque por bloque, sin utilizar ningún índice. Es el equivalente en PostgreSQL del Full Table Scan de Oracle.&lt;/p&gt;
&lt;h2 id="cuándo-es-normal" class="relative group"&gt;Cuándo es normal &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cu%c3%a1ndo-es-normal" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En tablas pequeñas (unos pocos miles de filas), el sequential scan suele ser la opción más eficiente. Leer una tabla entera en secuencia es más rápido que hacer lookups en un índice cuando la tabla cabe en pocas páginas. El optimizer elige el sequential scan cuando estima que es más económico que un index scan.&lt;/p&gt;</description></item><item><title>SGA</title><link>https://ivanluminaria.com/es/glossary/sga/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/sga/</guid><description>&lt;p&gt;La &lt;strong&gt;SGA&lt;/strong&gt; (System Global Area) es el área de memoria compartida principal de Oracle Database. Contiene las estructuras de datos fundamentales: buffer cache (páginas de datos leídas de disco), shared pool (planes de ejecución y diccionario de datos), redo log buffer y large pool.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El tamaño de la SGA se controla con el parámetro &lt;code&gt;SGA_TARGET&lt;/code&gt; o &lt;code&gt;SGA_MAX_SIZE&lt;/code&gt;. Oracle asigna la SGA al inicio de la instancia en la memoria compartida del sistema operativo. Los parámetros del kernel Linux &lt;code&gt;shmmax&lt;/code&gt; y &lt;code&gt;shmall&lt;/code&gt; deben dimensionarse para permitir la asignación completa de la SGA.&lt;/p&gt;</description></item><item><title>shared_buffers</title><link>https://ivanluminaria.com/es/glossary/shared-buffers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/shared-buffers/</guid><description>&lt;p&gt;&lt;strong&gt;shared_buffers&lt;/strong&gt; es el parámetro que controla el tamaño del área de memoria compartida que PostgreSQL usa como caché para los bloques de datos leídos del disco. Cada vez que PostgreSQL lee una página de datos (8 KB), la conserva en shared_buffers para las lecturas posteriores.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;PostgreSQL asigna la memoria para shared_buffers al arranque del servicio. Todos los procesos backend comparten esta área de memoria. Cuando un proceso necesita un bloque de datos, busca primero en shared_buffers. Si lo encuentra (cache hit), la lectura es inmediata. Si no lo encuentra (cache miss), debe leer del disco — una operación órdenes de magnitud más lenta.&lt;/p&gt;</description></item><item><title>Single-primary</title><link>https://ivanluminaria.com/es/glossary/single-primary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/single-primary/</guid><description>&lt;p&gt;&lt;strong&gt;Single-primary&lt;/strong&gt; es el modo operativo más común de MySQL Group Replication, donde solo un nodo del cluster — el primary — acepta operaciones de escritura. Los demás nodos (secondary) son de solo lectura (&lt;code&gt;read_only=ON&lt;/code&gt;, &lt;code&gt;super_read_only=ON&lt;/code&gt;) y reciben las modificaciones a través de la replicación síncrona del grupo.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El parámetro &lt;code&gt;group_replication_single_primary_mode=ON&lt;/code&gt; activa este modo. El primary es el único nodo con &lt;code&gt;read_only=OFF&lt;/code&gt;. Si el primary se detiene o se vuelve inaccesible, el cluster ejecuta una elección automática y uno de los secondary se convierte en el nuevo primary en pocos segundos.&lt;/p&gt;</description></item><item><title>Smart Working</title><link>https://ivanluminaria.com/es/glossary/smart-working/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/smart-working/</guid><description>&lt;p&gt;El &lt;strong&gt;Smart Working&lt;/strong&gt; (trabajo ágil) es un modelo organizativo que permite al empleado trabajar desde cualquier lugar, combinando días en oficina y días en remoto, con horarios flexibles y evaluación basada en resultados en lugar de presencia.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El modelo típico es 80/20: 80% remoto, 20% presencial. Los días en oficina sirven para workshops, revisiones de proyecto y team building — no para calentar la silla. La empresa proporciona equipamiento para el puesto doméstico (monitor, silla ergonómica, auriculares) y una contribución para la conectividad.&lt;/p&gt;</description></item><item><title>Snapshot (Oracle)</title><link>https://ivanluminaria.com/es/glossary/snapshot-oracle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/snapshot-oracle/</guid><description>&lt;p&gt;&lt;strong&gt;Snapshot&lt;/strong&gt; en Oracle es una captura puntual de las estadisticas de rendimiento de la base de datos almacenada en el repositorio AWR. Por defecto Oracle genera un snapshot cada 60 minutos y los conserva durante 8 dias.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada snapshot registra cientos de metricas: wait events, estadisticas SQL, metricas de memoria (SGA, PGA), I/O por datafile, estadisticas de sistema. La comparacion entre dos snapshots genera el informe AWR, que muestra que cambio entre los dos instantes.&lt;/p&gt;</description></item><item><title>Split-brain</title><link>https://ivanluminaria.com/es/glossary/split-brain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/split-brain/</guid><description>&lt;p&gt;El &lt;strong&gt;split-brain&lt;/strong&gt; es una condición crítica que se produce cuando un cluster de bases de datos se divide en dos o más particiones que no pueden comunicarse entre sí, y cada partición continúa aceptando escrituras independientemente. El resultado son datos divergentes imposibles de reconciliar automáticamente.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En un cluster de 3 nodos, si la red entre el Nodo 1 y los Nodos 2-3 se interrumpe, sin protección del quorum ambas partes podrían seguir aceptando escrituras. Cuando la red se restablece, el cluster se encontraría con dos versiones diferentes de los mismos datos. El mecanismo de quorum previene este escenario: solo la partición con la mayoría de nodos (quorum) puede seguir operando.&lt;/p&gt;</description></item><item><title>SQL Injection</title><link>https://ivanluminaria.com/es/glossary/sql-injection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/sql-injection/</guid><description>&lt;p&gt;La &lt;strong&gt;SQL Injection&lt;/strong&gt; es una de las vulnerabilidades más extendidas y peligrosas en aplicaciones web. Se produce cuando los inputs proporcionados por el usuario se insertan directamente en las queries SQL sin validación ni parametrización, permitiendo a un atacante modificar la lógica de la query.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El atacante inserta fragmentos de código SQL en los campos de input de la aplicación (formularios de login, campos de búsqueda, parámetros URL). Si la aplicación concatena estos inputs directamente en las queries SQL, el código malicioso es ejecutado por la base de datos con los privilegios del usuario aplicativo. En combinación con el privilegio &lt;code&gt;FILE&lt;/code&gt; de MySQL y un &lt;code&gt;secure-file-priv&lt;/code&gt; no configurado, el atacante puede leer archivos del sistema o escribir archivos arbitrarios en el servidor.&lt;/p&gt;</description></item><item><title>SST</title><link>https://ivanluminaria.com/es/glossary/sst/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/sst/</guid><description>&lt;p&gt;&lt;strong&gt;SST&lt;/strong&gt; (State Snapshot Transfer) es el mecanismo por el cual un nodo Galera que se une al cluster (o que ha estado offline demasiado tiempo) recibe una copia completa del dataset entero desde un nodo donante.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando un nodo se une al cluster y el gap de transacciones faltantes supera el tamaño del gcache, el cluster inicia un SST. El nodo donante crea una instantánea completa de la base de datos y la transfiere al nodo receptor. Los métodos disponibles son: &lt;code&gt;mariabackup&lt;/code&gt; (no bloquea al donante), &lt;code&gt;rsync&lt;/code&gt; (rápido pero bloquea al donante en lectura), y &lt;code&gt;mysqldump&lt;/code&gt; (lento y bloqueante).&lt;/p&gt;</description></item><item><title>Stakeholder</title><link>https://ivanluminaria.com/es/glossary/stakeholder/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/stakeholder/</guid><description>&lt;p&gt;Un &lt;strong&gt;Stakeholder&lt;/strong&gt; es cualquier persona, grupo u organización con un interés directo o indirecto en el resultado de un proyecto. Incluye clientes, sponsors, usuarios finales, equipos de desarrollo, management y proveedores externos.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;En el project management, los stakeholders se identifican, clasifican por nivel de influencia e interés, y se gestionan con estrategias de comunicación diferenciadas. Un stakeholder de alta influencia y alto interés (como el CTO) requiere involucramiento activo; uno de baja influencia requiere solo actualizaciones periódicas.&lt;/p&gt;</description></item><item><title>Star schema</title><link>https://ivanluminaria.com/es/glossary/star-schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/star-schema/</guid><description>&lt;p&gt;El &lt;strong&gt;star schema&lt;/strong&gt; (esquema en estrella) es el modelo de datos más utilizado en el data warehouse. Toma su nombre de su forma: una tabla central de hechos (fact table) conectada a múltiples tablas dimensionales que la rodean, como los rayos de una estrella.&lt;/p&gt;
&lt;h2 id="estructura" class="relative group"&gt;Estructura &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#estructura" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fact table&lt;/strong&gt; en el centro: contiene las medidas numéricas y las claves foráneas hacia las dimensiones&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dimension tables&lt;/strong&gt; alrededor: contienen los atributos descriptivos (quién, qué, dónde, cuándo) con estructura desnormalizada&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las dimensiones en un star schema están típicamente desnormalizadas — todos los atributos en una sola tabla plana, sin jerarquías normalizadas. Esto simplifica las consultas y mejora el rendimiento de las agregaciones.&lt;/p&gt;</description></item><item><title>Swappiness</title><link>https://ivanluminaria.com/es/glossary/swappiness/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/swappiness/</guid><description>&lt;p&gt;La &lt;strong&gt;Swappiness&lt;/strong&gt; (&lt;code&gt;vm.swappiness&lt;/code&gt;) es un parámetro del kernel Linux que controla cuán agresivamente el sistema mueve páginas de memoria de la RAM al swap en disco. El valor va de 0 (swap solo en caso extremo) a 100 (swap agresivo). El valor por defecto es 60.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Con el valor por defecto 60, Linux comienza a hacer swap cuando la presión sobre la memoria es aún relativamente baja. Para un servidor de base de datos dedicado, esto es inaceptable: la SGA debe permanecer en RAM, siempre. El valor recomendado para Oracle es 1 — no 0, que deshabilitaría completamente el swap y podría provocar el OOM killer.&lt;/p&gt;</description></item><item><title>Switchover</title><link>https://ivanluminaria.com/es/glossary/switchover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/switchover/</guid><description>&lt;p&gt;El &lt;strong&gt;switchover&lt;/strong&gt; es una operacion planificada de Oracle Data Guard que invierte los roles entre la base de datos primary y la standby. El primary se convierte en standby, el standby se convierte en primary. Ningun dato se pierde, ninguna transaccion falla — es un cambio limpio y controlado.&lt;/p&gt;
&lt;h2 id="switchover-vs-failover" class="relative group"&gt;Switchover vs Failover &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#switchover-vs-failover" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La distincion es fundamental:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Switchover&lt;/th&gt;
 &lt;th&gt;Failover&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Cuando&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Planificado (mantenimiento, migracion)&lt;/td&gt;
 &lt;td&gt;Emergencia (fallo del primary)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Perdida de datos&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Cero&lt;/td&gt;
 &lt;td&gt;Posible (depende del modo)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Reversibilidad&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Si, con otro switchover&lt;/td&gt;
 &lt;td&gt;No, el standby se convierte en primary permanentemente&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Tiempo&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Minutos (tipicamente 1-3)&lt;/td&gt;
 &lt;td&gt;Segundos a minutos&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="como-se-ejecuta" class="relative group"&gt;Como se ejecuta &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-se-ejecuta" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Con Data Guard Broker, el switchover es un unico comando:&lt;/p&gt;</description></item><item><title>System Privilege</title><link>https://ivanluminaria.com/es/glossary/system-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/system-privilege/</guid><description>&lt;p&gt;Un &lt;strong&gt;System Privilege&lt;/strong&gt; en Oracle es una autorización que permite ejecutar operaciones globales en la base de datos, independientemente de un objeto específico. Ejemplos típicos incluyen &lt;code&gt;CREATE TABLE&lt;/code&gt;, &lt;code&gt;CREATE SESSION&lt;/code&gt;, &lt;code&gt;ALTER SYSTEM&lt;/code&gt;, &lt;code&gt;CREATE USER&lt;/code&gt; y &lt;code&gt;DROP ANY TABLE&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Los system privileges se asignan con &lt;code&gt;GRANT&lt;/code&gt; y se revocan con &lt;code&gt;REVOKE&lt;/code&gt;. Pueden asignarse directamente a un usuario o a un rol. El rol predefinido &lt;code&gt;DBA&lt;/code&gt; incluye más de 200 system privileges, razón por la cual asignarlo a usuarios aplicativos es una práctica peligrosa.&lt;/p&gt;</description></item><item><title>systemd</title><link>https://ivanluminaria.com/es/glossary/systemd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/systemd/</guid><description>&lt;p&gt;&lt;strong&gt;systemd&lt;/strong&gt; es el sistema de inicio y gestor de servicios predeterminado en las distribuciones Linux modernas (CentOS/RHEL 7+, Ubuntu 16.04+, Debian 8+). En el ámbito de bases de datos, es el mecanismo que arranca, detiene y monitoriza las instancias MySQL o MariaDB.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada servicio está definido por un archivo unit (ej. &lt;code&gt;mysqld.service&lt;/code&gt;) que especifica el comando de arranque, el archivo de configuración, las dependencias y el comportamiento en caso de crash. En un setup multi-instancia, se crean unit files separados para cada instancia (ej. &lt;code&gt;mysqld-app2.service&lt;/code&gt;, &lt;code&gt;mysqld-reporting.service&lt;/code&gt;), cada uno con su propio &lt;code&gt;--defaults-file&lt;/code&gt; apuntando a un &lt;code&gt;my.cnf&lt;/code&gt; diferente.&lt;/p&gt;</description></item><item><title>Tablespace</title><link>https://ivanluminaria.com/es/glossary/tablespace/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/tablespace/</guid><description>&lt;p&gt;Un &lt;strong&gt;Tablespace&lt;/strong&gt; es la unidad lógica de organización del almacenamiento en Oracle Database. Cada tablespace está compuesto por uno o más datafiles físicos en disco, y cada objeto de la base de datos (tabla, índice, partición) reside en un tablespace.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle separa la gestión lógica (tablespace) de la física (datafile). Un DBA puede crear tablespaces dedicados para propósitos diferentes: uno para datos activos, uno para índices, uno para archivo. Esto permite distribuir la carga de I/O en discos diferentes y aplicar políticas de gestión diferenciadas (ej. read-only para datos históricos).&lt;/p&gt;</description></item><item><title>THP</title><link>https://ivanluminaria.com/es/glossary/thp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/thp/</guid><description>&lt;p&gt;Las &lt;strong&gt;THP&lt;/strong&gt; (Transparent Huge Pages) son una función del kernel Linux que promueve automáticamente las páginas de memoria de 4 KB a 2 MB en segundo plano, sin configuración explícita. A diferencia de las Huge Pages estáticas, son gestionadas por el proceso del kernel &lt;code&gt;khugepaged&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando están activas (por defecto &lt;code&gt;always&lt;/code&gt;), el kernel intenta compactar las páginas normales en páginas grandes en segundo plano. El proceso &lt;code&gt;khugepaged&lt;/code&gt; trabaja continuamente para encontrar y unir grupos de páginas contiguas, causando micro-congelamientos impredecibles durante las operaciones de compactación.&lt;/p&gt;</description></item><item><title>Timeboxing</title><link>https://ivanluminaria.com/es/glossary/timeboxing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/timeboxing/</guid><description>&lt;p&gt;El &lt;strong&gt;Timeboxing&lt;/strong&gt; es una técnica de gestión del tiempo que consiste en asignar un intervalo temporal fijo y no negociable a una actividad. Cuando el tiempo se acaba, la actividad se cierra — independientemente de si se ha completado o no.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se define la duración máxima (15 minutos para un standup, 1 hora para una reunión de diseño, 2 semanas para un sprint) y se respeta la restricción. El timebox fuerza a las personas a concentrarse en lo esencial, evitando discusiones infinitas y perfeccionismo paralizante.&lt;/p&gt;</description></item><item><title>Transport Lag</title><link>https://ivanluminaria.com/es/glossary/transport-lag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/transport-lag/</guid><description>&lt;p&gt;El &lt;strong&gt;transport lag&lt;/strong&gt; es el retardo entre el momento en que la base de datos primary genera un redo log y el momento en que ese redo log es recibido por la base de datos standby en una configuracion Oracle Data Guard. Es uno de los indicadores mas importantes para evaluar la salud de la replicacion.&lt;/p&gt;
&lt;h2 id="como-se-mide" class="relative group"&gt;Como se mide &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-se-mide" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El transport lag se monitorea con una consulta sobre la vista &lt;code&gt;V$DATAGUARD_STATS&lt;/code&gt; o mediante Data Guard Broker:&lt;/p&gt;</description></item><item><title>Unified Audit</title><link>https://ivanluminaria.com/es/glossary/unified-audit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/unified-audit/</guid><description>&lt;p&gt;&lt;strong&gt;Unified Audit&lt;/strong&gt; (Oracle Unified Auditing) es el sistema de auditoría centralizado introducido en Oracle Database 12c que sustituye los mecanismos de auditoría tradicionales con una única infraestructura unificada. Todos los eventos de auditoría convergen en la vista &lt;code&gt;UNIFIED_AUDIT_TRAIL&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Unified Audit se basa en &lt;strong&gt;audit policies&lt;/strong&gt;: reglas declarativas que especifican qué acciones monitorizar (DDL, DML, logins, operaciones administrativas). Las policies se crean con &lt;code&gt;CREATE AUDIT POLICY&lt;/code&gt;, se activan con &lt;code&gt;ALTER AUDIT POLICY ... ENABLE&lt;/code&gt; y pueden aplicarse a usuarios específicos o globalmente. Los registros de auditoría se escriben en una cola interna y luego se persisten en la tabla de sistema.&lt;/p&gt;</description></item><item><title>Unix Socket</title><link>https://ivanluminaria.com/es/glossary/unix-socket/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/unix-socket/</guid><description>&lt;p&gt;Un &lt;strong&gt;Unix Socket&lt;/strong&gt; (o socket de dominio Unix) es un endpoint de comunicación que permite a dos procesos en el mismo sistema operativo intercambiar datos sin pasar por la pila de red TCP/IP. En MySQL, es el método de conexión predeterminado cuando te conectas a &lt;code&gt;localhost&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando un cliente MySQL se conecta especificando &lt;code&gt;-h localhost&lt;/code&gt;, el cliente no usa TCP. Usa el archivo socket Unix (típicamente &lt;code&gt;/var/run/mysqld/mysqld.sock&lt;/code&gt;) para comunicarse directamente con el proceso del servidor MySQL. Esta comunicación ocurre enteramente en el kernel, sin overhead de red, y es más rápida que una conexión TCP incluso en el mismo host.&lt;/p&gt;</description></item><item><title>VACUUM</title><link>https://ivanluminaria.com/es/glossary/vacuum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/vacuum/</guid><description>&lt;p&gt;&lt;strong&gt;VACUUM&lt;/strong&gt; es el comando PostgreSQL que recupera el espacio ocupado por los dead tuples (filas muertas) y lo pone disponible para nuevas inserciones. No devuelve espacio al sistema operativo, no reorganiza la tabla y no compacta nada — marca las páginas como reescribibles.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;VACUUM tabla&lt;/code&gt; escanea la tabla, identifica los dead tuples que ya no son visibles para ninguna transacción y marca su espacio como reutilizable. Es una operación ligera que no bloquea las escrituras y puede ejecutarse en paralelo con las queries normales. &lt;code&gt;VACUUM FULL&lt;/code&gt; en cambio reescribe físicamente toda la tabla con un lock exclusivo — para usar muy raramente y solo en emergencias.&lt;/p&gt;</description></item><item><title>Vendor Lock-in</title><link>https://ivanluminaria.com/es/glossary/vendor-lock-in/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/vendor-lock-in/</guid><description>&lt;p&gt;El &lt;strong&gt;Vendor Lock-in&lt;/strong&gt; es la situación en la que una empresa se vuelve dependiente de un proveedor externo hasta el punto de que cambiarlo resulta extremadamente costoso o técnicamente complejo. En el contexto IT, se produce cuando el código, la arquitectura o el conocimiento del sistema están en manos del proveedor y no del cliente.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;El lock-in se instaura gradualmente: el proveedor escribe el código con sus propias convenciones, usa tecnologías propietarias o no documentadas, y el equipo interno no participa en el desarrollo. Cuando el proveedor se va — por decisión propia o por despido — se lleva el know-how consigo. El cliente se queda con un software que no entiende, no sabe mantener y no puede evolucionar sin volver a contratar al mismo proveedor o empezar de cero.&lt;/p&gt;</description></item><item><title>Version Control</title><link>https://ivanluminaria.com/es/glossary/version-control/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/version-control/</guid><description>&lt;p&gt;El &lt;strong&gt;Version Control&lt;/strong&gt; (control de versiones) es un sistema que registra cada cambio en los archivos de un proyecto, manteniendo un historial completo de quién cambió qué, cuándo y por qué. Git es el sistema de control de versiones más usado en el mundo.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cada cambio se registra como &amp;ldquo;commit&amp;rdquo; con un mensaje descriptivo, un autor y un timestamp. El sistema mantiene toda la historia del proyecto: es posible volver a cualquier versión anterior, comparar versiones diferentes y entender la evolución del código en el tiempo. Con Git, cada desarrollador tiene una copia completa de la historia en su propio ordenador.&lt;/p&gt;</description></item><item><title>Wait Event</title><link>https://ivanluminaria.com/es/glossary/wait-event/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/wait-event/</guid><description>&lt;p&gt;&lt;strong&gt;Wait Event&lt;/strong&gt; es un indicador diagnostico de Oracle Database que identifica por que una sesion esta esperando en lugar de trabajar activamente. Cada vez que un proceso no puede continuar — porque espera un bloque del disco, un lock, una respuesta de red o un turno de CPU — Oracle registra un wait event especifico.&lt;/p&gt;
&lt;h2 id="los-mas-comunes" class="relative group"&gt;Los mas comunes &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#los-mas-comunes" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Wait Event&lt;/th&gt;
 &lt;th&gt;Significado&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db file sequential read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lectura de un solo bloque — tipica de acceso por indice&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db file scattered read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lectura multi-bloque — tipica de full table scan&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;log file sync&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Espera del commit en redo log&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;enq: TX - row lock contention&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Conflicto de lock de fila&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;direct path read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lectura directa (sin pasar por buffer cache)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="para-que-sirven" class="relative group"&gt;Para que sirven &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#para-que-sirven" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Los wait events son la base de la metodologia diagnostica de Oracle. Analizando que eventos dominan el DB time (mediante AWR o ASH) se identifica inmediatamente la naturaleza del problema: I/O, contention, CPU o red.&lt;/p&gt;</description></item><item><title>WSREP</title><link>https://ivanluminaria.com/es/glossary/wsrep/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/wsrep/</guid><description>&lt;p&gt;&lt;strong&gt;WSREP&lt;/strong&gt; (Write Set Replication) es la API y el protocolo que Galera Cluster utiliza para la replicación síncrona multi-master. Cada transacción se captura como &amp;ldquo;write set&amp;rdquo; (conjunto de cambios a nivel de fila) y se replica en todos los nodos del cluster antes del commit.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando un nodo ejecuta una transacción, WSREP la intercepta en el momento del commit, la empaqueta como write set y la envía a todos los nodos del cluster a través del protocolo de comunicación de grupo. Cada nodo ejecuta un proceso de &lt;strong&gt;certification&lt;/strong&gt;: verifica que la transacción no entre en conflicto con otras transacciones concurrentes. Si la certification tiene éxito, todos los nodos aplican la transacción. Si falla, la transacción se revierte en el nodo que la originó.&lt;/p&gt;</description></item><item><title>Yes-And</title><link>https://ivanluminaria.com/es/glossary/yes-and/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/yes-and/</guid><description>&lt;p&gt;&lt;strong&gt;Yes-And&lt;/strong&gt; (Sí-Y) es una técnica de comunicación originaria del teatro de improvisación, aplicada al project management para transformar las discusiones conflictivas en conversaciones constructivas. El principio es simple: en lugar de negar la propuesta del interlocutor con &amp;ldquo;No, pero&amp;hellip;&amp;rdquo;, se acoge con &amp;ldquo;Sí, y&amp;hellip;&amp;rdquo; añadiendo la propia contribución.&lt;/p&gt;
&lt;h2 id="cómo-funciona" class="relative group"&gt;Cómo funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%b3mo-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cuando alguien propone una idea, la respuesta &amp;ldquo;No&amp;rdquo; activa una reacción defensiva y bloquea la conversación. La respuesta &amp;ldquo;Sí, y&amp;hellip;&amp;rdquo; reconoce la validez de la propuesta y la extiende, manteniendo el diálogo abierto. No significa estar de acuerdo con todo — significa construir sobre la propuesta del otro antes de redirigirla.&lt;/p&gt;</description></item><item><title>ZDM</title><link>https://ivanluminaria.com/es/glossary/zdm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/es/glossary/zdm/</guid><description>&lt;p&gt;&lt;strong&gt;ZDM&lt;/strong&gt; (Zero Downtime Migration) es la herramienta que Oracle proporciona para automatizar las migraciones de bases de datos Oracle hacia OCI (Oracle Cloud Infrastructure) o hacia bases de datos on-premises de version superior. El nombre es algo optimista — el downtime no es cero, pero se reduce al minimo.&lt;/p&gt;
&lt;h2 id="como-funciona" class="relative group"&gt;Como funciona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#como-funciona" aria-label="Ancla"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;ZDM es esencialmente un orquestador que combina tecnologias Oracle existentes bajo un unico flujo automatizado. Soporta dos modalidades:&lt;/p&gt;</description></item></channel></rss>