Cuando desarrollamos una aplicación y nos encontramos en el momento de elegir una base de datos, siempre llegamos a un punto en el que nos hacemos la misma pregunta. ¿Qué tipo de base de datos debo elegir?
Independientemente de los distintos gestores de bases de datos que existen en la actualidad, esta pregunta siempre suscita la duda de si debemos elegir una base de datos relacional o no relacional.
Para responder esta pregunta, es muy importante conocer las diferencias entre una y otra y, sobre todo, entender el tipo de aplicación que estamos realizando, ya que una mala elección de nuestra base de datos puede dar lugar a una larga lista de problemas durante el desarrollo de la aplicación.
Bases de Datos relacionales
Las bases de datos relacionales se caracterizan por ser una colección ordenada de registros que se organizan en un conjunto de tablas. Estas tablas se relacionan entre sí, dando lugar a una base de datos desde donde se puede acceder a los datos o volver a montarlos de muchas maneras diferentes sin tener que reorganizar las tablas de la base.
Para acceder a estos datos, usaremos lo que se conoce como Lenguaje de Consultas Estructuradas, (SQL, Structured Query Language). Con SQL podemos obtener y alterar datos de una forma organizada siempre y cuando tengamos en cuenta cuál es la estructura de la base de datos con la que estamos trabajando. Para ello, utilizaremos los distintos comandos que SQL pone a nuestra disposición.
Las bases de datos relacionales se organizan a través de identificadores. De este modo, cada tabla tiene un identificador único que es el que va a establecer su relación con el resto de tablas. A su vez, estos identificadores hacen que sea más fácil organizar cada una de las tablas por separado.
En cuanto a los formatos que se utilizan en este tipo de bases de datos, suele ser el formato tabla, (Un ejemplo serían las hojas de Excel o Access) y los registros se organizarían por filas y columnas.
Los principales sistemas gestores de bases de datos relacionales son: MySQL, MariaDB, SQLite, PostgreSQL, SQL Server y Oracle.
Bases de datos no relacionales
Las bases de datos no relacionales están diseñadas para modelos de datos específicos y que no necesitan ser relacionados con otros modelos. Cada tabla funciona de forma independiente y son mucho más sencillas que los modelos relacionales.
Esta sencillez de acceso y de ordenación de la base de datos hace que en el panorama actual estén cobrando más importancia que las relacionales.
Las bases de datos no relacionales pueden tener identificador único, es decir, para identificar cada uno de los registros de la base de datos, pero este identificador no se usará (generalmente) para relacionar unos registros con otros. Como veremos, la información se organiza normalmente mediante documentos y es muy útil cuando no tenemos un esquema exacto de lo que se va a almacenar.
Con respecto a los formatos que se utilizan en las bases de datos no relacionales, podríamos decir que el formato más popular es el del documento. En muchos casos, lo que se utiliza es un objeto con una clave y un valor para que el acceso a la información sea pueda realizar de una forma sencilla.
Los principales sistemas gestores de bases de datos no relacionales son: MongoDB, Redis y Cassandra.
¿Cuándo utilizar SQL o NOSQL?
Después de esta explicación, podemos decir que ambos tipos de bases de datos son útiles y dependerá del tipo de aplicación que queramos realizar la elección de una u otra base de datos.
Así, si queremos desarrollar una aplicación de tipo contable, de inventario o de información de clientes, es probable que el modelo relacional se adapte mejor a nuestras necesidades. En este tipo de aplicaciones, normalmente habrá más de una tabla que tenga relación con el resto, por lo que una base de datos relacional será más útil y podrá representar mejor nuestra aplicación.
Si por el contrario nuestra aplicación necesita de un sistema en el que los registros que vaya a almacenar no necesitan relacionarse con otros, usaremos una base de datos no relacional. Estas serán muy útiles para guardar datos que sean de un solo tipo de esquema, como por ejemplo puede ser una base de datos en la que solo queramos almacenar libros o películas, ya que almacenaremos cada documento y no lo relacionaremos con ningún otro dato, solamente le daremos una serie de atributos que se podrán consultar pero que no tendrán relación alguna con otra tabla.
Por todo lo dicho anteriormente, queda claro que la elección del tipo de base de datos es algo muy importante y que no hay que tomarlo a la ligera. La elección de una base de datos errónea para el proyecto que queramos desarrollar puede traer consecuencias fatales para el desarrollo del mismo, por lo que es muy importante dedicarle tiempo y ver qué tipo de base de datos encajará mejor con nuestra aplicación.