Esta charla ayudará a desbloquear el funcionamiento interno de una Base de Datos desglosando las abstracciones que la componen. Usaremos Python como nuestra herramienta elegida para discutir lentamente cómo construir los diferentes componentes de una base de datos.
1) Hablando con tu Base de Datos: Comenzamos construyendo una interfaz y un lenguaje que nos ayude a comunicarnos con nuestra base de datos. Usaremos Prompt toolkit para construir un REPL y utilizaremos un lenguaje simple basado en SQL con expresiones regulares básicas que puedan analizarlo como instrucciones a ejecutar.
2) Trabajando con Datos: Ahora que podemos comunicarnos con nuestra base de datos usando instrucciones, comenzamos el trabajo real en la construcción del Almacén de Datos. Inicialmente almacenamos todos los datos en un diccionario simple en memoria y luego pasamos a persistir estos datos en disco. Ahora leemos los datos del disco a la memoria cada vez que consultamos los datos y escribimos de nuevo los datos en el disco, pero esto hace que las cosas sean muy lentas :(
Este problema es nuestra entrada al hermoso mundo de los Índices, así que al construir un índice Btree muy básico para almacenar referencias en memoria y acceder rápidamente solo a lo que necesitamos de los datos en disco, podemos acelerar nuestros tiempos de acceso para consultas básicas de acceso a filas de O(N) a O(1), donde N es el número de filas en una tabla.
3) Futuro: Ahora podemos demostrar con orgullo nuestra nueva y pulida base de datos que puede almacenar datos, persistirlos y ejecutar consultas que son bastante rápidas gracias a nuestros Índices Btree. También discutimos cómo esta Base de Datos puede mejorarse en el futuro al soportar Transacciones ACID completas, permitir concurrencia y manejar bloqueos.
La mejor manera de entender algo es construirlo tú mismo :)