miércoles, 6 de febrero de 2013

NoSQL vía My Java Zone

NoSQL

Hoy veremos una pequeña introducción de lo que es NoSQL, muchos ya han escuchado sobre las base de datos NoSQL por su gran capacidad de escalabilidad. Usualmente es común que se usen las base de datos relacionales, siguen siendo las mas usadas para la mayoría de los proyectos, pero cuando se tienen miles de usuarios concurrentes y millones de consultas diarias dichas base de datos relacionales no se comportan como se espera, ahí es donde surge el uso de las base de datos NoSQL.

Las bases de datos NoSQL son sistemas de almacenamiento de información que no cumplen con el esquema ya conocido entidad-relación, no imponen una estructura de datos en forma de tablas y relaciones entre ellas , son más flexibles, ya que suelen permitir almacenar información en otros formatos como clave-valor, Mapeo de Columnas, Documentos o Grafos.

Ventajas

  • Escalabilidad horizontal: Permite añadir mas recursos con solo agregar mas nodos al sistema en caliente, sin la necesidad de reiniciar el servidor o el sistema.
  • Tolerante a fallos y redundancia
  • No generan cuellos de botella
  • Estructura dinámica: Cada registro puede contener una información con diferente forma cada vez.
  • Se ejecutan en máquinas baratas sin problemas.
  • Manejan con facilidad una gran cantidad de datos.
Tipos de Base de datos NoSQL

  • Key-Value: llave-valor es la forma mas típica, como un HashMap donde cada elemento esta identificado por una llave única, lo que permite la recuperación de la información de manera muy rápida. Ejemplo: BigTable, Cassandra, SimpleDB, entre otras.
  • Basada en Documentos: estas almacenan la información como un documento (generalmente con una estructura simple como JSON o XML) y con una llave única. Es similar a las bases de datos Key-value, pero con la diferencia que el valor es un fichero que puede ser entendido. Si el servidor entiende los datos, puede hacer operaciones con ellos. Ejemplo: MongoDB, CouchDB, entre otras.
  • Orientadas a Grafos: Hay otras bases de datos que almacenan la información como grafos donde las relaciones entre los nodos son lo mas importante. Ejemplo: Neo4j, DEX, OrientDB, entre otras.
  • Orientadas a Columnas: guardan los valores en columnas en lugar de filas ya que con este cambio ganamos mucha velocidad en lecturas, si se requiere consultar un número reducido de columnas, es muy rápido hacerlo pero no es  eficiente para realizar escrituras.
Pronto veremos algunas aplicaciones donde mostremos como conectar java con este tipo de base de datos, abriendo asi aun mas la gama de posibilidades al momento de hablar de persistencia de datos.

No hay comentarios: