No SQL
NoSQL es un movimiento que promueve los sistemas de software donde la persistencia de datos generalmente se caracteriza por no utilizar el modelo relacional , generalmente utilizado por las bases de datos tradicionales ( RDBMS ). De hecho, la expresión se refiere al lenguaje SQL , que es el lenguaje de consulta de datos más común en las bases de datos relacionales, tomado aquí como símbolo de todo el paradigma relacional.
Estos almacenes de datos la mayoría de las veces no requieren un esquema fijo ( sin esquema ), a menudo evitan unir operaciones y apuntan a escalar horizontalmente. Los académicos y los artículos se refieren a estas bases de datos como almacenamiento estructurado .
Etimología del término
El término NoSQL se utilizó por primera vez en 1998 para una base de datos relacional de código abierto que no utilizaba una interfaz SQL. El autor Carlo Strozzi declaró que "como movimiento, NoSQL se aparta radicalmente del modelo relacional y, por lo tanto, debería llamarse más apropiadamente NoREL , o algo similar" [1] .
Al contrario de lo que se podría pensar, el movimiento NOSQL no está en contra del uso de bases de datos relacionales. De hecho, el término NOSQL significa Not Only SQL , lo que significa que hay varios casos de uso para los que el modelo relacional representa un forzamiento, pero muchos otros para los que este modelo sigue siendo la mejor solución.
El término fue reutilizado en 2009 por un empleado de Rackspace , Eric Evans, cuando Johan Oskarsson de Last.fm quiso organizar un evento para discutir las bases de datos distribuidas de código abierto [2] . El nombre fue un intento de etiquetar el creciente número de bases de datos distribuidas y no relacionales que a menudo no proporcionan las características clásicas de ACID : atomicidad, coherencia, aislamiento, durabilidad. La razón por la que no se proporcionaron estas características es el llamado teorema CAP .
Implementaciones
Las implementaciones notables son Cloudant de IBM , BigTable de Google y Dynamo de Amazon.com , y variantes de código abierto como Apache Accumulo , HBase y Cassandra .
Clasificación
Las implementaciones de NoSQL se pueden clasificar según el tipo de modelo de datos adoptado. A continuación se muestra una descripción de las categorías más populares.
Bases de datos orientadas a documentos
Una base de datos orientada a documentos es un programa para aplicaciones orientadas a documentos. Estos sistemas podrían implementarse como una capa encima de una base de datos relacional o de objetos.
Las bases de datos orientadas a documentos no almacenan datos en tablas con campos uniformes para cada registro como en las bases de datos relacionales, sino que cada registro se almacena como un documento que posee ciertas características. Se puede agregar cualquier número de campos de cualquier longitud al documento. Los campos también pueden contener varios datos.
Algunos ejemplos de bases de datos de este tipo son:
- colador
- Elasticsearch
- CouchDB
- SofáBase
- Liebre apache
- notas de loto
- MongoDB
- apache solr
- OrientDB
- Cuervo DB
- base de datos XML
- Servidor MarkLogic
- existir
- BaseX
Base de datos de grafos
Una base de datos de gráficos utiliza nodos y arcos para representar y almacenar información. La representación de datos a través de gráficos ofrece una alternativa al modelo relacional que hace uso de tablas, a las bases de datos orientadas a documentos (que utilizan documentos), u otros, como los sistemas de almacenamiento estructurados basados en columnas o en cestas de datos no interpretadas.
Las bases de datos gráficas suelen ser más rápidas que las bases de datos relacionales en el enlace de conjuntos de datos y mapean las estructuras de las aplicaciones orientadas a objetos de manera más directa. Se adaptan más fácilmente a grandes cantidades de datos y no requieren las típicas y costosas operaciones de combinación . Son menos dependientes de un patrón rígido de entidad-relación y son mucho más adecuados para manejar datos cambiantes con patrones evolutivos. Por el contrario, las bases de datos relacionales suelen ser más rápidas para realizar las mismas operaciones en una gran cantidad de datos.
Algunos ejemplos de bases de datos de este tipo son:
- AllegroGraph
- Datos básicos
- neo4j
- OrientDB
- DEX / Sparksee
- Unisys DMS (Data Management System) creado por Burroughs Corporation en 1972
- IBM DL1 (lenguaje de datos uno). El gráfico tiene una estructura jerárquica.
Clave/valor almacenado en el disco
- DensoDB
- espacio de tupla
- Memcachedb
- redis
- SimpleDB
- Gabinete de Tokio
- Mesa grande
- Orientar clave / servidor de valor
- Pincaster
Clave / valor de caché de RAM
Eventualmente ‐ valor / clave consistente
- Dinamo
- casandra
- Proyecto Voldemort
Clave-valor retenido por la implementación de Paxos
- espacio de teclas
Valor-clave ordenado
- NMDB
- Memcachedb
- Base de datos de Berkeley
Bases de datos de valores múltiples
- Open QM
- cohete u2
- TigerLogic D3
Bases de datos orientadas a objetos
Un modelo de base de datos orientado a objetos es un modelo en el que la información se representa en forma de objetos como en los lenguajes de programación orientados a objetos .
Las bases de datos orientadas a objetos se ubican en un nicho de mercado con respecto al modelo relacional ( RDBMS ). Fueron considerados desde las décadas de 1980 y 1990, pero tuvieron poco impacto comercial y solo se utilizaron en campos específicos.
Los campos de aplicación son: ingeniería, bases de datos espaciales , telecomunicaciones y áreas científicas como la física de altas energías y la biología molecular .
Las bases de datos orientadas a objetos tienen el récord de la base de datos más grande del mundo (siendo las primeras en contener más de 1000 TB en el Centro Acelerador Lineal de Stanford ) y la tasa de absorción más alta jamás registrada para una base de datos comercial de más de 1 TB para un 'Now.
Otro grupo de bases de datos orientadas a objetos se centra en su uso en sistemas de tiempo real .
Algunos ejemplos de bases de datos de este tipo son:
- Db4o
- postgresql
- Gema / S
- InterSystems Caché
- Objetividad / DB
- ZODB
- OrientDB
tabulado
- Mesa grande
- mnesia
- Hbase
- Hipertable
Almacenamiento en tuplas
- río apache
Desconocido
- GT.M
- Divisa
- FluidDB