stringtranslate.com

No SQL

NoSQL (originalmente se refería a "no SQL " o "no relacional") [1] es un enfoque para el diseño de bases de datos que se centra en proporcionar un mecanismo para el almacenamiento y la recuperación de datos que se modela en medios distintos a las relaciones tabulares utilizadas en las bases de datos relacionales . En lugar de la estructura tabular típica de una base de datos relacional, las bases de datos NoSQL albergan datos dentro de una estructura de datos. Dado que este diseño de base de datos no relacional no requiere un esquema , ofrece una rápida escalabilidad para administrar conjuntos de datos grandes y generalmente no estructurados. [2] Los sistemas NoSQL también se denominan a veces "No solo SQL" para enfatizar que pueden admitir lenguajes de consulta similares a SQL o ubicarse junto con bases de datos SQL en arquitecturas persistentes políglotas . [3] [4]

Las bases de datos no relacionales existen desde finales de los años 1960, pero el nombre "NoSQL" recién se acuñó a principios de los años 2000, [5] impulsado por las necesidades de las empresas de la Web 2.0 . [6] [7] Las bases de datos NoSQL se utilizan cada vez más en big data y aplicaciones web en tiempo real . [8]

Las motivaciones para este enfoque incluyen la simplicidad del diseño , un escalamiento "horizontal" más simple a grupos de máquinas (que es un problema para las bases de datos relacionales), [5] un control más preciso sobre la disponibilidad y la limitación del desajuste de impedancia objeto-relacional . [9] 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 las utilizadas 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 determinada 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 . [10]

Muchos almacenes NoSQL sacrifican la consistencia (en el sentido del teorema CAP ) en favor de la disponibilidad, la tolerancia a las particiones y la velocidad. Las barreras para una mayor adopción de los almacenes 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 enormes inversiones previas en bases de datos relacionales existentes. [11] La mayoría de los almacenes NoSQL carecen de verdaderas transacciones ACID , aunque algunas bases de datos como MongoDB las han convertido en un elemento central de sus diseños. [12]

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

Historia

El término NoSQL fue utilizado por Carlo Strozzi en 1998 para nombrar su base de datos relacional ligera Strozzi NoSQL de código abierto que no exponía la interfaz estándar del lenguaje de consulta estructurado (SQL), pero que seguía siendo relacional. [20] Su RDBMS NoSQL es distinto del concepto general de bases de datos NoSQL de alrededor de 2009. Strozzi sugiere que, debido a que el movimiento NoSQL actual "se aparta por completo del modelo relacional, debería haber sido llamado más apropiadamente 'NoREL'", [21] 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 distribuidas y no relacionales de código abierto ". [22] El nombre intentó etiquetar el surgimiento de un número cada vez mayor de almacenes de datos distribuidos y no relacionales, incluidos clones de código abierto de Bigtable / MapReduce de Google y DynamoDB de Amazon .

Tipos y ejemplos

Existen diversas formas de clasificar las bases de datos NoSQL, con diferentes categorías y subcategorías, algunas de las cuales se superponen. A continuación se presenta una clasificación no exhaustiva por modelo de datos, con ejemplos: [23]

Almacén de clave-valor

Los almacenes de clave-valor (KV) utilizan la matriz asociativa (también llamada mapa o diccionario) como su modelo de datos fundamental. En este modelo, los datos se representan como una colección de pares clave-valor, de modo que cada clave posible aparece como máximo una vez en la colección. [26] [27]

El modelo clave-valor es uno de los modelos de datos no triviales más simples, y a menudo se implementan modelos de datos más ricos como una extensión de este. El modelo clave-valor se puede extender a un modelo ordenado discretamente que mantiene las claves en orden lexicográfico . Esta extensión es computacionalmente poderosa, ya que puede recuperar de manera eficiente rangos de claves selectivos . [28]

Los almacenes de clave-valor pueden utilizar modelos de consistencia que van desde la consistencia eventual hasta la serialización . Algunas bases de datos admiten el ordenamiento de claves. Existen varias implementaciones de hardware y algunos usuarios almacenan datos en la memoria (RAM), mientras que otros lo hacen en unidades de estado sólido (SSD) o discos giratorios (también conocidos como unidades de disco duro (HDD)).

