Bases de datos estáticas y dinámicas: en qué se diferencian
Una base de datos estática se llena una vez y después casi solo se consulta; una dinámica recibe cambios a toda hora, como las ventas o los pagos. Lo que las separa no es el tamaño, sino cada cuánto se escribe en ellas. Aquí encontrará una tabla con ocho diferencias, ejemplos colombianos y la forma de agregar datos nuevos sin tocar los viejos.
Última actualización: 2026-11-02
Contenido de esta página
- ¿Qué diferencia hay entre una base de datos estática y una dinámica?
- ¿Qué es una base de datos estática?
- ¿Qué es una base de datos dinámica?
- ¿Por qué casi ninguna base de datos es 100 % estática?
- ¿Cómo saber si su base de datos es estática o dinámica?
- Estática o dinámica: el error está en la palabra «nunca»
Historia real. El catálogo de microdatos del DANE, el Departamento Administrativo Nacional de Estadística, guarda dos fichas que conviene mirar juntas. Los microdatos son las respuestas de una encuesta o un censo, registro por registro.
La primera ficha es la del Censo Nacional de Población y Vivienda de 2018. Ofrece 33 archivos para descargar, uno por cada departamento y uno para Bogotá [1]. Todos tienen fecha de octubre de 2019 [1].
Al consultarla el 2 de noviembre de 2026, siete años después, la ficha seguía ofreciendo esos mismos archivos con sus fechas originales.
La segunda es la de la Gran Encuesta Integrada de Hogares de 2026, la encuesta con la que el DANE mide el empleo. Ese mismo día tenía ocho archivos, uno por mes, de enero a agosto [2]. El de enero tiene fecha del 16 de marzo; el de agosto, del 13 de octubre [2]. A juzgar por las fechas de esos archivos, en lo que va del año el catálogo ha sumado uno por mes.
Las dos fichas son del mismo productor y cuelgan del mismo catálogo. Lo que las separa es otra cosa: según las fechas de sus archivos, en una no se ha vuelto a escribir desde 2019 y en la otra se escribe cada mes.
Esa es, en pequeño, la diferencia entre una base de datos estática y una dinámica. Y la encuesta, que crece un archivo por mes sin tocar los anteriores, muestra por qué la frontera entre las dos no es tan nítida.

