Hoy en día, casi cualquier persona puede tener una idea más o menos clara de lo que es una base de datos: un «lugar» donde se almacenan datos relacionados entre sí, para poder consultarlos después. Y es que, a pesar de lo coloquial de la definición, bien nos puede valer para explicar, a grosso modo, el concepto abstracto que hoy nos ocupa: la introducción a las bases de datos.
Definición de una base de datos
Si queremos dar una definición más técnica, diremos que una base de datos es un conjunto de datos relacionados entre sí, entendiendo por datos hechos conocidos, que podemos registrar y que tienen un significado implícito. Por ejemplo: la lista de nombres, direcciones y teléfonos de todos nuestros familiares y amigos. Esto es una colección de datos relacionados (todos pertenecen a nuestros contactos), con significado implícito (información personal) y que podemos registrar (en una agenda o un móvil). Podemos decir entonces que este listado es una base de datos.
Para que una colección de datos relacionados y registrables se puedan considerar una base de datos, deben cumplir también que:
- Sea un conjunto coherente de datos relacionados. Es decir, un conjunto aleatorio de datos no puede considerarse una base de datos.
- Tener utilidad. Una base de datos se diseña y construye para un propósito específico, está destinada a un grupo de usuarios concretos y tiene algunas aplicaciones en las que están interesados dichos usuarios.
Quizás sea importante resaltar también la definición de dato: cualquier elemento informativo que tenga relevancia para un usuario.
Breve historia de las bases de datos
Si intentáramos trazar una evolución histórica sobre estas, nuestro origen sería, indudablemente, el papel. Cuando hace años una empresa llevaba un histórico de clientes, facturas, pedidos, pagos y ese largo etcétera que seguro se te está ocurriendo, todo se registraba y consultaba en papel.
Pero remontémonos un poco antes, más concretamente a 1884 y a la invención de la máquina automática de tarjetas perforadas por Herman Hollerith, nombrado como el primer ingeniero estadístico de la historia y la evolución de estas a las cintas magnéticas introducidas en los años 50 del siglo XX.
La primera referencia histórica que tenemos del concepto de base de datos se escuchó en un simposio celebrado en California en 1963. Fue precisamente en la década de los 60 cuando surgió la primera generación de bases de datos de red (CODASYL) y las jerárquicas (IMS, de IBM), que consistían en guardar los datos en listas y árboles. Por su parte, CODASYL era un sistema muy complicado y requería una capacitación especial para su uso, ya que había que navegar manualmente entre todos los datos vinculados entre sí, los cuales formaban una gran red.
Ya en los 70, Edgar Frank Codd definió el modelo relacional y, más adelante, publicó una serie de reglas para los sistemas de datos relacionales, las cuales veremos en el siguiente post, dedicado a las bases de datos relacionales. Esto se recoge en un artículo escrito por él llamado “Un modelo relacional de datos para grandes bancos de datos compartidos”. Su estudio surgió mientras trabajaba en IBM y su descontento al no haber un motor que aprovechase los sistemas CODASYL o IMS sin necesidad de especializarse en ellos. Esto desembocó en un nuevo método que no almacenaría los registros en una lista de forma libre, sino que se usaría una tabla con registros de longitud fija.
Como consecuencia de los estudios de Codd, Larry Ellison desarrolló el Relational Software System o lo que conocemos actualmente como Oracle Corporation.
Dado que IBM había invertido mucho dinero en IMS y no apoyaba en demasía las ideas de Codd, algunos trabajadores de UC Berkeley como Michael Stonebraker y Eugene Wong investigaron los sistemas relacionales bajo el proyecto INGRES, demostrando que este modelo era eficiente y práctico. Se empezó a desarrollar el lenguaje de consulta QUEL.
En la década de los 80, IBM se vio obligada a plantar cara a QUEL, por lo que empezó el desarrollo del SQL (Structured Query Language) o Lenguaje de Consultas Estructuradas, con el fin de asentar los conceptos de bases de datos relacionales con un lenguaje de consulta y tratamiento definido.
A partir de aquí, se suceden los lanzamientos de algunos motores famosos de bases de datos, como la primera versión de Oracle en 1978, MySQL en 1995, PostgreSQL en 1996 o Microsoft Server en 1989.
Tipos de bases de datos
Aunque según la documentación que consultemos esta clasificación puede tener nombres diversos, podemos agruparlas de la siguiente manera: relacionales, NoSQL, Cloud, columnares, gran columnar, orientadas a objetos, clave-valor, jerárquicas, documentales, orientadas a grafos, de tiempo.
Bases de datos relacionales
Como hemos mencionado anteriormente, surgieron en la década de los 70 gracias a Codd y su nombre proviene de la forma en la que se almacenan los datos, repartidos en varias tablas relacionadas. Dentro de estas tablas, los datos se distribuyen en filas y columnas. El SQL es el lenguaje más común para leer, crear, actualizar y eliminar datos. A su vez, cumplen con las características ACID (Atomicity, Consistency, Isolation and Durability), que es un conjunto estándar de propiedades para transacciones de bases de datos fiables.
Algunos ejemplos de estas bases de datos son: Oracle Database, Microsoft SQL Server, PostgreSQL o MySQL/MariaDB.
Bases de datos NoSQL
NoSQL (Not Only SQL) contempla toda base de datos que no utilice SQL como lenguaje principal para acceder a los datos, aunque algunas fuentes las citan como no relacionales. Ambos conceptos, aún así, son correctos. Este tipo de bases de datos son excelentes para aquellas organizaciones o empresas que no quieren ajustarse a un esquema predefinido, es decir, datos no estructurados o semiestructurados. Tuvieron su boom inicial con la llegada de portales como Facebook, Twitter o Youtube, donde cualquier usuario puede subir su contenido (fotos, vídeos) y mantenerlos en una base de datos relacional llegó a ser imposible.
Apache Cassandra, MongoDB, CouchDB o CouchBase son ejemplos claros de este tipo de bases de datos.
Bases de datos cloud
Las DBaaS (Database as a Service) incorporan cualquier base de datos diseñada para ejecutarse en la nube, ofreciendo flexibilidad y escalabilidad, además de alta disponibilidad, como es lógico. Suelen tener un bajo nivel de mantenimiento, dado que se ofrecen a través de modelos SaaS (Software as a Service).
Algunos ejemplos son SQL de Microsoft Azure, Amazon RDS o Autonomous Database de Oracle.
Bases de datos columnares
Conocidas también como almacenes de datos de columnas, estas bases de datos tienen la particularidad de guardar la información en columnas en lugar de filas, por lo que son excelentes para manejar consultas analíticas. Cuando se realiza una consulta, el motor ignorará los datos que no estén en la columna a consultar.
Ejemplos: Google BigQuery, Cassandra, HBase, MariaDB o Azure SQL Data Warehouse.
Bases de datos gran columnar
Coloquialmente conocidas como bases de datos de columna ancha, son independientes del esquema, dado que los esquemas se almacenan en familias de columnas, en lugar de filas y columnas, por lo que manejan fácilmente petabytes de datos. Esto las convierte en ideales para admitir aplicaciones de Big Data en tiempo real.
Algunos ejemplos son Big Table, Apache Cassandra y Scylla.
Bases de datos orientadas a objetos
Están basadas en el paradigma de programación orientada a objetos, por lo que los datos y sus atributos están unidos entre sí como un objeto. Estas bases de datos están administradas por sistemas de administración de bases de datos orientadas a objetos (OODBMS) y funcionan perfectamente con lenguajes orientados a objetos, como C++ y Java. Al igual que las relacionales, se adaptan a los estándares ACID.
Ejemplos: Wakanda y ObjectStore.
Bases de datos clave-valor
Siendo uno de los ejemplos más simples de bases de datos NoSQL, guardan datos como un grupo de par-valor compuestos por dos elementos de datos cada uno. Son altamente escalables y pueden manejar grandes volúmenes de tráfico, por lo que son idóneas para administrar sesiones para aplicaciones web, sesiones de usuario para juegos masivos en línea o carritos de compra.
Algunos ejemplos son Amazon DynamoDB y Redis.
Bases de datos jerárquicas
Estas utilizan un modelo padre-hijo para almacenar los datos, por lo que su esquema visual sería como un árbol genealógico, donde un elemento principal o padre desemboca en subramas o hijos. Se empezó a desarrollar en los 60 de la mano de IBM, aunque actualmente se usan para aplicaciones de alto rendimiento y alta disponibilidad.
Ejemplos de bases de datos jerárquicas son IBM Information Management System (IMS) o el propio registro de Windows.
Bases de datos de documentos
Otro ejemplo más de bases de datos NoSQL, donde los documentos son similares a ficheros JSON para modelar datos, en lugar de filas y columnas. Están diseñadas para almacenar y administrar información orientada a documentos y son simples y escalables.
Ejemplos: MongoDB, Amazon DocumentDB, Apache CouchDB.
Bases de datos de grafos
Otro ejemplo de NoSQL, basadas en la teoría de grafos. El software para manejarlas, GODBSM (Graph-Oriented Database Management Systems), está diseñado para identificar y trabajar con conexiones entre puntos de datos, por lo que estas bases de datos se usan a menudo para analizar relaciones entre puntos heterogéneos de datos, como prevención del fraude o extracción de datos de clientes en redes sociales.
Como ejemplos mencionamos Datastax Enterprise Graph o Neo4J.
Bases de datos de tiempo
Son bases de datos optimizadas para datos con marcas de tiempo o timestamp. Los ejemplos de este tipo de datos con marca de tiempo incluyen datos de red, sensores o monitoreo de rendimiento de aplicaciones. Tienen una gran utilidad en el IoT (Internet of Things), donde todos los elementos conectados emiten flujos constantes de datos con marcas de tiempo.
Algunos ejemplos son Druid, eXtremeDB e InfluxDB.
Conclusión
Y hasta aquí nuestra primera entrada dedicada a las bases de datos y su apasionante universo.
Hemos hecho una introducción al concepto de una base de datos, repasado a grosso modo la evolución histórica de las mismas y comentado los principales tipos de bases de datos que hay actualmente. A partir de la próxima entrada nos centraremos en las bases de datos relacionales y mencionaremos las reglas de Codd.
¿Me ayudas a difundir este post por redes sociales? Tienes los botones justo abajo.
Si te apasionan las bases de datos, recuerda que tengo un portal dedicado única y exclusivamente a la administración de estas: Como ser DBA.
Recuerda suscribirte a nuestra newsletter para no perderte ninguna novedad en nuestra web. Tienes el formulario justo aquí debajo y en el pie de página. Solo recibirás la notificación de que hemos publicado una nueva entrada, ¡nada más!
Hasta la próxima, ¡un saludo!