Una pila de arquitectura de software de base de datos a menudo consta de lo siguiente, con superposiciones:
- Registro transaccional : persiste todas las solicitudes para que puedan reproducirse en caso de falla.
- Componente de almacenamiento : administra la asignación de almacenamiento interno y la persistencia de datos real. Muchas arquitecturas de bases de datos eligen hacer este modular para que puedan reemplazarse con otras implementaciones, como un almacenamiento de solo memoria (MongoDB, MySQL). Funciones en términos de páginas (aquí, las páginas generalmente están alineadas con algunos múltiplos del tamaño de página del sistema operativo).
- Caché de búfer de página: caché en memoria, normalmente algunos toman LRU, de páginas pendientes. Los DB intentarán mantener las páginas en la memoria el mayor tiempo posible. La decisión de diseño de omitir la memoria caché de la página del sistema operativo es muy deliberada. En algunas arquitecturas, esto permite actualizaciones de memoria en el lugar, si el espacio interno lo permite.
- Administración lógica de archivos : controla la escritura y actualización de filas e índices a nivel de página.
- Ejecución de la consulta : lee los archivos lógicos y realiza la proyección / selección / etc. según lo dicte el plan de consulta.
- Optimizador de consultas: intenta y encuentra el plan de consulta más eficiente.
- Analizador de SQL (o QL) : traduce el SQL a algunos comandos intermedios.
- Administrador de transacciones : este componente es el que rastrea las solicitudes y transacciones pendientes dentro del sistema.
- Administrador de metadatos : almacena toda la información meta, como los DDL existentes, los metadatos del sistema, etc.