Tutorial de NoSQL: Tipos de bases de datos NoSQL y ejemplo

โšก Resumen inteligente

NoSQL es un sistema de gestiรณn de bases de datos no relacionales que no requiere un esquema fijo, evita las uniones y se escala fรกcilmente. Este recurso explica quรฉ es NoSQL, por quรฉ existe, su historia, sus caracterรญsticas, los cuatro tipos de bases de datos, el teorema CAP, la consistencia eventual y sus ventajas y desventajas.

  • ๐Ÿ“ฆ Definiciรณn: Un sistema de almacenamiento no relacional y sin esquema, diseรฑado para conjuntos de datos enormes y distribuidos.
  • ๐Ÿ“ˆ Motivo: La escalabilidad horizontal, que abarca muchos hosts, permite gestionar grandes volรบmenes de datos mรกs rรกpidamente que la escalabilidad vertical.
  • ๐Ÿ—‚๏ธ Cuatro tipos: Clave-valor, orientada a columnas, basada en grafos y orientada a documentos.
  • ๐Ÿ‡ง๐Ÿ‡ท Teorema CAP: Un sistema de almacenamiento distribuido solo puede garantizar dos de las siguientes caracterรญsticas: consistencia, disponibilidad y tolerancia a particiones.
  • ๐Ÿ” BASE: Bรกsicamente disponible, estado flexible, consistencia eventual entre rรฉplicas.

Tutorial NoSQL

ยฟQuรฉ es NoSQL?

Base de datos NoSQL es un sistema de gestiรณn de datos no relacional que no requiere un esquema fijo. Evita las uniones y es fรกcil de escalar. El propรณsito principal de usar una base de datos NoSQL es para almacenes de datos distribuidos con enormes necesidades de almacenamiento de datos. NoSQL se utiliza para big data y aplicaciones web en tiempo real. Por ejemplo, empresas como Twitter, Facebook y Google Recopilamos terabytes de datos de usuarios cada dรญa.

Base de datos NoSQL NoSQL significa โ€œNot Only SQLโ€ o โ€œNot SQLโ€. Aunque un tรฉrmino mรกs apropiado serรญa โ€œNoRELโ€, el tรฉrmino se popularizรณ. Carl Strozzi introdujo el concepto NoSQL en 1998.

Los sistemas de gestiรณn de bases de datos relacionales (RDBMS) tradicionales utilizan la sintaxis SQL para almacenar y recuperar datos y obtener informaciรณn adicional. En cambio, un sistema de base de datos NoSQL abarca una amplia gama de tecnologรญas que permiten almacenar datos estructurados, semiestructurados, no estructurados y polimรณrficos. En este tutorial sobre bases de datos NoSQL, explicaremos quรฉ es NoSQL con un diagrama:

Base de datos NoSQL

ยฟPor quรฉ NoSQL?

El concepto de bases de datos NoSQL se popularizรณ entre gigantes de Internet como Google, Facebook, Amazon, etc. que manejan grandes volรบmenes de datos. El tiempo de respuesta del sistema se vuelve lento cuando utiliza RDBMS para volรบmenes masivos de datos.

Para resolver este problema, podrรญamos "ampliar" nuestros sistemas actualizando nuestro hardware existente. Este proceso es costoso.

La alternativa para solucionar este problema es distribuir la carga de la base de datos entre varios servidores cuando esta aumenta. Este mรฉtodo se conoce como "escalado horizontal".

NoSQL

Las bases de datos NoSQL no son relacionales, por lo que se escalan mejor que las bases de datos relacionales, ya que estรกn diseรฑadas pensando en las aplicaciones web.

Breve historia de las bases de datos NoSQL

  • 1998 โ€“ Carlo Strozzi utiliza el tรฉrmino NoSQL para referirse a su base de datos relacional ligera y de cรณdigo abierto.
  • 2000 โ€“ Base de datos de grafos NeoSe lanza 4j.
  • 2004 - Google Se lanza BigTable.
  • 2005 - CouchDB se pone en marcha.
  • 2007 โ€“ El documento de investigaciรณn sobre Amazon Se lanza Dynamo.
  • 2008 โ€“ Facebook abre el cรณdigo fuente Cassandra proyecto.
  • 2009 โ€“ Se reintrodujo el tรฉrmino NoSQL.

