Mientras que las bases de datos relacionales estructuran los datos en un formato tabular, las bases de datos no relacionales no tienen un esquema de base de datos tan rígido. De hecho, las bases de datos no relacionales organizan los datos de manera diferente según el tipo de base de datos.
Independientemente del tipo de base de datos no relacional, todas tienen como objetivo resolver los problemas de flexibilidad y escalabilidad inherentes a los modelos relacionales que no son ideales para formatos de datos no estructurados, como texto, video e imágenes.
Estos tipos de bases de datos incluyen:
Almacén clave-valor
Este modelo de datos sin esquema se organiza en un diccionario de pares clave-valor, donde cada elemento tiene una clave y un valor. La clave podría ser algo similar que se encuentra en una base de datos SQL, como una ID de carrito de compras, mientras que el valor es una matriz de datos, como cada artículo individual en el carrito de compras de ese usuario.
Se usa comúnmente para almacenar en caché y almacenar información de sesión de usuario, como carritos de compras. Sin embargo, no es ideal cuando necesita extraer varios registros a la vez. Redis y Memcached son ejemplos de bases de datos de código abierto con este modelo de datos.
Almacén de documentos
Como sugiere el nombre, las bases de datos de documentos almacenan datos como documentos. Pueden ser útiles para gestionar datos semiestructurados y los datos generalmente se almacenan en formatos JSON, XML o BSON. Esto mantiene los datos juntos cuando se usan en aplicaciones, lo que reduce la cantidad de traducción necesaria para usar los datos.
Los desarrolladores también ganan más flexibilidad ya que los esquemas de datos no necesitan coincidir entre documentos (por ejemplo, nombre vs. primer nombre). Sin embargo, esto puede ser problemático para transacciones complejas, lo que lleva a la corrupción de datos. Los casos de uso populares de bases de datos de documentos incluyen sistemas de gestión de contenido y perfiles de usuario.
Un ejemplo de una base de datos orientada a documentos es MongoDB, el componente de base de datos del lote de MEAN.
Almacén de columnas anchas
Estas bases de datos almacenan información en columnas, lo que permite a los usuarios acceder solo a las columnas específicas que necesitan sin asignar memoria adicional a datos irrelevantes. Esta base de datos intenta resolver las deficiencias de los valores clave y los almacenes de documentos, pero dado que puede ser un sistema más complejo de gestionar, no se recomienda su uso para equipos y proyectos más nuevos.
Apache HBase y Apache Cassandra son ejemplos de bases de datos de columna ancha de código abierto. Apache HBase se basa en el sistema de archivos distribuidos de Hadoop que proporciona una forma de almacenar conjuntos de datos dispersos, que se usa comúnmente en muchas aplicaciones de big data. Apache Cassandra, por otro lado, ha sido diseñado para gestionar grandes cantidades de datos en múltiples servidores y agrupaciones que abarcan múltiples centros de datos.
Se ha utilizado para una variedad de casos de uso, como sitios web de redes sociales y analítica de datos en tiempo real.
Almacén de gráficos
Este tipo de base de datos normalmente alberga datos de un gráfico de conocimiento. Los elementos de datos se almacenan como nodos, bordes y propiedades. Cualquier objeto, lugar o persona puede ser un nodo. Un borde define la relación entre los nodos.
Las bases de datos de gráficos se utilizan para almacenar y gestionar una red de conexiones entre elementos dentro del gráfico. Neo4j (enlace externo a IBM), un servicio de base de datos basado en gráficos y en Java, con una edición de comunidad de código abierto donde los usuarios pueden comprar licencias para copias de seguridad en línea y extensiones de alta disponibilidad, o una versión con licencia preempaquetada con copias de seguridad y extensiones incluidas.
Las bases de datos NoSQL también priorizan la disponibilidad sobre la consistencia.
Cuando las computadoras funcionan sobre una red, invariablemente necesitan decidir priorizar resultados consistentes (donde cada respuesta es siempre la misma) o un alto tiempo de actividad, llamado "disponibilidad". Esto se denomina "teoría CAP", que significa consistencia, disponibilidad o tolerancia de partición. Las bases de datos relacionales garantizan que la información esté siempre sincronizada y sea consistente.
Algunas bases de datos NoSQL, como Redis, prefieren proporcionar siempre una respuesta. Eso significa que la información que recibe de una consulta puede ser incorrecta por unos segundos, quizás hasta medio minuto.
En los sitios de redes sociales, esto significa ver una foto de perfil antigua cuando la más reciente fue actualizada hace solo un momento. La alternativa podría ser un tiempo de espera o un error. Por otro lado, en las transacciones bancarias y financieras, un error y un reenvío puede ser mejor que la información antigua e incorrecta.
Para obtener un resumen completo de las diferencias entre SQL y NoSQL, consulte "Bases de datos SQL frente a NoSQL: ¿Cuál es la diferencia?"