Hoy vamos a hablar un poquio de base de datos. Estamos acostumbrados en SAP ha hablar de SAP HANA y SQL, pero… ¿Hay vida más allá? La respuesta es SI.
¿Qué son las bases de datos NoSQL?
Las bases de datos NoSQL (Not Only SQL) son sistemas de gestión de datos no relacional, que no requieren de un esquema fijo. Evitan las uniones y son 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/móvil en tiempo real. Por ejemplo, empresas como Twitter, Facebook y Google recopilan terabytes de datos de usuarios todos los días y los almacenan de bases de datos NoSQL.
Los sistemas de gestión de bases de datos relacionales (RDBMS) tradicionales utilizan la sintaxis SQL para almacenar y recuperar datos. En cambio, un sistema de base de datos NoSQL abarca una amplia gama de tecnologías de base de datos que pueden almacenar datos estructurados, semiestructurados o no estructurados. Las bases de datos NoSQL suelen guardar los datos en formato de documento JSON.
Si comparamos estas bases de datos con la suite de Microsoft Office, podríamos decir que una base de datos SQL sería un Excel donde cada línea es un registro de una tabla de la base de datos. En cambio, un Word, sería un documento (1 registro) de la base de datos NoSQL.
Esta forma de almacenamiento, crea una diferencia clave entre las bases de datos NoSQL y las bases de datos relacionales tradicionales. Es el hecho de que NoSQL es una forma de almacenamiento no estructurado. Esto significa que no tienen una estructura de tabla fija como las que se encuentran en las bases de datos relacionales.
Ventajas de las bases de datos NoSQL
Las bases de datos NoSQL tienen muchas ventajas en comparación con las bases de datos relacionales tradicionales.
- Una gran diferencia es que las bases de datos NoSQL tienen una estructura simple y flexible. Están libres de esquemas.
- A diferencia de las bases de datos relacionales, las bases de datos NoSQL se basan en pares clave-valor.
- Algunos tipos de almacenamiento de bases de datos NoSQL incluyen almacenamiento de columnas, almacenamiento de documentos, almacenamiento de valores clave, almacenamiento de gráficos, almacenamiento de objetos (JSON), almacenamiento XML y otros modos de almacenamiento de datos.
- Las bases de datos NoSQL de código abierto no requieren tarifas de licencia costosas y pueden ejecutarse en hardware económico, lo que hace que su implementación sea rentable en fases iniciales del proyecto.
- Cuando se trabaja con bases de datos NoSQL, ya sean de código abierto o propietarias, la expansión es más sencilla y económica que cuando se trabaja con bases de datos relacionales. Esto se debe a que se realiza escalando horizontalmente y distribuyendo la carga en todos los nodos, en lugar del tipo de escalado vertical que generalmente se realiza con los sistemas de bases de datos relacionales, que reemplaza el host principal por uno más potente.
Desventajas de las bases de datos NoSQL
Por supuesto, las bases de datos NoSQL no son perfectas (como todo en esta vida) y no siempre son la elección correcta.
- La mayoría de las bases de datos NoSQL no admiten funciones de confiabilidad que son compatibles de forma nativa con los sistemas de bases de datos relacionales. Estas características de confiabilidad pueden resumirse como atomicidad, consistencia, aislamiento y durabilidad. Esto también significa que las bases de datos NoSQL, que no son compatibles con esas funciones, cambian la consistencia por el rendimiento y la escalabilidad.
- Para admitir funciones de confiabilidad y consistencia, los desarrolladores deben implementar su propio código propietario, lo que agrega más complejidad al sistema (y muy a menudo baja el rendimiento de la solución).
- Esta limitación de confiabilidad y consistencia podría limitar la cantidad de aplicaciones que pueden confiar en las bases de datos NoSQL para transacciones seguras y confiables, como los sistemas bancarios.
- La complejidad que se encuentra en la mayoría de las bases de datos NoSQL incluyen la incompatibilidad con las consultas SQL. Esto significa que se necesita un lenguaje de consulta manual o propietario, lo que agrega aún más tiempo y complejidad.
Tipos de almacenamiento de datos NoSQL
Vamos a comentar los 3 almacenamientos más importantes de NoSQL. Existen más, pero nos vamos a centrar en los populares.
Almacenamiento de clave-valor
En el tipo de almacenamiento clave-valor, se utiliza una tabla hash en la que una clave única apunta a un elemento.
Las claves se pueden organizar en grupos lógicos de claves, y solo requieren que las claves sean únicas dentro de su propio grupo. Esto permite claves idénticas en diferentes grupos lógicos. La siguiente tabla muestra un ejemplo de un almacén de clave-valor, en el que la clave es el nombre de la ciudad y el valor es la dirección del ayuntamiento de la ciudad.
Clave | Valor |
«Vilanova» | {«Plaça de la Vila, 8, 08800, Vilanova i la Geltrú, Barcelona»} |
«Sitges» | {«Plaça de l’Ajuntament, s/n, 08870, Sitges, Barcelona»} |
Algunas implementaciones de clave-valor proporcionan mecanismos de almacenamiento en caché que mejoran en gran medida su rendimiento.
Todo lo que se necesita para manejar los elementos almacenados en la base de datos es la clave. Los datos se almacenan en forma de cadena, JSON o BLOB (Binary Large OBject).
Uno de los mayores defectos de esta forma de base de datos es la falta de consistencia a nivel de la base de datos. Los desarrolladores pueden agregar esto con su propio código, pero como se mencionó anteriormente, esto agrega más esfuerzo, complejidad y tiempo.
Almacenamiento de documentos
El almacenamiento de documentos es similar al almacenamiento de clave-valor en el que no tienen esquema y se basan en un modelo de clave-valor. Ambos, por lo tanto, comparten muchas de las mismas ventajas y desventajas. Ambos carecen de consistencia en el nivel de la base de datos, lo que da paso a que las aplicaciones brinden más funciones de confiabilidad y consistencia.
Sin embargo, existen diferencias clave entre los dos.
En el almacenamiento de documentos, los valores (documentos) proporcionan codificación para los datos almacenados. Esas codificaciones pueden ser XML, JSON o BSON (JSON con codificación binaria).
Además, se pueden realizar consultas basadas en datos.
La aplicación de base de datos más popular que se basa en un almacén de documentos es MongoDB. Lo comento ya que utilizaremos MongoDB para crear una aplicación en SAP Business Technology Platform.
Almacenamiento en columnas
En una base de datos de almacenamiento en columnas, los datos se almacenan en columnas (supongo que te suena de SAP HANA ;)), en lugar de almacenarse en filas como se hace en la mayoría de los sistemas de administración de bases de datos relacionales.
El almacenamiento en columnas se compone de una o más familias de columnas que agrupan lógicamente ciertas columnas en la base de datos. Una clave se utiliza para identificar y apuntar a una serie de columnas en la base de datos, con un atributo de espacio de claves que define el alcance de esta clave. Cada columna contiene conjuntos de nombres y valores, ordenados y separados por comas.
Los almacenamientos de columnas tienen acceso rápido de lectura/escritura a los datos almacenados. En un almacén de columnas, las filas que corresponden a una sola columna se almacenan como una única entrada de disco. Esto permite un acceso más rápido durante las operaciones de lectura/escritura.
Conclusión
Como siempre, todo tiene su utilidad si se aplica bien. En este caso, las bases de datos NoSQL son útiles si las aplicamos a aplicaciones web o móviles, o si las utilizamos para el almacenamiento de datos BigData para análisis. ¿Para una aplicación transaccional? Si queremos construir una aplicación típica de SAP, deberíamos continuar utilizando SQL para crear una relación de tablas válida y una consistencia de datos, ya que como hemos visto, NoSQL no lo lleva integrado (algunas opciones si).
Pronto empezaremos una aplicación donde utilizaremos MongoDB y veremos como construir la aplicación para utilizarla en SAP BTP. ¡No te lo pierdas!