Caracterรญsticas de NoSQL

No relacional

  • Las bases de datos NoSQL nunca siguen el modelo relacional.
  • Nunca proporcione tablas con registros planos de columnas fijas.
  • Trabajar con agregados autรณnomos o BLOBs.
  • No se requiere un mapa objeto-relacional.ping y normalizaciรณn de datos.
  • No incluye caracterรญsticas complejas como lenguajes de consulta, planificadores de consultas, uniones de integridad referencial ni ACID.

Sin esquemas

  • Las bases de datos NoSQL no tienen esquema o tienen esquemas flexibles.
  • No se requiere ningรบn tipo de definiciรณn del esquema de los datos.
  • Ofrecer estructuras de datos heterogรฉneas en el mismo dominio.
Caracterรญsticas de NoSQL
NoSQL no tiene esquemas

API simple

  • Ofrece interfaces fรกciles de usar para el almacenamiento y la consulta de datos.
  • Las API permiten la manipulaciรณn de datos de bajo nivel y mรฉtodos de selecciรณn.
  • Protocolos basados โ€‹โ€‹en texto utilizados principalmente con HTTP REST con JSON.
  • En su mayorรญa, no se utiliza ningรบn lenguaje de consulta NoSQL basado en estรกndares.
  • Bases de datos habilitadas para la web que funcionan como servicios accesibles desde Internet.

Distribuido

  • Es posible ejecutar varias bases de datos NoSQL de forma distribuida.
  • Ofrece capacidades de escalado automรกtico y conmutaciรณn por error.
  • A menudo, el concepto ACID se sacrifica en aras de la escalabilidad y el rendimiento.
  • En general, no hay replicaciรณn sรญncrona entre nodos distribuidos; se utiliza replicaciรณn asรญncrona multi-maestro, de igual a igual y replicaciรณn HDFS.
  • Solo proporciona consistencia eventual.
  • Arquitectura sin recursos compartidos. Esto permite una menor coordinaciรณn y una mayor distribuciรณn.
Caracterรญsticas de NoSQL

NoSQL no es nada compartido.

Tipos de bases de datos NoSQL

Bases de datos NoSQL Las bases de datos se clasifican principalmente en cuatro tipos: pares clave-valor, orientadas a columnas, basadas en grafos y orientadas a documentos. Cada categorรญa tiene sus propias caracterรญsticas y limitaciones. Ninguna de las bases de datos mencionadas resuelve todos los problemas por sรญ sola. Los usuarios deben seleccionar la base de datos que mejor se adapte a las necesidades de su producto.

Tipos de bases de datos NoSQL:

  • Basado en pares clave-valor
  • Grรกfico orientado a columnas
  • Basado en grรกficos
  • Orientado a documentos

Tipos de bases de datos NoSQL

Basado en pares clave-valor

Los datos se almacenan en pares clave-valor. Estรกn diseรฑados para manejar grandes volรบmenes de datos y cargas pesadas. Las bases de datos de pares clave-valor almacenan los datos como una tabla hash, donde cada clave es รบnica y el valor puede ser JSON, BLOB (objeto binario grande), cadena de texto, etc.

Por ejemplo, un par clave-valor puede contener una clave como โ€œSitio webโ€ asociada con un valor como โ€œGuru99 ".

Basado en pares clave-valor

Es uno de los ejemplos mรกs bรกsicos de bases de datos NoSQL. Este tipo de base de datos NoSQL se utiliza como una colecciรณn, diccionarios, matrices asociativas, etc. Los almacenes clave-valor ayudan al desarrollador a almacenar datos sin esquema. Funcionan mejor para tiendasping Contenido del carrito.

Redis, Dynamo y Riak son algunos ejemplos de bases de datos NoSQL de almacenamiento clave-valor. Todas estรกn basadas en AmazonEl papel Dynamo.

Basado en columnas

Las bases de datos orientadas a columnas funcionan con columnas y se basan en el documento BigTable de GoogleCada columna se trata por separado. Los valores de las bases de datos de una sola columna se almacenan de forma contigua.

Base de datos NoSQL basada en columnas

