AjBase (1) Implementando una base de datos en memoria

Published on Author lopezLeave a comment

A mitad de 2009, comencé a escribir una base de datos en memoria, como un ejercicio de C#. Ahora en estos días, retomé el trabajo en ese proyecto. Moví el código a mi GitHub:

https://github.com/ajlopez/AjBase

Tengo esta historia en Github:

La actual solución:

Como es lo usal, usé TDD para escribir. Todos los tests están en verde:

Los elementos principales por ahora implementados son:

Engine: Mantiene una lista de las bases de datos creads, que residen en memoria.

Database: Es el contendor de las tablas creadas.

Table: Una table tiene filas, y una RowDefinition.

RowDefinition: Maneja una lista de definiciones de columnas en una tabla.

Row: Mantiene los valores de las filas, cada celda es un objeto.

Tengo alguna duda: mantener un esquema definido (RowDefinition) por tabla, o ir por no tener esquema y manejar columnas libres (aún columnas diferentes en filas distintas de la misma tabla). Por ahora, voy a explorar el tener un esquema definido.

Hace poco, comencé a parsear comandos SQL. No es mi lenguaje preferido (tiene muchas variantes para ser elegante), pero el proyecto ya puede procesar los comandos más simples:

Quiero agregar un proveedor ADO.NET, ver el namespace Data:

Tengo una simple ADO.NET DbConnection, con algún soporte básico (incompleto) de ExecuteQuery, ExecuteNonQuery.

Próximos pasos: completar el proveedor ADO.NET, tener más soporte de SQL, y de concurrencia con transacciones (grandes desafíos! :-).

Próximos posts: ejemplos de creación de base de datos, crear una tabla, insertar datos, tanto por código como por comandos SQL. Mientras tanto, pueden explorar el código de los tests para tener una idea de cómo usarlo.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Leave a Reply

Your email address will not be published. Required fields are marked *