No SQL


Una base de datos NoSQL (que originalmente se refería a "no SQL " o "no relacional") [1] proporciona un mecanismo para el almacenamiento y recuperación de datos que se modela en medios distintos a las relaciones tabulares utilizadas en las bases de datos relacionales . Estas bases de datos han existido desde finales de la década de 1960, pero el nombre "NoSQL" solo se acuñó a principios del siglo XXI, [2] provocado por las necesidades de las empresas Web 2.0 . [3] [4] Las bases de datos NoSQL se utilizan cada vez más en big data y aplicaciones web en tiempo real . [5]Los sistemas NoSQL también se denominan a veces No solo SQL para enfatizar que pueden admitir lenguajes de consulta similares a SQL o sentarse junto a bases de datos SQL en arquitecturas persistentes políglotas . [6] [7]

Las motivaciones para este enfoque incluyen la simplicidad del diseño , un escalado "horizontal" más simple a grupos de máquinas (que es un problema para las bases de datos relacionales), [2] un control más preciso sobre la disponibilidad y la limitación del desajuste de impedancia relacional del objeto . [8] Las estructuras de datos utilizadas por las bases de datos NoSQL (por ejemplo , par clave-valor , columna ancha , gráfico o documento ).) son diferentes de los que se usan por defecto en las bases de datos relacionales, lo que hace que algunas operaciones sean más rápidas en NoSQL. La idoneidad particular de una base de datos NoSQL dada depende del problema que debe resolver. A veces, las estructuras de datos utilizadas por las bases de datos NoSQL también se consideran "más flexibles" que las tablas de bases de datos relacionales. [9]

Muchas tiendas NoSQL comprometen la consistencia (en el sentido del teorema CAP ) a favor de la disponibilidad, la tolerancia a la partición y la velocidad. Las barreras para una mayor adopción de las tiendas NoSQL incluyen el uso de lenguajes de consulta de bajo nivel (en lugar de SQL, por ejemplo), la falta de capacidad para realizar uniones ad hoc entre tablas, la falta de interfaces estandarizadas y grandes inversiones previas en bases de datos relacionales existentes. . [10] La mayoría de las tiendas NoSQL carecen de verdaderas transacciones ACID , aunque algunas bases de datos las han convertido en el centro de sus diseños.

En su lugar, la mayoría de las bases de datos NoSQL ofrecen un concepto de " coherencia eventual ", en el que los cambios de la base de datos se propagan a todos los nodos "eventualmente" (generalmente en milisegundos), por lo que las consultas de datos pueden no devolver datos actualizados inmediatamente o pueden resultar en la lectura de datos que son no es preciso, un problema conocido como lecturas obsoletas. [11] Además, algunos sistemas NoSQL pueden exhibir escrituras perdidas y otras formas de pérdida de datos . [12] Algunos sistemas NoSQL proporcionan conceptos como el registro de escritura anticipada para evitar la pérdida de datos. [13] Para el procesamiento de transacciones distribuidasa través de múltiples bases de datos, la consistencia de los datos es un desafío aún mayor que es difícil tanto para NoSQL como para las bases de datos relacionales. Las bases de datos relacionales "no permiten que las restricciones de integridad referencial abarquen las bases de datos". [14] Pocos sistemas mantienen las transacciones ACID y los estándares X/Open XA para el procesamiento de transacciones distribuidas. [15] Las bases de datos relacionales interactivas comparten técnicas de análisis de relés conformacionales como una característica común. [16] Las limitaciones dentro del entorno de la interfaz se superan mediante protocolos de virtualización semántica, de modo que los servicios NoSQL son accesibles para la mayoría de los sistemas operativos. [17]

El término NoSQL fue utilizado por Carlo Strozzi en 1998 para nombrar su ligera base de datos relacional de código abierto Strozzi NoSQL que no exponía la interfaz de lenguaje de consulta estructurado (SQL) estándar, pero seguía siendo relacional. [18] Su RDBMS NoSQL es distinto del concepto general de alrededor de 2009 de las bases de datos NoSQL. Strozzi sugiere que, debido a que el movimiento NoSQL actual "se aparta del modelo relacional por completo, debería haberse llamado más apropiadamente 'NoREL'", [19] refiriéndose a "no relacional".

Johan Oskarsson, entonces desarrollador en Last.fm , reintrodujo el término NoSQL a principios de 2009 cuando organizó un evento para discutir " bases de datos no relacionales distribuidas de código abierto ". [20] El nombre intentó etiquetar la aparición de un número cada vez mayor de almacenes de datos distribuidos no relacionales, incluidos clones de código abierto de Bigtable / MapReduce de Google y DynamoDB de Amazon .