Base de datos NoSQL basada en columnas

Ofrecen un alto rendimiento en consultas de agregaciรณn como SUMA, CONTAR, AVG, MIN, etc., ya que los datos estรกn disponibles fรกcilmente en una columna. Las bases de datos NoSQL basadas en columnas se utilizan ampliamente para administrar almacenes de datos, inteligencia empresarial , CRM y catรกlogos de tarjetas de biblioteca.

HBase, Cassandra, y Hypertable son ejemplos de consultas NoSQL de bases de datos basadas en columnas.

Orientado a documentos

Las bases de datos NoSQL orientadas a documentos almacenan y recuperan datos como pares clave-valor, pero el valor se guarda como un documento. Este documento se almacena en formato JSON o XML. La base de datos interpreta el valor y permite realizar consultas.

Relacional vs. Documento

Relacional vs. Documento

En este diagrama de la izquierda, se pueden ver filas y columnas, y a la derecha, una base de datos de documentos con una estructura similar a JSON. En una base de datos relacional, es necesario conocer las columnas, etc. Sin embargo, en una base de datos de documentos, se utiliza un almacรฉn de datos similar a un objeto JSON. No es necesario definirlo, lo que la hace flexible.

Este tipo de documento se utiliza principalmente en sistemas de gestiรณn de contenido (CMS), plataformas de blogs, anรกlisis en tiempo real y aplicaciones de comercio electrรณnico. No debe utilizarse para transacciones complejas que requieran mรบltiples operaciones o consultas sobre estructuras agregadas variables.

Amazon base de datos simple, CouchDB, MongoDBRiak y Lotus Notes son populares sistemas de gestiรณn de documentos orientados a documentos. sistemas DBMS.

Basado en grรกficos

Una base de datos de tipo grafo almacena entidades y las relaciones entre ellas. Cada entidad se representa como un nodo y cada relaciรณn como una arista. Una arista establece una relaciรณn entre nodos. Cada nodo y arista tiene un identificador รบnico.

Basado en grรกficos

En comparaciรณn con una base de datos relacional, donde las tablas estรกn conectadas de forma laxa, una base de datos de grafos es multirrelacional por naturaleza. Recorrer las relaciones es rรกpido, ya que estรกn predefinidas en la base de datos y no es necesario calcularlas. Las bases de datos de grafos se utilizan principalmente para redes sociales, logรญstica y datos espaciales.

Neo4J, grรกfico infinito, OrientDBy FlockDB son algunas bases de datos populares basadas en grafos.

Herramientas del mecanismo de consulta para NoSQL

El mecanismo de recuperaciรณn de datos mรกs comรบn es la recuperaciรณn de un valor basada en REST a partir de su clave/ID con un recurso GET.

Las bases de datos de almacenamiento de documentos ofrecen consultas mรกs difรญciles, ya que entienden el valor de un par clave-valor. Por ejemplo, CouchDB Permite definir vistas con MapReduce.

ยฟQuรฉ es el teorema CAP?

El teorema CAP tambiรฉn se llama teorema de Brewer. Establece que es imposible que un almacรฉn de datos distribuido ofrezca mรกs de dos de tres garantรญas:

  1. Consistencia
  2. Disponibilidad
  3. Tolerancia de particiรณn

Consistencia: Los datos deben permanecer consistentes incluso despuรฉs de la ejecuciรณn de una operaciรณn. Esto significa que una vez que se escriben los datos, cualquier solicitud de lectura futura debe contener esos datos. Por ejemplo, despuรฉs de actualizar el estado del pedido, todos los clientes deben poder ver los mismos datos.

Disponibilidad: La base de datos siempre debe estar disponible y responsiva. No deberรญa tener ningรบn tiempo de inactividad.

Tolerancia de particiรณn: Tolerancia de particiรณn significa que el sistema debe continuar funcionando incluso si la comunicaciรณn entre los servidores no es estable. Por ejemplo, los servidores se pueden dividir en varios grupos que pueden no comunicarse entre sรญ. Aquรญ, si parte de la base de datos no estรก disponible, otras partes nunca se ven afectadas.

Coherencia eventual