Almacén de documentos

El concepto central de un almacén de documentos es el de "documento". Si bien los detalles de esta definición difieren entre las bases de datos orientadas a documentos, todas asumen que los documentos encapsulan y codifican datos (o información) en algunos formatos o codificaciones estándar. Las codificaciones en uso incluyen XML , YAML y JSON y formatos binarios como BSON . Los documentos se direccionan en la base de datos a través de una clave única que representa ese documento. Otra característica definitoria de una base de datos orientada a documentos es una API o lenguaje de consulta para recuperar documentos en función de su contenido.

Diferentes implementaciones ofrecen diferentes formas de organizar y/o agrupar documentos:

En comparación con las bases de datos relacionales, las colecciones se podrían considerar análogas a las tablas y los documentos a los registros, pero son diferentes: cada registro de una tabla tiene la misma secuencia de campos, mientras que los documentos de una colección pueden tener campos completamente diferentes.

Gráfico

Las bases de datos de grafos están diseñadas para datos cuyas relaciones se representan bien como un grafo que consta de elementos conectados por un número finito de relaciones. Algunos ejemplos de datos son las relaciones sociales , los enlaces de transporte público, los mapas de carreteras, las topologías de red, etc.

Bases de datos gráficas y su lenguaje de consulta

Actuación

El rendimiento de las bases de datos NoSQL se suele evaluar mediante la métrica de rendimiento , que se mide en operaciones por segundo. La evaluación del rendimiento debe prestar atención a los parámetros de referencia adecuados , como las configuraciones de producción, los parámetros de las bases de datos, el volumen de datos previsto y las cargas de trabajo de los usuarios simultáneos .

Ben Scofield clasificó diferentes categorías de bases de datos NoSQL de la siguiente manera: [30]

Las comparaciones de rendimiento y escalabilidad generalmente se realizan utilizando el punto de referencia YCSB .

Manejo de datos relacionales

Dado que la mayoría de las bases de datos NoSQL carecen de la capacidad de realizar uniones en las consultas, el esquema de la base de datos generalmente debe diseñarse de manera diferente. Existen tres técnicas principales para manejar datos relacionales en una base de datos NoSQL. (Consulte la tabla Compatibilidad con uniones y ACID para bases de datos NoSQL que admiten uniones).

Consultas múltiples

En lugar de recuperar todos los datos con una sola consulta, es habitual realizar varias consultas para obtener los datos deseados. Las consultas NoSQL suelen ser más rápidas que las consultas SQL tradicionales, por lo que el coste de las consultas adicionales puede resultar aceptable. Si fuera necesario realizar una cantidad excesiva de consultas, uno de los otros dos enfoques es más adecuado.

Almacenamiento en caché, replicación y datos no normalizados

En lugar de almacenar únicamente claves externas, es habitual almacenar valores externos reales junto con los datos del modelo. Por ejemplo, cada comentario de blog podría incluir el nombre de usuario además de un ID de usuario, lo que proporciona un acceso fácil al nombre de usuario sin necesidad de realizar otra búsqueda. Sin embargo, cuando cambia un nombre de usuario, será necesario cambiarlo en muchos lugares de la base de datos. Por lo tanto, este enfoque funciona mejor cuando las lecturas son mucho más comunes que las escrituras. [31]

Datos de anidación

Con bases de datos de documentos como MongoDB, es habitual colocar más datos en un número menor de colecciones. Por ejemplo, en una aplicación de blogs, se puede optar por almacenar comentarios dentro del documento de la entrada del blog de modo que con una única recuperación se obtengan todos los comentarios. Por lo tanto, con este enfoque, un único documento contiene todos los datos que se necesitan para una tarea específica.

ACID y unirse al soporte

