Articulo de referencia

NoSQL

NoSQL (un término coloquial que se formalizó y significa "no solo SQL " o "no relacional") [ 1 ] se refiere a un tipo de diseño de base de datos que almacena y recupera datos de...

NoSQL (un término coloquial que se formalizó y significa "no solo SQL " o "no relacional") [ 1 ] se refiere a un tipo de diseño de base de datos que almacena y recupera datos de manera diferente a la estructura tradicional basada en tablas de las bases de datos relacionales . A diferencia de las bases de datos relacionales, que organizan los datos en filas y columnas como una hoja de cálculo, las bases de datos NoSQL utilizan una única estructura de datos —como pares clave-valor , columnas anchas , grafos o documentos— para almacenar información. Dado que este diseño no relacional no requiere un esquema fijo , se escala fácilmente para gestionar grandes conjuntos de datos, a menudo no estructurados . [ 2 ] Los sistemas NoSQL a veces se denominan "No solo SQL" porque pueden admitir lenguajes de consulta similares a SQL o funcionar junto con bases de datos SQL en configuraciones persistentes políglotas , donde se combinan varios tipos de bases de datos. [ 3 ] [ 4 ] Las bases de datos no relacionales se remontan a finales de la década de 1960, pero el término "NoSQL" surgió a principios de la década de 2000, impulsado por las necesidades de las empresas de la Web 2.0 , como las plataformas de redes sociales. [ 5 ] [ 6 ]

Las bases de datos NoSQL son populares en aplicaciones web de big data y en tiempo real debido a su diseño simple, su capacidad de escalar en clústeres de máquinas (llamado escalado horizontal ) y el control preciso sobre la disponibilidad de los datos . [ 7 ] [ 8 ] Estas estructuras pueden acelerar ciertas tareas y a menudo se consideran más adaptables que las tablas de bases de datos fijas. [ 9 ] Sin embargo, muchos sistemas NoSQL priorizan la velocidad y la disponibilidad sobre la consistencia estricta (según el teorema CAP ), utilizando consistencia eventual , donde las actualizaciones llegan a todos los nodos eventualmente, generalmente en milisegundos, pero pueden causar breves retrasos en el acceso a los datos más recientes, conocidos como lecturas obsoletas . [ 10 ] Si bien la mayoría carece de soporte completo para transacciones ACID , algunos, como MongoDB , lo incluyen como una característica clave. [ 11 ]

Barreras para la adopción

Las barreras para una mayor adopción de NoSQL incluyen el uso de lenguajes de consulta de bajo nivel en lugar de SQL, la incapacidad de realizar uniones ad hoc entre tablas, la falta de interfaces estandarizadas y las importantes inversiones ya realizadas en bases de datos relacionales. [ 12 ] Algunos sistemas NoSQL corren el riesgo de perder datos debido a escrituras perdidas u otras formas, aunque características como el registro de escritura anticipada (un método para registrar los cambios antes de que se apliquen) pueden ayudar a prevenir esto. [ 13 ] [ 14 ] Para el procesamiento de transacciones distribuidas en múltiples bases de datos, mantener la coherencia de los datos es un desafío tanto para los sistemas NoSQL como para los relacionales, ya que las bases de datos relacionales no pueden aplicar reglas que vinculen bases de datos separadas, y pocos sistemas admiten transacciones ACID y estándares X/Open XA para administrar actualizaciones distribuidas. [ 15 ] [ 16 ] 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 . [ 17 ]

Historia

Reproductor de Last.fm
Reproductor de Last.fm

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

Johan Oskarsson, entonces desarrollador en Last.fm , reintrodujo el término NoSQL a principios de 2009 cuando organizó un evento para hablar sobre " bases de datos no relacionales distribuidas de código abierto ". [ 20 ] El nombre intentaba etiquetar la aparición de un número creciente de almacenes de datos distribuidos 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: [ 21 ]

Tienda de clave-valor

