Las base de datos no relacionales o NoSql como mejor se las conoce, están en un momento de auge y controversia; por un lado los que apoyan este movimiento enfatizan en su gran performance, velocidad y en la libertad que proveen para organizar los datos, la escalabilidad, etc. Mientras que los seguidores de las tradicionales bases de datos relacionales se basan en argumentos como la falta de formalidad y reglas para definir modelos y la necesidad de definir de antemano los querys necesarios para tu aplicación, entre otros.
Lo cierto es que cada paradigma tiene sus ventajas y desventajas frente a ciertos problemas como todas las tecnologías y la decisión de cual usar reside en los diseñadores, arquitectos y/o programadores de sistemas; cada uno evaluará para su realidad qué tecnología usar teniendo en cuenta sus requerimientos.
Además, son tecnologías compatibles, es decir, una no es reemplazo de la otra y por lo tanto puedes obtener lo mejor de los dos mundos si logras que en tu aplicación convivan ambas en sintonía, cada una para lo que mejor fue concebida.
Ahora bien, si te has decidido por una base de datos NoSql, hemos confeccionado esta pequeña reseña de las bases más populares, lo que queremos mostrar es un panorama general de las base de datos NoSql que actualmente se destacan.
MongoDB
MongoDB es una base de datos orientada a documentos (document oriented), es posible persistir objetos, usa un formato propio para guardar datos (BSON), schemaless y dinámicamente tipada, es decir que no es necesario definir la estructura de la base ni los tipos datos; soporte de índices y referencias entre documentos, lenguaje de consultas, optimiza la interfaz con los desarrolladores lo que hace que trabajar con ella sea muy simple, etc. A nuestro entender MongoDB es una de las base de datos no relacionales orientada a objetos más avanzada y flexibles para los desarrolladores.
Creado por: 10gen
Licencia: GPL
Soporte y documentación: muy buena y completa.
http://www.mongodb.org
Si te interesa, puedes leer nuestro tutorial para instalar MongoDB en Ubuntu con PHP.
Redis
Implementa el paradigma clave-valor (key-value), para entender mejor que es Redis podemos imaginarlo como un array gigante en memoria para almacenar datos y esos datos pueden ser strings, hashes, conjuntos (ordenados y desordenados) y listas; con la ventaja de que sus operaciones son atómicas y persistentes. Trabaja esencialmente con una interfaz de comandos.
Lamentablemente no tiene formas de realizar consultas (no hay queries) solo puede insertar (put) y obtener datos (get) además de las operaciones comunes sobre conjuntos (diferencia, unión, intersección).
Creado en ANSI C, por lo tanto es compatible y funciona sin problemas en sistemas Unix, Linux y sus derivados, Solaris, OS/X sin embargo no existe soporte oficial para plataformas Windows.
Creado por: Salvatore Sanfilippo and Pieter Noordhuis, hoy en día son apoyados por VMWare.
Licencia: Open source.
Soporte y documentación: el sitio oficial dispone de muy buena y organizada documentación.
http://redis.io/
Cassandra
Es una base de datos orientada a columnas, es decir que los datos se agrupan en columnas y filas formando familias de columnas (éstas familias son análogas a las tablas en las base de datos relacionales), a pesar de esto no esta diseñada para inter-relacionar las familias por lo que no pueden ser consultadas, cada familia es autocontenida así que los querys deben basarse en las columnas contenidas en la familia. En Cassandra una fila puede tener un conjunto diferente de columnas. Dispone de un lenguaje propio para realizar consultas CQL (Cassandra Query Language). Cassandra es una aplicación Java por lo que puede correr en cualquier plataforma que cuente con la JVM.
Creado por: Apache
Licencia: Apache License 2.0
Soporte y documentación:
http://cassandra.apache.org/
http://wiki.apache.org/cassandra/
CouchDB
Es una base de datos orientada a documentos, usa Restfull HTTP API como interfáz y JavaScript como lenguaje de interacción principal, mientras que el intercambio de datos se realiza mediante JSON. Estas características la hacen extremadamente interoperable y prácticamente es posible acceder a ella desde cualquier ambiente. CouchDB está compuesta por colecciones de documentos donde estos pueden contener datos en formato JSON así que podemos lograr casi cualquier tipo de estructura, para poder consultar y obtener datos CouchDB implementa Views (vistas) que le permiten agrupar conjuntos de documentos y de esta manera estructurar la información relacionada.
Escrita en el lenguaje Erlang, especialmente desarrollado para construir sistemas concurrentes distribuidos.
Funciona en la mayoría de los sistemas POSIX, incluyendo a GNU/Linux y OSX; por otra parte, no hay soporte oficial para Windows.
Creado por: Apache
Licencia: Apache License 2.0
Soporte y documentación: muy buena documentación.
http://couchdb.apache.org
http://wiki.apache.org/couchdb/
DynamoDB
Es una base de datos propietaria desarrollada por Amazon.com, y se presenta como parte de Amazon Web Services, implementa un sistema de persistencia tipo key-value, se dice que es un «managed service» o servicio gestionado, es decir, no es necesario disponer de expertos en bases de datos NoSql sino que los desarrolladores pueden encargarse de las tareas de administración. Altamente escalable ya que no existen limites en la cantidad de datos que se pueden almacenar, estos son guardados entre varios servidores y es totalmente transparente para el desarrollador. Es también una base de datos schemaless como otras que ya hemos mencionado, y se destaca la capacidad de almacenar atributos multi valuados.
Creado por: Amazon
Licencia: propietaria.
Soporte y documentación: muy buena documentación.
http://aws.amazon.com/es/dynamodb/
Más bases de datos…
Para finalizar este artículo les dejamos un pequeño listado de base de datos NoSql muy interesantes para investigar, aprender y probar.
[custom_list type=»check»]
- BigTable
- Apache Hadoop
- Apache Hbase
- ObjectDB
- db4o
- OrientDB
- Oracle Coherence
- OpenLink Virtuoso
- SimpleDB
[/custom_list]
Más información:
couchdb no parece muy segura :S
Pero son destacables mongodb y redis
redis en especial porque provee de mayor estabilidad para almacenar los datos e memoria, en lugar de (por ejemplo) hacerlo directamente en node.js