Un NoSQL que originalmente se refiere a no SQL o no relacional es una base de datos que proporciona un mecanismo para el almacenamiento y recuperación de datos. Estos datos se modelan en medios distintos de las relaciones tabulares utilizadas en las bases de datos relacionales. Tales bases de datos surgieron a fines de la década de 1960, pero no obtuvieron el apodo de NoSQL hasta que se popularizaron a principios del siglo XXI. Las bases de datos NoSQL se utilizan en aplicaciones web en tiempo real y big data y su uso está aumentando con el tiempo. Los sistemas NoSQL también se denominan a veces No solo SQL para enfatizar el hecho de que pueden admitir lenguajes de consulta similares a SQL.
Una base de datos NoSQL incluye simplicidad de diseño, escalamiento horizontal más simple a grupos de máquinas y un control más preciso sobre la disponibilidad. Las estructuras de datos que utilizan las bases de datos NoSQL son diferentes de las que se utilizan de forma predeterminada en las bases de datos relacionales, lo que hace que algunas operaciones sean más rápidas en NoSQL. La idoneidad de una base de datos NoSQL determinada depende del problema que deba resolver. Las estructuras de datos utilizadas por las bases de datos NoSQL a veces también se consideran más flexibles que las tablas de bases de datos relacionales.
Muchas tiendas NoSQL comprometen la coherencia a favor de la disponibilidad, la velocidad y la tolerancia a la partición. Las barreras para una mayor adopción de las tiendas NoSQL incluyen el uso de lenguajes de consulta de bajo nivel, la falta de interfaces estandarizadas y grandes inversiones previas en bases de datos relacionales existentes. La mayoría de las tiendas NoSQL carecen de verdaderas transacciones ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad), pero algunas bases de datos, como MarkLogic, Aerospike, FairCom c-treeACE, Google Spanner (aunque técnicamente es una base de datos NewSQL), Symas LMDB y OrientDB las han hecho central de sus diseños.
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 Nodes, por lo que es posible que las consultas de datos no devuelvan datos actualizados inmediatamente o que la lectura de datos no sea precisa, lo que se conoce como lecturas obsoletas. Además, algunos sistemas NoSQL pueden exhibir escrituras perdidas y otras formas de pérdida de datos. Algunos sistemas NoSQL proporcionan conceptos como el registro de escritura anticipada para evitar la pérdida de datos. Para el procesamiento de transacciones distribuidas en múltiples bases de datos, la consistencia de los datos es un desafío aún mayor. Esto es difícil tanto para NoSQL como para bases de datos relacionales. Incluso las bases de datos relacionales actuales no permiten restricciones de integridad referencial para abarcar bases de datos. Hay pocos sistemas que mantienen tanto los estándares X/Open XA como las transacciones ACID para el procesamiento de transacciones distribuidas.
Ventajas de NoSQL:
hay muchas ventajas de trabajar con bases de datos NoSQL como MongoDB y Cassandra. Las principales ventajas son la alta escalabilidad y la alta disponibilidad.
- Alta escalabilidad:
la base de datos NoSQL usa fragmentación para la escala horizontal. Particionar los datos y colocarlos en varias máquinas de tal manera que se conserve el orden de los datos es fragmentación. La escala vertical significa agregar más recursos a la máquina existente, mientras que la escala horizontal significa agregar más máquinas para manejar los datos. La escala vertical no es tan fácil de implementar, pero la escala horizontal es fácil de implementar. Ejemplos de bases de datos de escala horizontal son MongoDB, Cassandra, etc. NoSQL puede manejar una gran cantidad de datos debido a la escalabilidad, a medida que los datos crecen, NoSQL se escala para manejar esos datos de manera eficiente. - Alta disponibilidad:
la función de replicación automática en las bases de datos NoSQL hace que esté altamente disponible porque, en caso de falla, los datos se replican a sí mismos al estado anterior consistente.
Desventajas de NoSQL:
NoSQL tiene las siguientes desventajas.
- Enfoque limitado:
las bases de datos NoSQL tienen un enfoque muy limitado, ya que están diseñadas principalmente para el almacenamiento, pero proporcionan muy poca funcionalidad. Las bases de datos relacionales son una mejor opción en el campo de la gestión de transacciones que NoSQL. - Código abierto:
NoSQL es una base de datos de código abierto. Todavía no existe un estándar confiable para NoSQL. En otras palabras, es probable que dos sistemas de bases de datos sean desiguales. - Desafío de gestión:
el propósito de las herramientas de big data es hacer que la gestión de una gran cantidad de datos sea lo más simple posible. Pero no es tan fácil. La gestión de datos en NoSQL es mucho más compleja que una base de datos relacional. NoSQL, en particular, tiene la reputación de ser difícil de instalar e incluso más agitado de administrar a diario. - La GUI no está disponible:
las herramientas del modo GUI para acceder a la base de datos no están disponibles de manera flexible en el mercado. - Copia de seguridad:
la copia de seguridad es un gran punto débil para algunas bases de datos NoSQL como MongoDB. MongoDB no tiene un enfoque para la copia de seguridad de los datos de manera consistente. - Tamaño de documento grande:
algunos sistemas de bases de datos como MongoDB y CouchDB almacenan datos en formato JSON. Lo que significa que los documentos son bastante grandes (BigData, ancho de banda de la red, velocidad), y tener nombres clave descriptivos en realidad duele, ya que aumentan el tamaño del documento.
Tipos de bases de datos NoSQL:
Los tipos de bases de datos NoSQL y el nombre del sistema de bases de datos que cae en esa categoría son:
- MongoDB cae en la categoría de base de datos basada en documentos NoSQL.
- Almacén de valor clave: Memcached, Redis, Coherence
- Tabular: Hbase, Mesa grande, Accumulo
- Basado en documentos: MongoDB, CouchDB, Cloudant
¿Cuándo se debe utilizar NoSQL?
- Cuando se necesita almacenar y recuperar una gran cantidad de datos.
- La relación entre los datos que almacenas no es tan importante
- Los datos cambian con el tiempo y no están estructurados.
- No se requiere compatibilidad con restricciones y uniones a nivel de base de datos
- Los datos están creciendo continuamente y necesita escalar la base de datos regularmente para manejar los datos.
Publicación traducida automáticamente
Artículo escrito por Ayusharma0698 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA