feed

MongoDB

Cuándo pensamos en bases de datos relacionales a nuestra mente suelen acudir los mismos nombres. En la parte comercial tenemos Oracle y Microsoft SQL Server. Del lado del software libre, tenemos opciones como Postgre SQL o MySQL. Aunque cada una tiene sus peculiaridades, para un desarrollador no es difícil elegir entre un sistema y otro. Al final todo son tablas, columnas, claves primarias, y sobre todo, consultas SQL. La decisión de cuál elegir, se basará en sus características y precio. Si hablamos de bases de datos NoSQL, la cosa se complica. A día de hoy existen unos 150 sistemas de bases de datos NoSQL. Elegir uno de ellos puede ser muy difícil, ya que ninguno ha obtenido todavía la fama que sí han conseguido las bases de datos relacionales. Pero el problema principal que encontramos, es que aunque todas se denominan NoSQL, en realidad hay diferentes tipos. Dependiendo de lo que necesitemos, deberemos decantarnos por una u otra. Aunque hay varias aproximaciones diferentes para clasificar las bases de datos NoSQL (Teorema CAP, basándonos en el modelo de datos etc.), en general se considera que existen cuatro tipos diferentes: orientadas a documentos, orientadas a columnas, de clave-valor y en grafo. Así que veamos en qué consisten estos sistemas, para que podamos elegir la opción que mejor se adapte a nuestras necesidades. Orientadas a documentos Son aquellas que gestionan datos semi estructurados. Es decir documentos. Estos datos son almacenados en algún formato estándar como puede ser XML, JSON o BSON. Para hacernos una idea un documento suele ser algo parecido a: { Name: "Genbeta Dev", Tipo: "Blogging", Categorias: [ { Título: "Desarrollo", Articulos: 89 }, { Título: "Formación", Artículos: 45 } ] } Son las bases de datos NoSQL más versátiles. Se pueden utilizar en gran cantidad de proyectos, incluyendo muchos que tradicionalmente funcionarían sobre bases de datos relacionales. En esta categoría encontramos: MongoDB: probablemente la base de datos NoSQL más famosa del momento. En octubre del año pasado, MongoDB conseguía 150 millones de dólares en financiación, convirtiéndose en una da las startups más prometedoras. Algunas compañías que actualmente utilizan MongoDB son Foursquare o eBay. CouchDB: es la base de datos orientada a documentos de Apache. Una de sus interesantes características es que los datos son accesibles a través de una API Rest. Este sistema es utilizado por compañías como Credit Suisse y la BBC. Orientadas a columnas Este tipo de bases de datos están pensadas para realizar consultas y agregaciones sobre grandes cantidades de datos. Funcionan de forma parecida a las bases de datos relacionales, pero almacenando columnas de datos en lugar de registros. En esta categoría encontramos: Cassandra: incluida en esta sección, aunque en realidad sigue un modelo híbrido entre orientada a columnas y clave-valor. Es utilizada por Facebook y Twitter (aunque dejaron de usarla para almacenar tweets). HBase. Escrita en Java y mantenida por el Projecto Hadoop de Apache, se utiliza para procesar grandes cantidades de datos. La utilizan Facebook, Twitter o Yahoo. De clave valor Estas son las más sencillas de entender. Simplemente guardan tuplas que contienen una clave y su valor. Cuándo se quiere recuperar un dato, simplemente se busca por su clave y se recupera el valor. En esta categoría encontramos: DynamoDB: desarrollada por Amazon, es una opción de almacenaje que puedemos usar desde los Amazon Web Services. La utilizan el Washington Post y Scopely. Redis: desarrollada en C y de código abierto, es utilizada por Craiglist y Stack Overflow (a modo de caché). En grafo Basadas en la teoría de grafos utilizan nodos y aristas para representar los datos almacenados. Son muy útiles para guardar información en modelos con muchas relaciones, como redes y conexiones sociales. En esta categoría encontramos: Infinite Graph: escrita en Java y C++ por la compañía Objectivity. Tiene dos modelos de licenciamiento: uno gratuito y otro de pago. Neo4j: base de datos de código abierto, escrita en Java por la compañía Neo Technology. Utilizada por compañías como HP, Infojobs o Cisco. Como veis los tipos son muy diferentes. Si tenéis pensado en usar algún sistema NoSQL, aseguraros bien de qué es lo que necesitáis. Imagen | tec_estromberg En GenbetaDev | El concepto NoSQL, o cómo almacenar tus datos en una base de datos no relacional, UnQL, un lenguaje de consulta unificado para todas las bases de datos NoSQL