¿Qué diferencia hay entre una base de datos estática y una dinámica?
Una base de datos estática se escribe una vez y se lee muchas: sus datos describen algo que ya terminó. Una base de datos dinámica, en cambio, recibe escrituras todo el tiempo, porque registra algo que sigue pasando. Escribir aquí significa agregar, cambiar o borrar datos; leer significa consultarlos sin modificarlos.
La regla de clasificación es la frecuencia de escritura, no el tamaño. Una lista de 50 productos puede ser dinámica si su precio cambia cada hora. El censo de todo un país es estático si nadie vuelve a tocarlo.
La tabla compara las dos en ocho aspectos. Las filas son una síntesis propia; donde hay un número entre corchetes, la documentación citada respalda esa celda.
| Aspecto | Base de datos estática | Base de datos dinámica |
|---|---|---|
| Propósito | Conservar y consultar datos de algo que ya se cerró: un censo, un año contable, un catálogo | Registrar lo que pasa mientras pasa: ventas, pagos, matrículas |
| Operaciones | Casi solo lecturas; las escrituras llegan en cargas programadas | Lecturas y escrituras constantes; varias escrituras se agrupan en una transacción, una operación de todo o nada [5] |
| Usuarios | Muchas personas consultan; escribe solo el proceso de carga | Muchas personas escriben a la vez, y ninguna debe ver los cambios a medias de otra [5] |
| Respaldo | Una copia de seguridad después de cada carga guarda el estado completo | Copia base más un archivo continuo de cambios, para restaurar la base al estado de cualquier momento posterior a la copia base [8] |
| Índices | Caben muchos índices (estructuras que aceleran las búsquedas): su costo de mantenimiento se paga solo al cargar | Cada índice se debe mantener al día en cada escritura, y eso agrega trabajo [7] |
| Costo de operación | Menor: no hay escrituras que coordinar. El gestor SQLite, por ejemplo, puede abrir un archivo marcado como inmodificable sin bloqueos, es decir, sin vigilar quién más lo usa [10] | Mayor: servidor siempre disponible, respaldo continuo y alguien que lo administre |
| Riesgo típico | Que la gente consulte datos viejos creyendo que están al día. Y si un archivo marcado como inmodificable cambia, las consultas pueden dar resultados incorrectos [10] | Que una operación quede a medias, como un pago descontado de una cuenta y no abonado en la otra [5] |
| Ejemplo | Los microdatos del censo de 2018 del DANE [1] | La base de pagos de un banco, un inventario, la matrícula de una universidad |
El eje de esta comparación es la escritura. Otra pregunta distinta es para qué se consulta una base: anotar operaciones del día o analizar años de historia. Esa es la diferencia entre las bases transaccionales (OLTP, sus siglas en inglés) y las analíticas (OLAP), un tema aparte. Cómo encaja la variabilidad entre los demás criterios de clasificación está en la guía de tipos de bases de datos.
¿Qué es una base de datos estática?
Una base de datos estática es la que guarda datos que no se modifican después de cargarlos: se consultan, se cruzan y se descargan, pero no se corrigen a diario. Los datos estáticos son, entonces, los que describen un momento cerrado. El censo de 2018 no cambia si alguien se muda en 2026.
Que sea estática no quiere decir que sea pequeña ni vieja. Quiere decir que su contenido está fijado y que se protege de cambios accidentales.
Ejemplos de bases de datos estáticas
- Los históricos censales del DANE. El universo del censo de 2018 son todas las viviendas, hogares y personas residentes habituales en el territorio colombiano [15]. Según las fechas que muestra la ficha, sus archivos por departamento son de octubre de 2019, y desde entonces se descargan [1].
- Los catálogos de referencia. Son listas de códigos que otras bases usan para clasificar. Un ejemplo es la CIIU, la clasificación de actividades económicas que el DANE publica para reunir y presentar estadísticas según la actividad de cada empresa [3].
- Los data marts de solo lectura. Un almacén de datos es un depósito que reúne datos de muchas fuentes para analizarlos. Oracle define el data mart como una forma simple de almacén de datos, enfocada en un solo tema o línea de negocio, como ventas o finanzas [4]. Cuando el equipo lo usa solo para consultar entre una carga y la siguiente, se comporta como una base estática.
- Los archivos de consulta. El cierre contable de un año o el registro de notas de una cohorte que ya se graduó: datos que se guardan para responder preguntas, no para seguir anotando.
¿Qué es una base de datos dinámica?
Una base de datos dinámica es la que cambia mientras se usa: cada venta, cada pago o cada inscripción agrega o modifica registros. Los datos dinámicos son los que describen algo que todavía está en curso. El saldo de una cuenta vale solo hasta el próximo movimiento.
Su exigencia principal es que ningún cambio quede a medias. La documentación de PostgreSQL, un gestor de bases de datos de código abierto, lo explica con un pago entre dos cuentas de un banco [5]. Si el sistema falla a mitad de camino, nadie debería recibir un dinero que no se le descontó a otro [5]. La transacción resuelve eso: o se hacen todas las actualizaciones, o no se hace ninguna [5].
Ejemplos de bases de datos dinámicas
- El sistema transaccional de un banco. Registra retiros, pagos y envíos de dinero entre cuentas. Cada movimiento cambia al menos un saldo, y una transacción confirmada debe quedar guardada aunque el servidor se caiga poco después [5].
- El inventario de un negocio. Cada venta descuenta existencias y cada compra las suma. Si dos vendedores despachan la última unidad al mismo tiempo, la base tiene que decidir cuál venta vale.
- La matrícula de una universidad. Durante las semanas de inscripción, los estudiantes toman y sueltan cupos de los mismos cursos. Cada clic cambia un cupo, y dos personas no pueden quedarse con el mismo.
Qué garantías debe ofrecer una base para aguantar ese ritmo, como la integridad o la concurrencia, se explica en características de una base de datos. Y si busca casos de la vida diaria, hay una guía de ejemplos de bases de datos.
¿Por qué casi ninguna base de datos es 100 % estática?
Casi ninguna base es estática para siempre, porque casi todo lo que vale la pena consultar recibe datos nuevos de vez en cuando. La diferencia práctica está en cómo llegan esos datos: en lotes programados y sin tocar lo anterior, o a toda hora y sobre los mismos registros.
La encuesta de hogares del DANE lo muestra con claridad. El archivo de enero no se reemplaza cuando llega el de febrero: se agrega uno nuevo al lado [2]. Eso se llama carga incremental, es decir, cargar solo lo nuevo en vez de volver a cargar todo. En inglés se le dice append, que significa añadir al final.
Hasta los catálogos de referencia cambian. La versión colombiana de la CIIU en su revisión 4 tuvo actualizaciones en 2020, 2021 y 2022 [3].
Luego, en 2026, una resolución del DANE estableció la revisión 5 y derogó la resolución de 2022 [3]. Un catálogo puede pasar años quieto y aun así necesitar una forma ordenada de recibir su siguiente versión.
Carga incremental y partición por fecha
Una forma de ordenar la carga incremental es partir los datos por fecha. Una partición es un trozo de una tabla grande, guardado por separado; por ejemplo, un trozo por mes. El manual de PostgreSQL 18 explica que las cargas y los borrados masivos se pueden hacer agregando o quitando particiones, si el diseño lo prevé [6].
También describe una ventaja para quien carga datos. Se puede crear la tabla del mes aparte y unirla a la tabla grande después. Según el manual, eso «permite que los datos nuevos se carguen, se revisen y se transformen antes de que aparezcan en la tabla particionada» [6].
Esa es la idea de fondo: lo viejo queda quieto y lo nuevo entra por una puerta controlada. Las rutinas que hacen esa carga cada noche o cada mes son materia de la ingeniería de datos.
Ejemplo en SQLite: un histórico de solo lectura junto a un inventario que cambia
Este ejemplo en Python, un lenguaje de programación muy usado con datos, pone las dos clases de base lado a lado. Python trae en su biblioteca estándar el módulo sqlite3, que conecta con SQLite, un gestor de bases de datos [16]. SQLite permite abrir una base en solo lectura con el parámetro mode=ro [10]. También permite adjuntar una base a otra conexión con la orden ATTACH [11]. Si la conexión acepta direcciones en forma de URI, un formato parecido al de una página web, el archivo adjunto puede llevar ese mismo parámetro [11] [16].
# Una base estática y una dinámica, lado a lado.
# Probado con Python 3.11 y SQLite 3.53.1 (módulo sqlite3 de la biblioteca estándar).
import sqlite3, os
def cargar_una_vez(archivo, filas):
"""Crea un archivo histórico, lo llena y lo cierra. No se vuelve a escribir."""
if os.path.exists(archivo):
os.remove(archivo)
con = sqlite3.connect(archivo)
con.execute("CREATE TABLE ventas (periodo TEXT, producto TEXT, unidades INTEGER)")
con.executemany("INSERT INTO ventas VALUES (?, ?, ?)", filas)
con.commit()
con.close()
# 1. Histórico estático: el cierre de diciembre de 2025.
cargar_una_vez("ventas_2025_12.db", [("2025-12", "panela", 150)])
# 2. Base dinámica: el inventario cambia con cada venta.
if os.path.exists("inventario.db"):
os.remove("inventario.db")
inv = sqlite3.connect("inventario.db", uri=True) # uri=True permite adjuntar con mode=ro
inv.execute("CREATE TABLE existencias (producto TEXT PRIMARY KEY, unidades INTEGER)")
inv.execute("INSERT INTO existencias VALUES ('panela', 40)")
inv.execute("UPDATE existencias SET unidades = unidades - 3 WHERE producto = 'panela'")
inv.commit()
print("Inventario hoy:", inv.execute("SELECT * FROM existencias").fetchall())
# 3. El histórico se adjunta en modo de solo lectura (mode=ro) y no acepta cambios.
inv.execute("ATTACH DATABASE 'file:ventas_2025_12.db?mode=ro' AS dic")
try:
inv.execute("UPDATE dic.ventas SET unidades = 0")
except sqlite3.OperationalError as error:
print("Error:", error)
# 4. Carga incremental: el mes nuevo llega en un archivo nuevo; el viejo no se toca.
cargar_una_vez("ventas_2026_01.db", [("2026-01", "panela", 135)])
inv.execute("ATTACH DATABASE 'file:ventas_2026_01.db?mode=ro' AS ene")
consulta = "SELECT * FROM dic.ventas UNION ALL SELECT * FROM ene.ventas ORDER BY periodo"
print("Histórico completo:", inv.execute(consulta).fetchall())
Al correrlo, el inventario baja de 40 a 37 unidades: la base dinámica aceptó la venta. El intento de poner en cero el histórico de diciembre falla con el mensaje «attempt to write a readonly database». Al final, la consulta une los dos meses sin haber reescrito el primero.
Es la misma lógica de los archivos mensuales del DANE, en miniatura. La versión de SQLite usada, la 3.53.1, se publicó el 5 de mayo de 2026 [12].
¿Cómo saber si su base de datos es estática o dinámica?
Para clasificar una base que ya existe sirven cuatro preguntas. Ninguna depende del tamaño:
- ¿Quién escribe en ella? Si solo escribe un proceso de carga programado, tiende a ser estática. Si escriben personas o aplicaciones a cualquier hora, es dinámica.
- ¿Qué pasa con un dato viejo cuando llega uno nuevo? Si el nuevo se agrega al lado, como un mes más, hay carga incremental. Si el nuevo reemplaza al viejo, como un saldo, es dinámica.
- ¿Se podría abrir en solo lectura sin que nadie se queje? En PostgreSQL existe un ajuste que hace que cada transacción nueva sea de solo lectura por defecto [9]. Si encenderlo no rompería ninguna tarea del día y nada le escribe por detrás, como una replicación desde otro servidor, la base se comporta como estática.
- ¿Qué le dolería más: un dato viejo o un dato a medias? Lo primero es el riesgo de la estática; lo segundo, el de la dinámica.
La última pregunta toca la calidad del dato. La norma ISO/IEC 25012 de 2008 define un modelo general de calidad para datos guardados en sistemas de cómputo [13]. Agrupa sus atributos en quince características, y advierte que su importancia varía según los distintos interesados [13]. Una base estática y una dinámica sirven a interesados distintos, así que vale la pena preguntarse cuáles de esas características pesan más en cada una.
Estática o dinámica: el error está en la palabra «nunca»
En mi experiencia, el problema rara vez es clasificar mal una base. El problema es creer que «estática» significa que nunca se va a escribir en ella.
Quien piensa así no diseña la puerta de entrada. Un día llega la revisión 5 de un catálogo, o el mes nueve de una encuesta, y alguien termina editando a mano un archivo que todos daban por intocable.
Lo prefiero al revés: tratar toda base estática como una base dinámica muy lenta. Que tenga su modo de solo lectura para el día a día y una carga incremental documentada para el día que lleguen datos nuevos. El DANE lo hace con un archivo por mes; una pyme de Bucaramanga lo puede hacer con un archivo por cierre contable.
Preguntas frecuentes
¿Una base de datos estática puede tener índices? Sí, y puede permitirse más que una dinámica. En PostgreSQL, cada índice debe mantenerse sincronizado con su tabla, y eso suma trabajo a cada inserción o actualización [7]. En una base que casi no se escribe, ese costo se paga solo durante la carga, mientras que las consultas sí aprovechan la búsqueda rápida.
¿Es lo mismo una estructura de datos estática que una base de datos estática? No. En programación, una estructura de datos es la forma en que un programa ordena valores en memoria mientras corre. El diccionario de algoritmos del NIST, el instituto de normas técnicas de Estados Unidos, define el arreglo dinámico como un arreglo cuyo tamaño puede cambiar con el tiempo [14]. Ahí «dinámico» habla del tamaño en memoria; en una base de datos habla de cada cuánto se escribe.
¿Qué pasa si alguien intenta escribir en una base de solo lectura? El gestor lo rechaza. En el ejemplo de SQLite de esta página, la orden termina en error y el archivo queda intacto. En PostgreSQL, una transacción de solo lectura no puede modificar tablas permanentes [9].
¿Un data mart es siempre una base estática? No siempre. Oracle señala que, una vez conectadas las fuentes, los equipos pueden obtener datos en vivo del data mart cuando los necesiten [4]. Si se recarga a toda hora, se comporta como dinámica; si se recarga cada noche o cada mes y entre cargas solo se consulta, se comporta como estática.
¿Las bases de datos dinámicas tienen que ser relacionales? No. Estática o dinámica describe cuánto se escribe, no cómo se organizan los datos. Una base de tablas, una de documentos o una de grafos puede ser cualquiera de las dos. Por eso conviene revisar cada criterio por separado, como se propone en la guía de tipos de bases de datos.
Referencias
Las citas en otro idioma son traducción propia.
- Departamento Administrativo Nacional de Estadística (DANE). Censo Nacional de Población y Vivienda – CNPV – 2018, ficha del catálogo central de microdatos, sección «Obtener Microdatos» — 33 archivos de datos, uno por departamento y uno para Bogotá (de «05_Antioquia.zip» a «99_Vichada.zip»), con fechas 10-08-2019 y 10-16-2019 (octubre de 2019). DANE: microdatos del CNPV 2018 — Consultada: 2026-11-02.
- Departamento Administrativo Nacional de Estadística (DANE). Gran Encuesta Integrada de Hogares – GEIH – 2026, ficha del catálogo central de microdatos, sección «Obtener Microdatos» — ocho archivos, de «Enero 2026.zip» (fecha 16/03/2026) a «Agosto 2026.zip» (fecha 13/10/2026), uno por mes. DANE: microdatos de la GEIH 2026 — Consultada: 2026-11-02.
- Departamento Administrativo Nacional de Estadística (DANE). Clasificación Industrial Internacional Uniforme de todas las Actividades Económicas (CIIU) — clasificación de actividades económicas cuyo propósito es ofrecer categorías para reunir, analizar y presentar estadísticas; la CIIU Rev. 4 A.C. fue modificada por las resoluciones 0549 de 2020, 1505 de 2021 y 2306 de 2022; la Resolución 992 de 2026 derogó la 2306 de 2022 y estableció la CIIU Rev. 5 A.C. DANE: CIIU — Consultada: 2026-11-02.
- Oracle. What Is a Data Mart? — «A data mart is a simple form of a data warehouse that is focused on a single subject or line of business, such as sales, finance, or marketing»; una vez establecidas las conexiones, los equipos pueden obtener datos en vivo del data mart cuando los necesiten. Oracle: What Is a Data Mart? — Consultada: 2026-11-02.
- The PostgreSQL Global Development Group. PostgreSQL 18 Documentation, sección 3.4 «Transactions» — la transacción agrupa varios pasos en una operación de todo o nada; sus estados intermedios no son visibles para otras transacciones concurrentes; ejemplo de un pago entre dos cuentas de un banco; una transacción confirmada queda registrada en almacenamiento permanente y no se pierde aunque haya una caída poco después. PostgreSQL: Documentation 18, Transactions — Consultada: 2026-11-02.
- The PostgreSQL Global Development Group. PostgreSQL 18 Documentation, sección 5.12 «Table Partitioning» — «Bulk loads and deletes can be accomplished by adding or removing partitions, if the usage pattern is accounted for in the partitioning design»; crear la tabla aparte y adjuntarla después «allows new data to be loaded, checked, and transformed prior to it appearing in the partitioned table». PostgreSQL: Documentation 18, Table Partitioning — Consultada: 2026-11-02.
- The PostgreSQL Global Development Group. PostgreSQL 18 Documentation, sección 11.1 «Indexes: Introduction» — después de crear un índice, el sistema debe mantenerlo sincronizado con la tabla, lo que agrega carga a las operaciones de manipulación de datos. PostgreSQL: Documentation 18, Indexes Introduction — Consultada: 2026-11-02.
- The PostgreSQL Global Development Group. PostgreSQL 18 Documentation, sección 25.3 «Continuous Archiving and Point-in-Time Recovery (PITR)» — el respaldo continuo se logra archivando los archivos de registro de cambios (WAL); permite restaurar la base a su estado en cualquier momento desde que se tomó la copia base. PostgreSQL: Documentation 18, Continuous Archiving and PITR — Consultada: 2026-11-02.
- The PostgreSQL Global Development Group. PostgreSQL 18 Documentation, sección 19.11 «Client Connection Defaults», parámetro default_transaction_read_only — una transacción SQL de solo lectura no puede alterar tablas no temporales; el parámetro controla el estado de solo lectura por defecto de cada transacción nueva; por defecto está apagado (lectura y escritura). PostgreSQL: Documentation 18, Client Connection Defaults — Consultada: 2026-11-02.
- SQLite. Uniform Resource Identifiers — la base se puede abrir en solo lectura con el parámetro «mode=ro»; con «immutable=1», SQLite abre el archivo en solo lectura y omite todo bloqueo de archivos y detección de cambios; si un archivo declarado inmutable cambia, SQLite puede devolver resultados incorrectos. SQLite: Uniform Resource Identifiers — Consultada: 2026-11-02.
- SQLite. ATTACH DATABASE — el nombre de archivo de la base adjunta sigue la misma semántica que el de sqlite3_open() y puede ser un URI si el procesamiento de URI está habilitado en la conexión. SQLite: ATTACH DATABASE — Consultada: 2026-11-02.
- SQLite. Release History — versión 3.53.1 publicada el 2026-05-05. SQLite: Release History — Consultada: 2026-11-02.
- Organización Internacional de Normalización (ISO). ISO/IEC 25012:2008 Software engineering — Software product Quality Requirements and Evaluation (SQuaRE) — Data quality model (ficha del catálogo) — publicada en diciembre de 2008, confirmada; define un modelo general de calidad para datos guardados en formato estructurado dentro de un sistema de cómputo; clasifica los atributos de calidad en quince características desde dos puntos de vista, inherente y dependiente del sistema; la importancia de cada característica varía según los interesados. ISO: ficha de ISO/IEC 25012:2008 — Consultada: 2026-11-02.
- Patrick Rodgers. dynamic array, en Paul E. Black (ed.), Dictionary of Algorithms and Data Structures, National Institute of Standards and Technology (NIST) (entrada modificada el 17 de diciembre de 2004) — «An array whose size may change over time». NIST: dynamic array — Consultada: 2026-11-02.
- Departamento Administrativo Nacional de Estadística (DANE). Censo Nacional de Población y Vivienda – CNPV – 2018, ficha del catálogo central de microdatos, sección «Identificación» y «Alcance» — universo: todas las viviendas, hogares y personas residentes habituales en el territorio colombiano, conformado por 32 departamentos y el Distrito Capital. DANE: ficha del CNPV 2018 — Consultada: 2026-11-02.
- Python Software Foundation. sqlite3 — DB-API 2.0 interface for SQLite databases, documentación de Python 3.11 (3.11.18) — parámetro uri de connect(): si es True, la base se interpreta como un URI con ruta de archivo y una cadena de consulta que pasa parámetros a SQLite; ejemplo de conexión con «mode=ro» que termina en «attempt to write a readonly database». Python 3.11: módulo sqlite3 — Consultada: 2026-11-02.
Cómo investigamos esta página
- Pregunta que responde: En qué se diferencian una base de datos estática y una dinámica, y por qué casi ninguna es estática para siempre.
- Fuentes: identificadas 27 → incluidas 16
- Criterios de inclusión: fichas oficiales del catálogo de microdatos del DANE y documentación oficial de PostgreSQL, SQLite y Python, más normas ISO y el NIST; nada de enciclopedias ni blogs de cursos.
- Fecha de corte de los datos: 2026-11-02