El tรฉrmino โ€œconsistencia eventualโ€ implica tener copias de los datos en varias mรกquinas para lograr alta disponibilidad y escalabilidad. Por lo tanto, los cambios realizados en cualquier dato en una mรกquina deben propagarse a las demรกs rรฉplicas.

La replicaciรณn de datos puede no ser instantรกnea, ya que algunas copias se actualizarรกn de inmediato, mientras que otras lo harรกn con el tiempo. Estas copias pueden ser inconsistentes entre sรญ, pero con el tiempo se vuelven consistentes. De ahรญ el nombre de consistencia eventual.

BASE: Basicamente Adisponible Sestado a menudo, Econsistencia ventual

  • Bรกsicamente, "disponible" significa que la base de datos estรก disponible en todo momento, segรบn el teorema CAP.
  • El estado blando significa que, incluso sin ninguna entrada, el estado del sistema puede cambiar.
  • La consistencia eventual significa que el sistema se volverรก consistente con el tiempo.

Coherencia eventual

Ventajas de NoSQL

  • Puede utilizarse como fuente de datos primaria o analรญtica.
  • Capacidad de big data.
  • No existe un รบnico punto de fallo.
  • Fรกcil de replicar.
  • No es necesario un nivel de almacenamiento en cachรฉ independiente.
  • Proporciona un rendimiento rรกpido y escalabilidad horizontal.
  • Puede procesar datos estructurados, semiestructurados y no estructurados con la misma eficacia.
  • Programaciรณn orientada a objetos, fรกcil de usar y flexible.
  • Las bases de datos NoSQL no necesitan un servidor dedicado de alto rendimiento.
  • Compatible con los principales lenguajes y plataformas de desarrollo.
  • Mรกs sencillo de implementar que utilizando un sistema de gestiรณn de bases de datos relacionales (RDBMS).
  • Puede servir como fuente de datos principal para aplicaciones en lรญnea.
  • Gestiona grandes volรบmenes de datos, controlando la velocidad, la variedad, el volumen y la complejidad de los mismos.
  • Destaca en operaciones con bases de datos distribuidas y mรบltiples centros de datos.
  • Elimina la necesidad de una capa de almacenamiento en cachรฉ especรญfica para guardar los datos.
  • Ofrece un diseรฑo de esquema flexible que se puede modificar fรกcilmente sin tiempos de inactividad ni interrupciones del servicio.

Desventajas de NoSQL

  • No existen reglas de estandarizaciรณn.
  • Capacidades de consulta limitadas.
  • RDBMS Las bases de datos y las herramientas estรกn relativamente maduras.
  • No ofrece ninguna capacidad de base de datos tradicional, como consistencia cuando se realizan mรบltiples transacciones simultรกneamente.
  • Cuando aumenta el volumen de datos, resulta difรญcil mantener valores รบnicos, ya que las claves se vuelven complicadas.
  • No funciona tan bien con datos relacionales.
  • La curva de aprendizaje es pronunciada para los nuevos desarrolladores.
  • Las opciones de cรณdigo abierto no son muy populares entre las empresas.

Preguntas Frecuentes

Las bases de datos NoSQL gestionan los grandes volรบmenes de datos, variados y en constante cambio, que generan la IA y los flujos de datos masivos. Su esquema flexible y su escalabilidad horizontal son ideales para almacenar datos de entrenamiento, registros y caracterรญsticas en tiempo real en clรบsteres distribuidos.

Sรญ. Varias bases de datos NoSQL, como MongoDB Elasticsearch ahora admite campos vectoriales y bรบsqueda por similitud. Esto permite que las aplicaciones de IA almacenen incrustaciones junto a los documentos para funciones de bรบsqueda semรกntica y recomendaciรณn.

Las bases de datos SQL son relacionales, con un esquema fijo, y utilizan tablas, filas y uniones. Las bases de datos NoSQL son no relacionales, utilizan esquemas flexibles y escalan horizontalmente, almacenando datos como documentos, pares clave-valor, columnas o grafos.

Evite NoSQL cuando necesite transacciones ACID robustas, uniones complejas o una estricta integridad de datos, como en el sector bancario. Las bases de datos relacionales consolidadas manejan mejor la consistencia de mรบltiples registros y las consultas estandarizadas en esos casos.

Resumir este post con: