Archive for the '18098' Category

SharpMongo (1) Primeras Clases

Sunday, September 8th, 2013

Siguiente Post

Ya saben que estoy estudiando MongoDB. En un proyecto no público, mi cliente lo está usando y yo estoy desarrollando una alternativa OLAP en memoria, una extensión de mi Memolap. Como me gusta implementar almacenes en memoria, decidí construir uno en C#, en memoria, en proceso:

https://github.com/ajlopez/SharpMongo

Como siempre, el desarrollo usando TDD:

https://github.com/ajlopez/SharpMongo/commits/master

y dejando evidencia prácticamente por tests. También lo estoy implementando en JavaScript/Node.js, pero está mucho menos adelantado:

https://github.com/ajlopez/SimpleMongo

Espero presentar el estado de mi trabajo en la próxima meetup de MongoDB acá en Buenos Aires (así como ejemplos sencillos de MongoDB real con Node.js).

Si ven el estado actual de SharpMongo, tiene:

– Proyecto de clases SharpMongo.Core
– Proyecto de tests SharpMongo.Core.Tests
– Proyecto de clases SharpMongo.Language, donde estoy implementando un lenguaje sencillo para un cliente de consola
– Proyecto de tests SharpMongo.Language.Tests
– Proyecto de consola SharpMongo.Console

Hoy quería comentar sobre las clases de base que tengo:

Engine tiene una lista de DocumentBase. Un DocumentBase puede tener varias Collection. Los documents y objetos dinámicos:

Un Collection contiene DynamicDocuments. La diferencia entre un DynamicObject y un DynamicDocument es que este último tiene un Id. Ya tengo implementado en Collection los métodos:

– Insert
– Find (con query y projection)
– Remove (con query)
– Save (con y sin Id previo)
– Update

Y el proyecto de consola tiene varios comandos implementados. Pero eso ya es tema para otro post.

Próximos pasos:

– Operadores en Find
– Count
– Arreglos y Objetos Dinámicos anidados en DynamicObject
– Mejor impresión en el programa de consola

Luego, una vez estabilizado eso, tendría que encarar el manejo de concurrencia (o establecer que las modificaciones son serializadas). Si les parece, puede agregar:

– Servidor que revisa líneas por TCP, que describan en JSON plano los comandos a ejecutar, y devuelva JSON

– Clientes en C#, JavaScript, PHP?

Tantas ideas 😉

Nos leemos!

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