Los almacenes clave-valor (KV) utilizan el array asociativo (también llamado 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. [ 24 ] [ 25 ]

El modelo clave-valor es uno de los modelos de datos no triviales más simples, y los modelos de datos más complejos suelen implementarse como una extensión del mismo. El modelo clave-valor puede extenderse a un modelo discretamente ordenado que mantiene las claves en orden lexicográfico . Esta extensión es computacionalmente potente, ya que puede recuperar eficientemente rangos de claves selectivos . [ 26 ]

Las bases de datos clave-valor pueden utilizar modelos de consistencia que van desde la consistencia eventual hasta la serializabilidad . Algunas bases de datos admiten la ordenación de claves. Existen diversas implementaciones de hardware, y algunos usuarios almacenan los datos en memoria RAM, mientras que otros lo hacen en unidades de estado sólido (SSD) o discos duros (HDD).

Archivo de documentos

El concepto central de un repositorio de documentos es el de "documento". Si bien los detalles de esta definición varían entre las bases de datos orientadas a documentos, todas asumen que los documentos encapsulan y codifican datos (o información) en formatos o codificaciones estándar. Entre las codificaciones utilizadas se incluyen XML , YAML y JSON , así como formatos binarios como BSON . Los documentos se identifican en la base de datos mediante una clave única que los representa. Otra característica distintiva de una base de datos orientada a documentos es una API o lenguaje de consulta para recuperar documentos según su contenido.

Las distintas implementaciones ofrecen diferentes maneras de organizar y/o agrupar documentos:

  • Colecciones
  • Etiquetas
  • metadatos no visibles
  • Jerarquías de directorios

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

Gráfico

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

Bases de datos de grafos 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 tener en cuenta 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 concurrentes .

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

Las comparaciones de rendimiento y escalabilidad se realizan habitualmente utilizando el benchmark 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 gestionar datos relacionales en una base de datos NoSQL. (Consulte la sección sobre unión de tablas y compatibilidad con ACID para bases de datos NoSQL que admiten uniones).

Múltiples consultas

En lugar de recuperar todos los datos con una sola consulta, es común realizar varias para obtener la información deseada. Las consultas NoSQL suelen ser más rápidas que las consultas SQL tradicionales, por lo que el coste de las consultas adicionales puede ser aceptable. Si fuera necesario un número excesivo de consultas, uno de los otros dos enfoques sería más apropiado.

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

En lugar de almacenar únicamente claves foráneas, es común almacenar los valores foráneos 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 facilita el acceso al nombre de usuario sin necesidad de realizar otra búsqueda. Sin embargo, cuando un nombre de usuario cambia, será necesario actualizarlo en muchos lugares de la base de datos. Por lo tanto, este enfoque funciona mejor cuando las lecturas son mucho más frecuentes que las escrituras. [ 29 ]

Anidamiento de datos

En bases de datos de documentos como MongoDB, es común almacenar más datos en un número menor de colecciones. Por ejemplo, en una aplicación de blogs, se podría optar por guardar los comentarios dentro del documento de la entrada, de modo que con una sola consulta se obtengan todos los comentarios. Así, con este enfoque, un solo documento contiene todos los datos necesarios para una tarea específica.

Ácido y únase al apoyo

Una base de datos se considera compatible con las propiedades ACID (atomicidad, consistencia, aislamiento y durabilidad) o con las operaciones de unión si su documentación así lo indica. Sin embargo, esto no significa necesariamente que dicha funcionalidad esté totalmente soportada, al igual que la mayoría de las bases de datos SQL.

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

Optimización de consultas e indexación en bases de datos NoSQL

Las distintas bases de datos NoSQL, como DynamoDB , MongoDB , Cassandra , Couchbase , HBase y Redis, presentan comportamientos diversos al consultar campos no indexados. Muchas realizan escaneos completos de tablas o colecciones para este tipo de consultas, aplicando operaciones de filtrado tras recuperar los datos. Sin embargo, las bases de datos NoSQL modernas suelen incorporar funciones avanzadas para optimizar el rendimiento de las consultas. Por ejemplo, MongoDB admite índices compuestos y estrategias de optimización de consultas; Cassandra ofrece índices secundarios y vistas materializadas; y Redis emplea mecanismos de indexación personalizados adaptados a casos de uso específicos. Sistemas como Elasticsearch utilizan índices invertidos para búsquedas de texto eficientes, pero aun así pueden requerir escaneos completos para campos no indexados. Este comportamiento refleja el enfoque de diseño de muchos sistemas NoSQL en la escalabilidad y las operaciones eficientes basadas en claves, en lugar de la optimización de consultas para campos arbitrarios. En consecuencia, si bien estas bases de datos destacan en operaciones CRUD básicas y búsquedas basadas en claves, su idoneidad para consultas complejas que implican uniones o filtrado no indexado varía según el tipo de base de datos (documento, clave-valor, columna ancha o grafo) y la implementación específica. [ 33 ]

Véase también

Referencias

  1. http://nosql-database.org/ "DEFINICIÓN DE NoSQL: Bases de datos de próxima generación que 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 más bien significa No Solo SQL.
  5. Mohan, C. (2013). La historia se repite: aspectos sensatos y absurdos del fenómeno NoSQL (PDF) . Actas de la 16.ª Conferencia Internacional sobre la Extensión de la Tecnología de Bases de Datos.
  6. "Amazon regresa al futuro con la base de datos 'NoSQL'" . WIRED. 19 de enero de 2012. Consultado el 6 de marzo de 2017 .
  7. Leavitt, Neal (2010). "¿Cumplirán las bases de datos NoSQL con su promesa?" (PDF) . IEEE Computer . 43 (2): 12– 14. Bibcode : 2010Compr..43b..12L . doi : 10.1109/MC.2010.58 . S2CID 26876882 . 
  8. "Los sistemas de gestión de bases de datos relacionales (RDBMS) dominan el mercado, pero los sistemas NoSQL les están pisando los talones" . DB-Engines.com. 21 de noviembre de 2013. Archivado del original el 24 de noviembre de 2013. Consultado el 24 de noviembre de 2013 .
  9. 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 .
  10. "Jepsen: Lecturas obsoletas de MongoDB" . Aphyr.com . 20 de abril de 2015. Consultado el 6 de marzo de 2017 .
  11. "Transacciones ACID de MongoDB" . GeeksforGeeks . 12 de marzo de 2024. Consultado el 25 de octubre de 2024 .
  12. 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 . Recuperado el 8 de enero de 2014 .
  13. "Análisis de grandes volúmenes de datos en la plataforma reactiva Typesafe" . Slideshare.net . 11 de junio de 2015. Consultado el 6 de marzo de 2017 .
  14. Fowler, Adam. "10 conceptos erróneos sobre NoSQL" . Dummies.com . Consultado el 6 de marzo de 2017 .
  15. "¡No! a SQL y ¡No! a NoSQL" . Iggyfernandez.wordpress.com . 29 de julio de 2013. Consultado el 6 de marzo de 2017 .
  16. Chapple, Mike. "El modelo ACID" . about.com . Archivado del original el 29 de diciembre de 2016. Consultado el 26 de septiembre de 2012 .
  17. 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 .
  18. Lith, Adam; Mattson, Jakob (2010). "Investigación de soluciones de almacenamiento para grandes volúmenes de 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) . Departamento de Ciencias de la Computación e Ingeniería, Universidad Tecnológica de Chalmers. pág. 70. Recuperado el 12 de mayo de 2011 . 
  19. "Sistema de gestión de bases de datos relacionales NoSQL: Página principal" . Strozzi.it. 2 de octubre de 2007. Consultado el 29 de marzo de 2010 .
  20. "NoSQL 2009" . Blog.sym-link.com. 12 de mayo de 2009. Archivado del original el 16 de julio de 2011. Consultado el 29 de marzo de 2010 .
  21. Strauch, Christof. "Bases de datos NoSQL" (PDF) . págs. 23–24 . Consultado el 27 de agosto de 2017 . 
  22. https://apacheignite.readme.io/docs Documentación de Ignite
  23. https://www.infoworld.com/article/3135070/data-center/fire-up-big-data-processing-with-apache-ignite.html fire-up-big-data-processing-with-apache-ignite
  24. Sandy (14 de enero de 2011). "Almacenes clave-valor y el movimiento NoSQL" . Stackexchange . Recuperado el 1 de enero de 2012. Los almacenes clave-valor permiten al desarrollador de aplicaciones almacenar datos sin esquema. Estos datos suelen consistir en 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 primitiva del lenguaje de programación (una cadena, un entero o una matriz) o un objeto que está siendo serializado por los enlaces del lenguaje de programación al almacén clave-valor. Esta estructura reemplaza la necesidad de un modelo de datos fijo y permite un formato adecuado.
  25. Seeger, Marc (21 de septiembre de 2009). "Almacenes clave-valor: una visión general práctica" (PDF) . Marc Seeger . Consultado el 1 de enero de 2012. Los almacenes clave-valor ofrecen una alternativa de alto rendimiento a los sistemas de bases de datos relacionales en lo que respecta al almacenamiento y acceso a datos. Este documento ofrece una breve descripción general de algunos de los almacenes clave-valor disponibles actualmente y su interfaz con el lenguaje de programación Ruby.
  26. Katsov, Ilya (1 de marzo de 2012). "Técnicas de modelado de datos NoSQL" . Ilya Katsov . Recuperado el 8 de mayo de 2014 .
  27. "TerminusDB, una base de datos gráfica de documentos en memoria de código abierto" . terminusdb.com . Consultado el 16 de diciembre de 2021 .
  28. Scofield, Ben (14 de enero de 2010). "NoSQL - ¿Muerte a las bases de datos relacionales?" . Recuperado el 26 de junio de 2014 .
  29. "Transición de bases de datos relacionales a NoSQL: cómo empezar" . Couchbase.com . Consultado el 11 de noviembre de 2019 .
  30. "¿No se pueden hacer uniones con MarkLogic? ¡Es solo cuestión de semántica! - General Networks" . Gennet.com . Archivado del original el 3 de marzo de 2017. Consultado el 6 de marzo de 2017 .
  31. "Restricciones de colecciones fragmentadas" . docs.mongodb.com . Consultado el 24 de enero de 2020 .
  32. "Referencia SQL · Manual de OrientDB" . OrientDB.com . Consultado el 24 de enero de 2020 .
  33. Sullivan, Dan. NoSQL para simples mortales . ISBN 978-0134023212.

Lecturas adicionales

  • Sadalage, Pramod; Fowler, Martin (2012). NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence . Addison-Wesley. ISBN 978-0-321-82662-6.
  • McCreary, Dan; Kelly, Ann (2013). Entendiendo NoSQL: Una guía para gerentes y todos nosotros . Manning. ISBN 9781617291074.
  • Wiese, Lena (2015). Gestión avanzada de datos para SQL, NoSQL, bases de datos en la nube y distribuidas . DeGruyter/Oldenbourg. ISBN 978-3-11-044140-6.
  • Strauch, Christof (2012). "Bases de datos NoSQL" (PDF) .
  • Moniruzzaman, AB; Hossain, SA (2013). "Base de datos NoSQL: Nueva era de bases de datos para análisis de big data: clasificación, características y comparación". arXiv : 1307.0191 [ cs.DB ].
  • Orend, Kai (2013). "Análisis y clasificación de bases de datos NoSQL y evaluación de su capacidad para reemplazar una capa de persistencia objeto-relacional". CiteSeerX 10.1.1.184.483 . 
  • Krishnan, Ganesh; Kulkarni, Sarang; Dadbhawala, Dharmesh Kirit. "Método y sistema para compartir, consolidar y reportar información versionada" .
  • Strauch, Christof. "Documento técnico de NoSQL" (PDF) . Stuttgart: Hochschule der Medien.
  • Edlich, Stefan. "Lista de bases de datos NoSQL" .
  • Neubauer, Peter (2010). "Bases de datos gráficas, NOSQL y Neo4j" .
  • Bushik, Sergey (2012). "Una comparación independiente del proveedor de bases de datos NoSQL: Cassandra, HBase, MongoDB, Riak" . NetworkWorld.
  • Zicari, Roberto V. (2014). "Almacenes de datos NoSQL: artículos, documentos y presentaciones" . odbms.org .