Una base de datos se marca como compatible con propiedades ACID (atomicidad, consistencia, aislamiento, durabilidad) u operaciones de unión si la documentación de la base de datos lo indica. Sin embargo, esto no significa necesariamente que la capacidad sea totalmente compatible de manera similar a la mayoría de las bases de datos SQL.

  1. ^ Las uniones no se aplican necesariamente a bases de datos de documentos, pero MarkLogic puede realizar uniones usando semántica. [32]
  2. ^ MongoDB no admitía la unión desde una colección fragmentada hasta la versión 5.1. [33]
  3. ^ OrientDB puede resolver uniones 1:1 mediante enlaces almacenando enlaces directos a registros externos. [34]

Véase también

Referencias

  1. ^ http://nosql-database.org/ "DEFINICIÓN NoSQL: Las bases de datos de próxima generación abordan principalmente algunos de los puntos: ser no relacionales, distribuidas, de código abierto y escalables horizontalmente".
  2. ^ "¿Qué es una base de datos NoSQL? | IBM". www.ibm.com . 12 de diciembre de 2022 . Consultado el 9 de agosto de 2024 .
  3. ^ "NoSQL (Not Only SQL)". Base de datos NoSQL, también llamada Not Only SQL
  4. ^ Fowler, Martin . "NosqlDefinition". Muchos defensores de NoSQL dicen que no significa un "no" a SQL, sino que significa No sólo SQL.
  5. ^ ab Leavitt, Neal (2010). "¿Las bases de datos NoSQL cumplirán con su promesa?" (PDF) . IEEE Computer . 43 (2): 12–14. doi :10.1109/MC.2010.58. S2CID  26876882.
  6. ^ Mohan, C. (2013). La historia se repite: aspectos sensatos y no sensatos de la agitación de NoSQL (PDF) . Actas de la 16.ª Conferencia Internacional sobre la Extensión de la Tecnología de Bases de Datos.
  7. ^ "Amazon vuelve al futuro con una base de datos 'NoSQL'". WIRED. 19 de enero de 2012. Consultado el 6 de marzo de 2017 .
  8. ^ "Los RDBMS dominan el mercado de bases de datos, pero los sistemas NoSQL se están poniendo al día". DB-Engines.com. 21 de noviembre de 2013. Consultado el 24 de noviembre de 2013 .
  9. ^ NoSQL Distilled: Una breve guía para el mundo emergente de la persistencia políglota. Addison-Wesley Educational Publishers Inc, 2009, ISBN 978-0321826626
  10. ^ Vogels, Werner (18 de enero de 2012). «Amazon DynamoDB: un servicio de base de datos NoSQL rápido y escalable diseñado para aplicaciones a escala de Internet». All Things Distributed . Consultado el 6 de marzo de 2017 .
  11. ^ Grolinger, K.; Higashino, WA; Tiwari, A.; Capretz, MAM (2013). "Gestión de datos en entornos de nube: almacenes de datos NoSQL y NewSQL" (PDF) . Aira, Springer . Consultado el 8 de enero de 2014 .
  12. ^ "Transacciones ACID de MongoDB". GeeksforGeeks . 12 de marzo de 2024 . Consultado el 25 de octubre de 2024 .
  13. ^ "Jepsen: MongoDB stale reads". Aphyr.com . 20 de abril de 2015 . Consultado el 6 de marzo de 2017 .
  14. ^ "Análisis de datos de gran volumen en la plataforma reactiva Typesafe". Slideshare.net . 11 de junio de 2015 . Consultado el 6 de marzo de 2017 .
  15. ^ Fowler, Adam. "10 conceptos erróneos sobre NoSQL". Dummies.com . Consultado el 6 de marzo de 2017 .
  16. ^ "No! a SQL y No! a NoSQL | Tantos manuales de Oracle, tan poco tiempo". Iggyfernandez.wordpress.com . 29 julio 2013 . Consultado el 6 marzo 2017 .
  17. ^ Chapple, Mike. "El modelo ACID". about.com . Archivado desde el original el 29 de diciembre de 2016. Consultado el 26 de septiembre de 2012 .
  18. ^ Fiore, S. (2011). Gestión de bases de datos en red y en la nube . Springer Science & Business Media. pág. 210.
  19. ^ Lawrence, Integración y virtualización de sistemas relacionales SQL y NoSQL, incluidos MySQL y MongoDB (2014). "Integración y virtualización de sistemas relacionales SQL y NoSQL, incluidos MySQL y MongoDB". Conferencia internacional sobre ciencia computacional e inteligencia computacional 1 .
  20. ^ Lith, Adam; Mattson, Jakob (2010). "Investigación de soluciones de almacenamiento para grandes datos: una comparación de soluciones de almacenamiento de datos escalables y de alto rendimiento para la extracción en tiempo real y la inserción por lotes de datos" (PDF) . Gotemburgo: Departamento de Ciencias Informáticas e Ingeniería, Universidad Tecnológica de Chalmers. p. 70. Consultado el 12 de mayo de 2011. Carlo Strozzi utilizó por primera vez el término NoSQL en 1998 como nombre para su base de datos relacional de código abierto que no ofrecía una interfaz SQL[...]
  21. ^ "Sistema de gestión de bases de datos relacionales NoSQL: página de inicio". Strozzi.it. 2 de octubre de 2007. Consultado el 29 de marzo de 2010 .
  22. ^ "NoSQL 2009". Blog.sym-link.com. 12 de mayo de 2009. Archivado desde el original el 16 de julio de 2011. Consultado el 29 de marzo de 2010 .
  23. ^ Strauch, Christof. «Bases de datos NoSQL» (PDF) . pp. 23–24 . Consultado el 27 de agosto de 2017 .
  24. ^ https://apacheignite.readme.io/docs Documentación de Ignite
  25. ^ https://www.infoworld.com/article/3135070/data-center/active-big-data-processing-with-apache-ignite.html active-big-data-processing-with-apache-ignite
  26. ^ Sandy (14 de enero de 2011). "Key Value stores and the NoSQL movement". Stackexchange . Consultado el 1 de enero de 2012 . Los almacenes de clave-valor permiten al desarrollador de aplicaciones almacenar datos sin esquema. Estos datos suelen constar de una cadena que representa la clave y los datos reales que se consideran el valor en la relación "clave-valor". Los datos en sí suelen ser algún tipo de primitivo del lenguaje de programación (una cadena, un entero o una matriz) o un objeto que se está ordenando por los enlaces del lenguaje de programación al almacén de clave-valor. Esta estructura reemplaza la necesidad de un modelo de datos fijo y permite un formato adecuado.
  27. ^ Seeger, Marc (21 de septiembre de 2009). "Key-Value Stores: a practical overview" (PDF) . Marc Seeger . Consultado el 1 de enero de 2012 . Los almacenes de clave-valor proporcionan una alternativa de alto rendimiento a los sistemas de bases de datos relacionales con respecto al almacenamiento y acceso a los datos. Este documento proporciona una breve descripción general de algunos de los almacenes de clave-valor disponibles actualmente y su interfaz con el lenguaje de programación Ruby.
  28. ^ Katsov, Ilya (1 de marzo de 2012). "NoSQL Data Modeling Techniques". Ilya Katsov . Consultado el 8 de mayo de 2014 .
  29. ^ "TerminusDB, una base de datos de gráficos de documentos en memoria de código abierto". terminusdb.com . Consultado el 16 de diciembre de 2021 .
  30. ^ Scofield, Ben (14 de enero de 2010). "NoSQL: ¿la muerte de las bases de datos relacionales?" . Consultado el 26 de junio de 2014 .
  31. ^ "Pasar de relacional a NoSQL: cómo empezar". Couchbase.com . Consultado el 11 de noviembre de 2019 .
  32. ^ "¿No se pueden realizar uniones con MarkLogic? ¡Es solo una cuestión de semántica! - General Networks". Gennet.com . Archivado desde el original el 3 de marzo de 2017. Consultado el 6 de marzo de 2017 .
  33. ^ "Restricciones de colecciones fragmentadas". docs.mongodb.com . Consultado el 24 de enero de 2020 .
  34. ^ "Referencia SQL · Manual de OrientDB". OrientDB.com . Consultado el 24 de enero de 2020 .

Lectura adicional

Enlaces externos