Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

AjBase (1) Implementando una base de datos en memoria

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

Published Sat, Mar 10 2012 20:15 by lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: