El acrónimo NoSQL se acuñó en 1998. Mucha gente piensa que NoSQL es un término despectivo creado para criticar a SQL. En realidad, el término significa No solo SQL. La idea es que ambas tecnologías puedan coexistir y cada una tenga su lugar. El movimiento NoSQL ha estado en las noticias 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. Según 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 1 000 ExaBytes, lo que representa un aumento de más del 500 %. En otras palabras, hay muchos datos almacenados en el mundo y seguirán creciendo.
Datos interconectados: Los datos siguen cada vez más conectados. La creación de la web se fomentó en los hipervínculos, los blogs tienen pingbacks y todos los principales sistemas de redes sociales tienen etiquetas que unen las cosas. Los principales sistemas están diseñados para estar interconectados.
Estructura de datos compleja: NoSQL puede manejar fácilmente estructuras de datos jerárquicos anidados. 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 cantidades masivas de datos requeridos en las aplicaciones de redes sociales y la 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 reemplaza 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 usuarios o en 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 amplía" obteniendo hardware cada vez más rápido y agregando memoria. NoSQL, por otro lado, puede aprovechar el "escalamiento horizontal". El escalamiento horizontal se refiere a distribuir la carga entre muchos sistemas 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 NoSQL actual se divide en 4 categorías básicas.
- Las tiendas de valores clave se basan principalmente en Dynamo Paper de Amazon, 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.
- Bases de datos de documentos se inspiraron en Lotus Notes y son similares a los almacenes de clave-valor. El modelo consiste básicamente en documentos versionados que son colecciones de otras colecciones de clave-valor. Los documentos semiestructurados se almacenan en formatos como JSON.
- Graph Databases 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 se puede escalar en muchas máquinas.
Column Family Stores se crearon 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.
Las
Principales reproductores de NoSQL
Los principales actores de NoSQL surgieron principalmente debido a las organizaciones que los adoptaron. Algunas de las tecnologías NoSQL más grandes incluyen:
- Dynamo: Dynamo fue creado por Amazon.com y es la base de datos NoSQL de valores clave más destacada. Amazon necesitaba una plataforma distribuida altamente escalable para sus negocios de comercio electrónico, por lo que desarrolló Dynamo. Amazon S3 utiliza Dynamo como mecanismo de almacenamiento.
- Cassandra: Cassandra fue de código abierto de Facebook y es una base de datos NoSQL orientada a columnas.
- BigTable: BigTable es la base de datos orientada a columnas propiedad 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 interesa a la mayoría de los desarrolladores. Después de todo, los datos almacenados en una enorme base de datos no sirven de nada si no se pueden recuperar y mostrar 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 > PREFIX foaf:
SELECT ?url
FROM
WHERE {
?contributor foaf:name "Jon Foobar".
?colaborador foaf:weblog ?url.
}
El futuro de NoSQL
Las organizaciones que tienen necesidades masivas de almacenamiento de datos están considerando seriamente NoSQL. Aparentemente, el concepto no está recibiendo tanta atención en las 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 informaron que NoSQL es parte de su dirección estratégica. Claramente, NoSQL tiene su lugar en nuestro mundo conectado, pero deberá seguir evolucionando para obtener el atractivo masivo que muchos creen que podría tener.