Una descripción general de NoSQL
El acrónimo NoSQL se acuñó en 1998. Mucha gente piensa que NoSQL es un término despectivo creado para atacar SQL. En realidad, el término no solo significa SQL. La idea es que ambas tecnologías puedan convivir y cada una tiene su lugar. El movimiento NoSQL ha sido noticia en los últimos años, ya que muchos de los líderes de la Web 2.0 han adoptado una tecnología NoSQL. Empresas como Facebook, Twitter, Digg, Amazon, LinkedIn y Google utilizan NoSQL de una forma u otra. Analicemos NoSQL para que pueda explicárselo a su CIO o incluso a sus compañeros de trabajo.

NoSQL surgió de una necesidad
Almacenamiento de datos: Los datos digitales almacenados en el mundo se miden en exabytes. Un exabyte equivale a mil millones de gigabytes (GB) de datos. De acuerdo a Internet.com, la cantidad de datos almacenados agregados en 2006 fue de 161 exabytes. Solo 4 años después, en 2010, la cantidad de datos almacenados será de casi 1000 ExaBytes, lo que representa un aumento de más del 500%. En otras palabras, hay una gran cantidad de datos almacenados en el mundo y simplemente seguirá creciendo.
Datos interconectados: Los datos continúan estando más conectados. La creación de la web se fomenta en hipervínculos, los blogs tienen pingbacks y todos los sistemas de redes sociales importantes tienen etiquetas que unen las cosas. Los principales sistemas están diseñados para estar interconectados.
Estructura de datos compleja: NoSQL puede manejar estructuras de datos anidadas jerárquicas fácilmente. Para lograr lo mismo en SQL, necesitaría varias tablas relacionales con todo tipo de claves. Además, existe una relación entre el rendimiento y la complejidad de los datos. El rendimiento puede degradarse en un RDBMS tradicional a medida que almacenamos las enormes cantidades de datos necesarios en las aplicaciones de redes sociales y web semántica.
¿Qué es NoSQL?
Supongo que una forma de definir NoSQL es considerar lo que no es. No es SQL y no es relacional. Como sugiere el nombre, no sustituye a un RDBMS, sino que lo complementa. NoSQL está diseñado para almacenes de datos distribuidos para necesidades de datos a gran escala. Piense en Facebook con sus 500.000.000 de usuarios o Twitter, que acumula Terabits de datos todos los días.
En una base de datos NoSQL, no hay un esquema fijo ni uniones. Un RDBMS se "escala" al obtener hardware cada vez más rápido y agregar memoria. NoSQL, por otro lado, puede aprovechar el "escalado horizontal". La ampliación se refiere a distribuir la carga entre muchos sistemas de productos básicos. Este es el componente de NoSQL que lo convierte en una solución económica para grandes conjuntos de datos.
Categorías NoSQL
El mundo actual de NoSQL encaja en 4 categorías básicas.
-
Almacenes de valores-clave se basan principalmente en Papel Dynamo de Amazon que fue escrito en 2007. La idea principal es la existencia de una tabla hash donde hay una clave única y un puntero a un elemento de datos en particular. Estas asignaciones suelen ir acompañadas de mecanismos de caché para maximizar el rendimiento.
- Column Family Stores fueron creados para almacenar y procesar grandes cantidades de datos distribuidos en muchas máquinas. Todavía hay claves, pero apuntan a varias columnas. En el caso de BigTable (modelo NoSQL de la familia de columnas de Google), las filas se identifican mediante una clave de fila con los datos ordenados y almacenados por esta clave. Las columnas están ordenadas por familia de columnas.
- Bases de datos de documentos fueron inspirados por Notas de loto y son similares a las tiendas de valores clave. El modelo es básicamente documentos versionados que son colecciones de otras colecciones de valores-clave. Los documentos semiestructurados se almacenan en formatos como JSON.
- Base de datos de gráficosLos correos electrónicos se construyen con nodos, relaciones entre notas y las propiedades de los nodos. En lugar de tablas de filas y columnas y la estructura rígida de SQL, se utiliza un modelo de gráfico flexible que puede escalar en muchas máquinas.
Principales jugadores NoSQL
Los principales actores de NoSQL han surgido principalmente debido a las organizaciones que los han adoptado. Algunas de las tecnologías NoSQL más importantes incluyen:
- Dinamo: Dynamo fue creado por Amazon.com y es la base de datos NoSQL de valor clave más destacada. Amazon necesitaba una plataforma distribuida altamente escalable para sus negocios de comercio electrónico, por lo que desarrollaron Dynamo. Amazon S3 usa Dynamo como mecanismo de almacenamiento.
- Cassandra:Casandra fue de código abierto de Facebook y es una base de datos NoSQL orientada a columnas.
- Mesa grande: BigTable es la base de datos orientada a columnas patentada de Google. Google permite el uso de BigTable pero solo para Google App Engine.
- SimpleDB: SimpleDB es otra base de datos de Amazon. Utilizado para Amazon EC2 y S3, es parte de Amazon Web Services que cobra tarifas según el uso.
- CouchDB:CouchDB junto con MongoDB son bases de datos NoSQL de código abierto orientadas a documentos.
- Neo4J:Neo4j es una base de datos de gráficos de código abierto.
Consultando NoSQL
La cuestión de cómo consultar una base de datos NoSQL es lo que le interesa a la mayoría de los desarrolladores. Después de todo, los datos almacenados en una enorme base de datos no le hacen ningún bien a nadie si no puede recuperarlos y mostrarlos a los usuarios finales o servicios web. Las bases de datos NoSQL no proporcionan un lenguaje de consulta declarativo de alto nivel como SQL. En cambio, consultar estas bases de datos es específico del modelo de datos.
Muchas de las plataformas NoSQL permiten interfaces RESTful a los datos. Otras API de consulta de ofertas. Hay un par de herramientas de consulta que se han desarrollado para intentar consultar varias bases de datos NoSQL. Estas herramientas suelen funcionar en una sola categoría NoSQL. Un ejemplo es SPARQL. SPARQL es una especificación de consulta declarativa diseñada para bases de datos gráficas. A continuación se muestra un ejemplo de una consulta SPARQL que recupera la URL de un blogger en particular (cortesía de IBM):
PREFIX foaf:
SELECCIONAR? Url
DE
DÓNDE {
? colaborador foaf: nombre "Jon Foobar".
? contributor foaf: weblog? url.
}
Futuro de NoSQL
Las organizaciones que tienen necesidades masivas de almacenamiento de datos están considerando seriamente NoSQL. Aparentemente, el concepto no está ganando tanta fuerza en organizaciones más pequeñas. En una encuesta realizada por Information Week, el 44% de los profesionales de TI empresariales no han oído hablar de NoSQL. Además, solo el 1% de los encuestados informó que NoSQL es parte de su dirección estratégica. Claramente, NoSQL tiene su lugar en nuestro mundo conectado, pero deberá continuar evolucionando para obtener el atractivo masivo que muchos creen que podría tener.