Bases de datos y sistemas gestores de bases de datos
Una
base de datos (BD [ó BBDD]) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido; una biblioteca puede considerarse una base de datos
compuesta en su mayoría por documentos y textos impresos en papel e
indexados para su consulta. Desde el punto de vista informático, la base de datos es un sistema
formado por un conjunto de datos digitales almacenados en discos que permiten el
acceso directo a ellos y un conjunto de programas que manipulen ese
conjunto de datos.
Se puede definir una base de datos como una serie de datos organizados y
relacionados entre sí, los cuales son recolectados, almacenados digitalmente y explotados por los
sistemas de información de una empresa o negocio en particular.
Existen programas denominados sistemas de administración de bases de datos, abreviado DBMS (Database management system), que proporcionan un conjunto de servicios software para administrar bases de datos, permitiendo un fácil acceso a los datos por parte de múltiples usuarios, así como posibilitar la manipulación de los datos de la BD (insertar, eliminar, editar). Es usual denominarlos también como motores de BD.
Tipos de bases de datos
Las bases de datos pueden clasificarse de varias maneras, de acuerdo al
contexto que se esté manejando, la utilidad de las mismas, las
necesidades que satisfagan, etc.. Es usual clasificarlas de acuerdo a su modelo de administración de
datos.
Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos
(algo en donde se guarda la información), así como de los métodos para
almacenar y recuperar información de esos contenedores. Los modelos de
datos no son cosas físicas: son abstracciones que permiten la
implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos.
Bases de datos relacionales y SQL
Una
Base de Datos Relacional, es una base de datos que cumple con el
modelo relacional,
el cual es el modelo más utilizado en la actualidad para implementar
bases de datos ya planificadas. Permiten establecer interconexiones
(relaciones) entre los datos (que están guardados en tablas), y a través
de dichas conexiones relacionar los datos de ambas tablas, de ahí
proviene su nombre:
"Modelo Relacional".
Para manipular la información utilizamos un
lenguaje relacional, actualmente se cuenta con dos lenguajes formales, el
álgebra relacional y el
cálculo relacional.
El álgebra relacional permite describir la forma de realizar una
consulta, en cambio, el cálculo relacional sólo indica lo que se desea
devolver. El lenguaje más común para construir las consultas a bases de datos relacionales es
SQL
(Structured Query Language), un
lenguaje estándar implementado por los
principales motores o sistemas de gestión de bases de datos relacionales
integradas.
- SQL es un lenguaje estandar de consultas para bases de datos relacionales.
- Motores o sistema de bases de datos comunes (que en sí son los que guardan
las bases y otorgan las interfaces para consultar las bases o
conectarlas a otros programas) que permiten
sentencias en lenguaje SQL (suelen trabajan con el lenguaje base, luego cada motor le agrega su propia funcionalidad): MySQL, SQL
Server, postgreSQL y Oracle DB.
Bases de datos noSQL
En informática,
NoSQL es
una amplia clase de sistemas de gestión de bases de datos que difieren
del modelo clásico del sistema de gestión de bases de datos relacionales
(RDBMS) en aspectos importantes; el más destacado que no usan SQL como el principal lenguaje de consultas.
Típicamente las bases de datos relacionales han mostrado poca
eficiencia en determinadas aplicaciones que usan los datos de forma
intensiva, incluyendo el indexado de un gran número de documentos, la
presentación de páginas en sitios que tienen gran tráfico, y en sitios
de streaming audiovisual. Los sistemas de bases de datos NoSQL han crecido para enfrentarse a desafíos de tratamiento de datos en los que las
tradicionales RDBMS plantean problemas.
Las implementaciones típicas de RDBMS se han
afinado, o bien para una cantidad pequeña pero frecuente de lecturas y
escrituras, o para un gran conjunto de transacciones que tiene pocos
accesos de escritura. Por otro lado NoSQL puede servir gran cantidad de
carga de lecturas y escrituras.
Con el crecimiento de la web en tiempo real existe una necesidad de
proporcionar información procesada a partir de grandes volúmenes de
datos que tienen unas estructuras horizontales más o menos similares. El rendimiento y sus propiedades de
tiempo real son más importantes que la coherencia, en la que las bases
de datos relacionales tradicionales dedican una gran cantidad de
tiempo de proceso.
Las bases de datos NoSQL están altamente
optimizadas para las operaciones recuperar y agregar, y normalmente no
ofrecen mucho más que la funcionalidad de almacenar los registros (p.ej.
almacenamiento clave-valor). La pérdida de flexibilidad en tiempo de
ejecución, comparado con los sistemas SQL clásicos, se ve compensada por
ganancias significativas en escalabilidad y rendimiento cuando se trata
con ciertos modelos de datos.
Así pues algunos gestores de estas bases de datos como pueden ser
BigTable, desarrollado por Google, utiliza GQL, MongoDB utiliza JSON y
Cassandra utiliza CQL.
Entonces, ¿implemento una BD SQL o noSQL?
Una BD noSQL normalmente no sustituye a la base de datos
"clásica" SQL,
sino que surgen por otra necesidad (normalmente una necesidad de rendimiento
extremo). Si se utilizan una BD noSQL, SQL o se intentar combinar ambas es una decisión marcada por los tipos y modelos de datos, la arquitectura del sistema y los requerimientos de la tarea que se desea cumplir.
Recomiendo leer unos cuantos enlaces donde se resumen las ventajas e inconvenientes de cada tipo de base de datos y se realiza una comparativa entre ellas:
El mejor resumen que he leido, es el que realiza Jorge Escobar en el blog
Jungleg.com:
The main point I’m
trying to make is the following — use the right data solution to your
problem. SQL, NoSQL or both. Don’t be fixated on the technology, but on
what you need to accomplish.
http://es.wikipedia.org/wiki/Base_de_datos
http://www.maestrosdelweb.com/editorial/%C2%BFque-son-las-bases-de-datos/
http://es.kioskea.net/contents/66-introduccion-bases-de-datos