¿Qué base de datos NoSQL me recomendáis?
fmfnet nos cuenta: «Tengo entre manos un proyecto para el que, por el tema de la escalabilidad y el schema-free, tengo claro que debo usar una base de datos NoSQL. Tras probar unas cuantas me he decantado por mongodb, pero aquí me viene la duda; mongodb es una base de datos orientada a documentos y la aplicación que tengo que hacer manejará una base de datos convencional, entendiendo como tal una colección de varios millones de registros pequeños, con predominio de campos numéricos y con campos de texto que rara vez pasarán de los doscientos caracteres. La pregunta es si mongodb es una buena elección o si para una base de datos no documental es preferible usar algún otro motor, como por ejemplo Cassandra.»
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.

En la web de Mongo
(Puntos:2)( http://alacantilado.blogspot.com/ )
Si tu base de datos no és document-oriented olvídate de Mongo.
En el Wiki de Cassandra
(Puntos:2)( http://alacantilado.blogspot.com/ )
Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store
¿Tu base de datos ustiliza pares clave-valor o es una base de datos convencional?
La que mejor se te adapte
(Puntos:2)( http://www.cientifico.net/ | Última bitácora: Martes, 22 Junio de 2004, 13:46h )
Tirar por un nosql, puede hacer el desarrollo de nueva funcionalidad más tedioso, sobretodo si no lo conoces.
¿Más importante que tirar por nosql... estás seguro que vas a tener tanta demanda?
Si no es indiscrepcción, ¿de que versa el proyecto?
"Tema de la escalabilidad"
(Puntos:1, Interesante)Y si estuvieras montando algo que necesitara eso, no lo preguntarías aquí.
Ergo no sabes ni lo que necesitas. Mi consejo: Pregunta "¿Qué debería usar para almacenar datos para un proyecto como XXX?" o mejor aún "¿Qué software/librerías/bases de datos usásteis en proyectos como XXX?".
O aún mejor, dale tu trabajo a alguien que se lo merezca.
Comparativa
(Puntos:2, Informativo)( http://barrapunto.com/ | Última bitácora: Lunes, 15 Agosto de 2011, 15:32h )
En cuanto a cual usar, depende muchisimo de lo que necesitas, te recomiendo que mires dos o tres y hagas un prototipo con cada una a ver si cumplen tus requisitos, por mi parte te puedo hacer las siguientes recomendaciones:
Si no necesitas orientacion a documentos, Membase esta muy bien (mientras los indices te quepan en memoria) y lo de poder actualizarla en caliente y el cliente web son grandes bazas. Tengo una instancia en el portatil con 25 millones de registros (de un par de pruebas que hice) y se mantiene tranquilamente en las 5K operaciones por segundo.
Si necesitas transacciones, puedes mirar tambien Redis, eso y la posibilidad de usarlo como mensajeria (permite definir topics y hacer publish/subscribe) la hacen muy interesante, pero los datos te tienen que caber en memoria. En mi empresa tenemos un par de aplicaciones con Redis, precisamente por esas dos cosas (transacciones y pub/sub).
Otra con la que solo he jugado un poco pero que tambien recomendaria echarle un vistazo es CouchDB, tiene muy buena pinta (pero como digo, solo he jugado un poco, nada serio).
De todas formas, no deseches MongoDB tan rapido, algun equipo de mi empresa la ha usado y en general estan muy contentos (aunque me han dicho que cosas como el autosharding dan algunos problemas).
Dale fuego a un hombre y estara caliente un dia, prendele fuego y estara caliente el resto de su vida.
MongoBD sin duda
(Puntos:5, Interesante)Esa no es razón para usar mongobd, como tampoco para no hacerlo. Ambas te funcionaran perfectamente, con sus manias particulares de cada una.
Mi esperiencia es que llevo usando mongo en produccion desde hace años en sitios de alta carga y no me ha dado más problemas que mysql pero tampoco menos.
MongoDB es la bd no sql más cercana a una relacional. Yo la elegi precisamente por eso, por que al ser tan parecida a mysql me simplificaba la portabilidad.
Si quieres usarla a modo relacional, tan solo create clases usando el habitual patron de diseño de abstraccion de datos que te oblige a meter todos los valores del objeto y ya está.
MongoDB es entre 10 y 100 veces más rápida y potente que mysql o postgre en pruebas reales hechas por mi. Haz siempre los test tu. No se porque la gente mira benchmarks trucadisimos con lo facil que es montar una prueba real parecida a lo que será tu aplicacion. Y según lo que te salga pues ya decides.
Que sea tan brutalmente rápida esta muy bien, pero ten en cuenta que esa velocidad se paga y mucho en no tener transacciones ni integridad referencial. Esto es lo único importante que debes valorar, el resto, que es document-oriented, inmadura, son...
Mongodb te obliga a hacer siempre busquedas simples. Esto es lo que yo amo de mongodb, porque le impide al programador meter la query kilometrica en la aplicación que es por donde siempre vienen los problemas despues, cuando la bbdd es pequeña bien y un año despues cuando crece pues el marron para otro.
Pero a veces apetece meter una join infernal que sabes que solo se ejecutará una vez al año y con mongo no podras.
Monta las clases abstractas tales que te permitan conmutar entre una y otra, y ya decidiras. Asi de paso tu código será mas estructurado y robusto. Las tablas peligrosas, sobre mysql con transacciones y el resto a mongo. O mongo como capa de cache.
Un consejo, desactiva el javascript de mongo, se purista y ten cuidado porque mongo distingue letras y numeros, sql no. Algun susto me he llevado yo por no hacer el cast.
Estoy ya se preguntó.
(Puntos:2)( http://barrapunto.com/ )
Saludos.
El Gran Cajuna.
---------------
Drupal admite MariaDB
(Puntos:2)( http://barrapunto.com/ | Última bitácora: Domingo, 04 Abril de 2010, 23:48h )
http://drupal.org/requirements#database [drupal.org]
Re:Recomendación
(Puntos:2)( http://alacantilado.blogspot.com/ )
A saber donde acabo.
Re:Recomendación
(Puntos:3, Informativo)( http://barrapunto.com/ | Última bitácora: Domingo, 04 Septiembre de 2011, 11:08h )
Marcos (cualquier parecido con la coincidencia es pura realidad)
Re:¿Realmente necesitas NoSQL?
(Puntos:2)( http://barrapunto.com | Última bitácora: Viernes, 08 Abril de 2011, 14:08h )
Programar bases de datos con consultas SQL es mucho más sencillo que otras opciones. Y además hay bases de datos para dar y elegir, con sus librerías clientes y enlaces en lenguajes desde el C hasta el Python y Ruby, pasando por pascal, java y C++. Si es una cosa simple, con SQlite puedes hacer maravillas
Si utilizas noSQL, te complicas la vida. Osea, que salvo que tu sistema necesite altas velocidades por tener miles y miles de consultas simultáneas y necesitar una respuesta casi instantánea, vaya, eres facebook, google o algo así, usar noSQL es matar moscas a cañonazos.