A lo largo de varios artículos sobre MongoDB, hemos visto como insertar datos, modificarlos o como crear y gestionar índices. Pero todavía nos queda una de las partes más importantes: la consulta de datos.

Está claro que uno de los pilares en el uso de una base datos, es localizar la información. Las bases de datos relacionales de toda la vida, tienen un lenguaje propio para realizar consultas. Es el Structured Query Language, más conocido como SQL. Pero en MongoDB no tenemos la posibilidad de...

Leer más »

Poco a poco las bases de datos NoSQL se van asentando en el mercado y cada día es más necesario trabajar con ellas de una forma más sencilla. Quizás la base de datos NoSQL que más se esta utilizando hoy en día es MongoDB. Su sintaxis es muy sencilla de entender sin embargo muchas veces uno echa en falta una buena herramienta gráfica que nos acerque al mundo de MySQL WorkBench o similares.

MongoDB...

Leer más »

Siempre que lees un informe que “intenta” predecir tendencias de futuro o que analiza estadísticas/encuestas hay que cogerlo con pinzas. Hace unos días cayó en mis manos el informe Geek Choice Award 2014 realizado por RebelLabs. El objetivo era seleccionar ese puñado de tecnologías que han marcado y siguen marcando la forma de desarrollar para un programador, en este caso Javero , aunque veréis...

Leer más »

Muchas personas me suelen preguntar que diferencias existen entre JPA ( Java Persistence API) e Hibernate como frameworks de persistencia. La realidad es que la diferencia es mucha ya que JPA es una parte de la especificación de EJB 3 ( JSR 220) . Por lo tanto no existe realmente como framework, sino que es simplemente un documento . Un documento en el cual se especifica los principios básicos de...

Leer más »

Poco a poco las bases de datos NoSQL tipo MongoDB se van haciendo un hueco en el mercado. Son bases de datos orientadas al concepto de documento. Un documento no es ni más ni menos que un conjunto de entidades de bases de datos agrupados como una “gran” entidad. Por ejemplo podríamos tener los conceptos de Persona, Historial Médico y Compra que en un diagrama entidad relación crearían las...

Leer más »

Una vez que hemos aprendido a insertar, modificar y eliminar datos en MongoDB, estamos casi preparados para empezar a realizar consultas. Y digo casi, porque todavía nos queda conocer una parte muy importante de MongoDB: los índices.

En las bases de datos relacionales, los índices son algo indispensable. Sería inconcebible consultar una tabla con millones de registros si no hemos configurado al...

Leer más »

Hasta hace 5 o 6 años cuando se quería transmitir información desde un servidor a una aplicación (ya fuese una aplicación como tal o una web dinámica) se usaba XML, pero parece que esta tendencia ha cambiado totalmente apostando la mayoría de las empresas y servicios por JSON, una alternativa menos restrictiva, ligera, dinámica y probablemente más fácil de leer (para los humanos).

¿Y es la...

Leer más »

Os comentábamos en un artículo anterior que la versión 2.6 de MongoDB había pasado a ser release candidate, y que para la ocasión se había organizado una caza de bugs.

Pues bien, tras corregir los fallos detectados, MongoDB Inc acaba de presentar, la que según ellos, es la mayor release que han liberado nunca.

Semejante afirmación merece un buen puñado de novedades. Y es cierto que son muchas:

...

Leer más »


Continuamos con la actualización de datos en MongoDB. En el anterior artículo, expliqué como se podían actualizar subdocumentos y añadir elementos a un campo de tipo array. Con los arrays podemos usar un puñado de operadores interesantes como $push, $addToSet, $each o $slice.

Pero de nada sirve saber cómo se añaden elementos a un array, si no sabemos como eliminarlos . Y es lo que vamos a ver en...

Leer más »

Como ya hemos comentado en anteriores artículos, MongoDB es una base de datos documental que almacena documentos JSON. Una de las peculiaridades de este tipo de documentos es que sus campos pueden contener arrays o subdocumentos. Incluso los campos pueden contener arrays de subdocumentos. Y es entonces cuándo las consultas se vuelven un poco más complicadas.

En el anterior artículo , pudimos ver...

Leer más »

Sigue a Genbetadev