UTNianos

Versión completa: NO-SQL
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas.

Queria preguntar sobre bases de datos NO-SQL, ventajas, desventajas, opiniones...


Actualmente estoy usando BigTable de GAE desde Java, y está bastante copado no hacer joins... pero, hay algo más? Cuales son sus experiencias?


Saludos!
Yo estoy laburando con MongoDB, la verdad que tiene varias cosas interesantes, la velocidad es incomparable, pero también hay que ver cuál es el uso.

Las bases de datos de Mongo se pueden romper (como cualquier base) y no tiene logfile para recuperar si se revienta, en esas situaciones tenés más posibilidad de recuperar con un SQL Server o similar.

Vuelvo con más comentarios en otro momento =).
Archivos binarios, como los machos (?)
Acá empezamos a desarrollar con MongoDB una parte de un sistema pero al final se pospuso, así que no llegamos a ver la performance real en producción, pero dicen que es mucho más rápido (y es lógico que así sea).

La idea de MongoDB sería almacenar "documentos" (que en realidad puede ser cualquier cosa) accesibles por claves. También permite hacer queries, incluyendo agrupaciones, etc. que puede que sea un poco más complejo que el SQL común al principio, pero después te acostumbrás.

Particularmente para .NET, se complica un poco ya que la biblioteca que se usa como API son desarrollos independientes de Mongo (a diferencia de APIs para otros lenguajes), por lo tanto hay que ver cuál resulta más cómodo para desarrollar ya que hay varias alternativas dando vueltas. Una ventaja es que se puede eliminar el uso de queries en el repositorio de datos, transfiriendo las consultas al código .NET en sí, y pudiendo realizarlas por ejemplo con LINQ, para centralizar la lógica en un sólo lugar (aunque no sé si conviene esto cuando la base se accede en un servidor distinto al server de la aplicación, ya que los datos se enviarían sin filtrar por la red, y eso puede ser problemático).

En la facu, en APIT, se abordó este tema un poco. En este PDF se puede encontrar algo del tema, y se nombran algunos productos:

http://apit.wdfiles.com/local--files/sta...tencia.pdf
me causo el nombre, mongo! jajaja no lo habia escuchado posta!
en el trabajo usamos GemStone, una BD (por decirlo de alguna manera) de objetos (BDOO).

está bueno, no te preocupás mucho por las consultas ni nada, porque trabajamos con los objetos "vivos", con las instancias. gemstone es básicamente un smalltalk corriendo permanentemente. en vez de hacer algo como:

select * from mi-tabla where codigo = 1

hacemos algo como

unaColeccion select: [:unObjecto | unObjecto codigo = 1]

Es muy bueno, tiene unas cuántas ventajas en ese sentido, y es multiplataforma. Lo malo, para mi gusto, es la performance. Si tenés un sistema muy grande con una infinidad de objetos, se hace un toque pesado.
(01-02-2011 15:56)pablo escribió: [ -> ]Particularmente para .NET, se complica un poco ya que la biblioteca que se usa como API son desarrollos independientes de Mongo (a diferencia de APIs para otros lenguajes), por lo tanto hay que ver cuál resulta más cómodo para desarrollar ya que hay varias alternativas dando vueltas. Una ventaja es que se puede eliminar el uso de queries en el repositorio de datos, transfiriendo las consultas al código .NET en sí, y pudiendo realizarlas por ejemplo con LINQ, para centralizar la lógica en un sólo lugar (aunque no sé si conviene esto cuando la base se accede en un servidor distinto al server de la aplicación, ya que los datos se enviarían sin filtrar por la red, y eso puede ser problemático).

Pablo, yo estuve usando 2 drivers de C# distintos, el oficial (salió a mitad del desarrollo que ya estaba en curso por lo cual no lo pude probar en serio) y otro que soporta LINQ.

Te dejo los links:
- https://github.com/mongodb-csharp/mongodb-csharp (el que usé yo, soporta LINQ)
- https://github.com/mongodb/mongo-csharp-driver (el oficial, arrancó hace menos tiempo que el otro y no soporta LINQ =()
(02-02-2011 00:05)LeandroDG escribió: [ -> ]
(01-02-2011 15:56)pablo escribió: [ -> ]Particularmente para .NET, se complica un poco ya que la biblioteca que se usa como API son desarrollos independientes de Mongo (a diferencia de APIs para otros lenguajes), por lo tanto hay que ver cuál resulta más cómodo para desarrollar ya que hay varias alternativas dando vueltas. Una ventaja es que se puede eliminar el uso de queries en el repositorio de datos, transfiriendo las consultas al código .NET en sí, y pudiendo realizarlas por ejemplo con LINQ, para centralizar la lógica en un sólo lugar (aunque no sé si conviene esto cuando la base se accede en un servidor distinto al server de la aplicación, ya que los datos se enviarían sin filtrar por la red, y eso puede ser problemático).

Pablo, yo estuve usando 2 drivers de C# distintos, el oficial (salió a mitad del desarrollo que ya estaba en curso por lo cual no lo pude probar en serio) y otro que soporta LINQ.

Te dejo los links:
- https://github.com/mongodb-csharp/mongodb-csharp (el que usé yo, soporta LINQ)
- https://github.com/mongodb/mongo-csharp-driver (el oficial, arrancó hace menos tiempo que el otro y no soporta LINQ =()

Joya Lean ;). Igual sí, creo que llegué a ver los dos (hace un par de meses que quedó en stand-by igual esa parte de nuestro desarrollo), pero me terminé quedando con el primero, que me resultó más cómodo y soporta LINQ =P.
(01-02-2011 15:56)ebric escribió: [ -> ]Archivos binarios, como los machos (?)

Off-topic:

texto plano separado por pipes... pipe programming rules (?)

que onda db40? escuche muy buenas referencias
(03-02-2011 22:28)Adriano escribió: [ -> ]
(01-02-2011 15:56)ebric escribió: [ -> ]Archivos binarios, como los machos (?)

Off-topic:

texto plano separado por pipes... pipe programming rules (?)

que onda db40? escuche muy buenas referencias

Si, debe andar joya si lo vas a usar para hacer un sistemita de una agenda... =D
ea! al fin se activó esta seccion =P.

Tengo varias preguntas al respecto:

A ) Bases de datos orientadas a documentos.... ok, ya vi lo que es, y mas o menos como funciona, pero... ¿Que ventajas me trae? Osea, ¿Porqué querria usar una base de datos orientada a documentos, y no una base relacional?

B ) Leatex: eso es exclusivo para Smalltalk? Hay drivers para otros lenguajes, y que sean copados?

C ) ¿Que diferencia hay entre una base de datos orientada a columnas, y una base de datos orientada a objetos?

D ) De db40 nadie mas tiene conocimientos al respecto? =P
(06-02-2011 00:08)Imakuni escribió: [ -> ]B ) Leatex: eso es exclusivo para Smalltalk? Hay drivers para otros lenguajes, y que sean copados?

hasta donde sé sirve sólo para smalltalk.
URLs de referencia