Sei sulla pagina 1di 19

Fundamentos de los Sistemas Gestores de Bases de Datos

[1.1] Funcionamiento los Sistemas Gestores de Bases de Datos


[1.1.1] Sistemas Gestores de Bases de Datos

Un Sistema Gestor de Base de Datos (SGBD) es el software que permite gestionar bases de datos,
ocultando la física de la misma y permitiendo su gestión desde un nivel más conceptual. Dicho
software permite separar las aplicaciones (los programas) de los datos; de modo que los programas
negocian con el SGBD el acceso a los datos.

En definitiva se trata de un software complejo, pero de gran importancia por lo delicado de la rama
de la información a la que se dedica. Los SGBD han crecido de manera exponencial estos últimos
años por el éxito de Internet, que ha provocado el acceso a miles y miles de bases de datos por parte
de millones de usuarios cada día.

[1.1.2] Modelo ANSI/X3/SPARC

El grupo de trabajo SPARC de la sección X3 del organismo de estándares ANSI, diseño un modelo en
el que indicaba cómo debía funcionar un SGBD para asegurar la separación entre datos y
aplicaciones. Este organismo definió tres y así especificó tres niveles:

 Nivel externo. Define el nivel en el que los usuarios y usuarias utilizan la base de datos. La
forma de ver la misma oculta la estructura real de la base de datos. Este nivel ofrece el
objetivo final de una base de datos, que es la visión de la misma que poseen los usuarios y
que gestionar observar de forma cómoda la información almacenada en el sistema.

Este nivel es creado por los desarrolladores o programadores de la base de datos.

 Nivel interno/físico. Se refiere a la forma en la que realmente se almacena la información


de la base de datos. Los administradores (DBA) de la base de datos son los encargados de
crear y configurar la base de datos a este nivel. Por lo tanto este nivel es el más relacionado
con los contenidos de este manual.
 Nivel conceptual. Define la base de datos haciendo referencia a la forma en la que se
relaciona la información, ocultando la forma en la que realmente se almacena en el
ordenador. Es un nivel más humano que el físico, pero no tanto como el externo.

Este nivel lo gestionan los analistas y/o diseñadores de la base de datos. Los esquemas de
la base de datos relacionados con este nivel (esquema conceptual y esquema lógico) son los
primeros que se crean.
La Ilustración 1, muestra la idea de los niveles en el modelo ANSI. Los tres niveles usan un modelo
de trabajo para crear los esquemas (diagramas) de trabajo de la base de datos. La idea es que pasar
de un nivel a otro sea un proceso automatizado (mediante lo que ANSI llama funciones de
traducción.

La Ilustración 2 muestra la propuesta arquitectónica del modelo ANSI/X3/SPARC. En ella se observa


el proceso de creación de una base de datos dividida en la fase de definición y la de creación. Los
números del esquema expresan el funcionamiento:

 El administrador empresarial (lo que hoy en día se conoce como analista) crea el esquema
conceptual. Éste se procesa con la ayuda de un procesador de esquema conceptual (lo que
hoy en día se conoce como herramienta CASE).
 De ese proceso se obtienen metadatos, la información que permite describir a la propia
base de datos.
 El esquema conceptual se modifica por parte del administrador de la base de datos para
producir el esquema interno de la misma usando un procesador de esquemas internosque
genera nuevos metadatos.
 A la vez el administrador de aplicaciones (jefe de desarrollo) genera el esquema externo
usando otro procesador que generará nuevos metadatos.
 La fase de manipulación la inicia el usuario, el cual gestiona los datos usando esquemas
externos. Los puntos 9 a 14 lo que hacen es transformar la información pedida por el usuario
de forma externa, a su forma física. Ese paso requiere dos transformaciones intermedias,
pasando por los esquemas conceptuales e internos (para lo cual se usan los metadatos
almacenados).

[1.1.3] Niveles de abstracción actuales

Hoy en día se definen más niveles de trabajo con las bases de datos. Se habla de cinco (a veces
incluso de más) niveles. Estos niveles son (empezando desde el más cercano al usuario):

 Nivel externo. Sigue representando la vista que poseen los distintos usuarios de la base de
datos. En realidad los esquemas de este nivel son los últimos que se crean y lo hacen los
desarrolladores o programadores.
 Nivel conceptual. Actualmente se considera así al nivel que representa los primeros
esquemas de la base de datos, que son aquellos que diseñan los analistas o diseñadores.
Ejemplo de modelo que opera a este nivel es el modelo Entidad/Relación.
 Nivel lógico. Se acerca más a la física de la base de datos. En este nivel se hace referencia a
estructuras de organización de información que varían según el tipo de SGBD que se utilice.
Este nivel sigue siendo manejado por los analistas. En muchos casos (aunque ciertamente
es peligroso) los diseñadores/as de la base de datos empiezan por este nivel saltándose el
anterior. En la actualidad el modelo relacional sigue siendo el modelo más habitual para
crear esquemas a nivel lógico.
 Nivel interno. Es el primero en el proceso de modelado de la base de datos que se realiza
sobre el software gestor de la base de datos (teniendo en cuenta que lo externo, las
aplicaciones, se crean más tarde). Usa el lenguaje de la base de datos para crear las
estructuras de datos definidas en el nivel lógico. Este nivel lo maneja el administrador de la
base de datos (o DBA).
 Nivel físico. Se refiere a como se organizarán los datos en el disco, en qué ordenadores se
crea la base de datos, si es distribuida o no, sistema operativo necesario, estructura de
directorios y archivos, configuración de servidores y sistema operativo, política de copia de
seguridad,…

La persona encargada de definir el nivel físico esto es la administradora de la base de datos


o bien la administradora del sistema. En realidad hay acciones referidas a este nivel que se
hacen antes que las del nivel anterior; otras se irán haciendo después o a la vez.

[1.1.4] Funciones del SGBD

Cualquier Sistema Gestor de Bases de Datos debe de ser capaz de realizar tres funciones básicas:

 Función de descripción o definición. Mediante ella se crean los metadatos de la base de


datos. Es la que utilizan los administradores y analistas de las bases de datos para crear los
esquemas lógicos, internos y físicos. Esta función se realiza mediante el lenguaje de
descripción de datos o DDL, aunque se puede realizar mediante herramientas gráficas que
faciliten esta tarea.

Las instrucciones SQL estándar que se diseñaron para realizar esta función son CREATE,
ALTER y DROP.

 Función de manipulación. Permite modificar y utilizar los datos de la base de datos. Se


realiza mediante el lenguaje de modificación de datos o DML. Esta función a veces se divide
en tres
o Modificación propiamente dicha, realizada mediante un lenguaje DML, que
permite añadir, modificar y eliminar datos. En SQL se realiza mediante las
instrucciones INSERT, DELETE y UPDATE.
o Consultar datos. Realizada con un lenguaje DQL. En SQL se realiza mediante la
potente instrucción SELECT.
o Control de transacciones. Realizada con un lenguaje DTL. ROLLBACK y COMMIT son
las instrucciones creadas para esta funcionalidad.

 Función de control. Mediante esta función los administradores poseen mecanismos para
proteger las visiones de los datos permitidas a cada usuario. Es la función relacionada con
la seguridad de las bases de datos. El lenguaje que implementa esta función es el lenguaje
de control de datos o DCL.

En SQL son GRANT y REVOKE las instrucciones realizadas con esta función.

[1.1.5] Tareas del DBA

Estos apuntes están dedicados a la labor del administrador de bases de datos o DBA. Las tareas más
comúnmente aceptadas como implícitas a la labor de un DBA son:
 Configurar e instalar el hardware en el que se instalará el servidor o servidores de bases
de datos. Implica decidir qué hardware es el óptimo e implementar memoria, discos e
instalación de red necesaria. A veces hay un segundo administrador (el del sistema) que se
encarga de ello pero basándose en las necesidades expuestas por el DBA.
 Configurar e instalar el Sistema Operativo. También la gestión mínima del sistema
operativo para que la base de datos funcione correcta y rápidamente. Nuevamente, puede
ser una tarea coordinada con un administrador del sistema.
 Instalación y mantenimiento del SGBD. Seleccionando la más adecuada forma de
instalación y configurando lo necesario para su óptimo rendimiento, acorde con las
necesidades. También es parte de esta tarea el control de las actualizaciones del sistema de
bases de datos que sean necesarias.
 Crear y configurar las base de datos. Creación de la estructura interna de la base de datos
(tablas, usuarios, permisos, vistas,…). Es otra de las tareas más habitualmente relacionadas
con el DBA y la primera fase (y las más crítica) en a administración de una base de datos.
 Control de los usuarios y los permisos. En definitiva establecer las políticas de seguridad
ante accesos no cualificados, tan imprescindibles en toda base de datos.
 Gestión de la seguridad. Complemente la tarea anterior para proteger al sistema ante
ataques de terceros o condiciones que comprometan la estabilidad del sistema.
 Monitorizar y optimizar el rendimiento de la base de datos. Un DBA debe detectar los
cuellos de botella del sistema y actuar en consecuencia. Esto incluye optimizar las
instrucciones, crear estructura de acceso veloz o mejorar la infrastructura hardware y
software.
 Realizar tareas de copia de seguridad y recuperación. Quizá la tarea más crítica. Consiste
en realizar acciones para en caso de catástrofe poder recuperar todos los datos

[1.2] opciones de funcionamiento de un SGBD


[1.2.1] SGBD monocapa

Se trata de Sistemas Gestores instalados en una máquina desde la que se conectan los propios
usuarios y administradores. Es decir todo el sistema está en una sola máquina.

La ventaja es la seguridad y la clara desventaja la baja disponibilidad e incomodidad de trabajo.

Es un modelo que sólo se utiliza con bases de datos pequeñas y poca cantidad de conexiones. El
software Access de Microsoft es considerada un sistema gestor monocapa (aunque tiene algunas
posibilidades para utilizar en dos capas).
[1.2.2] SGBD de dos capas

Usa un modelo de funcionamiento tipo cliente/servidor. La base de datos y el sistema gestor se


alojan en un servidor, mientras que los clientes acceden desde máquinas distintas a través de la red
(sea local o global).

Los usuarios requieren disponer de un software de acceso denominado cliente de base de datos.
En el servidor hay procesos encargados de atender a estas peticiones.

En los sistemas bicapas hay dos posibilidades:

 Arquitectura cliente/servidor único. Un solo servidor gestiona la base de datos, todos los
clientes se conectan a él para realizar las peticiones a la base de datos.
 Arquitectura cliente/multiservidor. La base de datos se distribuye entre varios servidores.
El cliente no sabe realmente a qué servidor se conecta; el software de control de
comunicaciones se encargará de dirigir al usuario al servidor adecuado. De forma lógica, es
como si se tratara de un solo servidor aunque físicamente sean muchos (el cliente no
percibe que haya más de un servidor).

[1.2.3] SGBD de tres o más capas


En este caso entre el cliente y el servidor hay al menos una capa intermedia (puede haber varias).
Esa capa (o capas) se encarga de recoger las peticiones de los clientes y luego de comunicarse con
el servidor (o servidores) de bases de datos para recibir la respuesta y enviarla al cliente.

El caso típico es que la capa intermedia sea un servidor web, que recibe las peticiones a través de
aplicaciones web; de este modo para conectarse a la base de datos, el usuario solo requiere un
navegador web, que es un software muy habitual en cualquier máquina y por lo tanto no requiere
una instalación de software adicional en la máquina cliente.

Este modelo es el que más se está potenciando en la actualidad por motivos de seguridad y
ocultación de la base de datos.

El servidor intermedio, en muchos casos, realmente es el que aloja la interfaz de manejo de los
usuarios de la base de datos. En términos del modelo ANSI, es el que almacena y sirve los esquemas
externos de la base de datos.

interfaces de acceso a las bases de datos

El servidor intermedio se suele comunicar con el servidor de bases de datos a través de un


componente (un driver) que proporciona a los programadores una interfaz (API) de acceso a la base
de datos. Las interfaces más populares son:

 ODBC (Open DataBase Connectivity). Interfaz muy utilizada y veterana auspiciada


porMicrosoft para acceder a todo tipo de bases de datos (tanto relacionales como no
relacionales) a través de SQL incrustado en el código. Funciona en todo tipo de sistemas y
plataformas.
 JDBC (Java DataBase Connect). Interfaz de uso habitual para los programadores del lenguaje
Java creada por la empresa Sun Microsystems (creadora del lenguaje Java). Es similar a la
anterior, pero utilizable solo en este lenguaje.
 OLE DB (Online Linking and Embeded DataBases). Interfaz de bajo nivel para el acceso a
bases de datos de todo tipo. Se basa en PDBC al que aporta nuevas posibilidades. No ha
tenido el éxito que sigue teniendo ODBC.
 ADO (ActiveX Data Objects). Interfaz creada por Microsoft para el acceso a bases de datos
a través de objetos ActiveX creados en Visual Basic.
 ADO.Net. Interfaz de acceso a base de datos para aplicaciones basadas en la
plataforma.Net de Microsoft.
 GDA (GNU Data Access). Puesto que las interfaces de acceso pertenecen a empresas, GDA
es una interfaz abierta creada para acceder a todo tipo de bases de datos a través de una
serie de funciones y módulos lo más genéricos posibles. La idea en su diseño era
proporcionar la funcionalidad de ODBC o JDBC pero desde la óptica del software abierto.

[1.3] Repaso del modelo relacional


[1.3.1] Fundamentos del modelo relacional

El Modelo Relacional fue enunciado por Edgar F. Codd en los años 70 y, todavía, sigue siendo el
modelo más utilizado por los Sistemas Gestores de Bases de Datos comerciales.

Codd se basó en los teoremas de conjuntos de Cantor y Childs para crear un modelo flexible,
entendible y eficiente de base de datos. Las implementaciones iniciales de este modelo fueron muy
costosas, pero ahora hay cientos de sistemas comerciales que usan este modelo.

Los detalles fundamentales de este modelo son:

 Los datos se organizan en tablas. Cada tabla contiene datos referidos a un elemento
distinguible en el mundo real (personas, facturas, contratos, etc.)
 Las tablas están formadas por filas y columnas. Las columnas indican un atributo
(nombre,primer apellido, salario, etc.), cada fila es un ejemplar de cada elemento del mundo
real. Por ejemplo, si una tabla se usa para almacenar los datos de los trabajadores, cada fila
representa los datos de un trabajador.
 La intersección entre fila y columna contiene un dato concreto.
 Una columna, o un conjunto de columnas, se establecen como clave principal o primariade
la tabla, de modo que los datos que contienen son distintos en cada fila de la tabla.
 Para poder relacionar datos de diferentes tablas, se usan claves secundarias o foráneas.
Datos que se refieren a claves primarias de otras tablas.
 En las tablas relacionales se pueden aplicar estas restricciones:
o Clave primaria (Primary Key, PK). Las columnas marcadas así, identifican cada fila y
además no pueden quedar vacías ni repetir valores en diferentes filas.
o Unicidad (Unique, UK). Lasa columnas marcadas con ella no pueden repetir valores
en diferentes filas.
o Obligatoriedad (Not Null, NN). Las columnas con esta restricción, obligatoriamente
deben de contener algún valor (no pueden quedar vacías).
o Integridad referencial (Foreign Key, FK). Los valores de esas columnas deben de
corresponderse con los de las columnas de la clave principal con cuya tabla se
relacionan.

[1.4] Sistemas Gestores de Bases de Datos Comerciales de tipo Relacional


[1.4.1] Licencias de software

El gurú del software libre, Richard Stallman denomina al software propietario (software cuyo uso
y explotación se rige por un contrato privado emitido por la empresa fabricante) software privativo.
La razón es que la licencia de uso de ese software no permite ver ni editar el código fuente original
y, por lo tanto, impide modificar el mismo y adaptarlo a nuevas funcionalidades.

Por otro lado, el propio Stallman define al software que sí permite este proceso, software libre. En
ambos casos el software no tiene por qué ser gratuito. Es decir, la diferencia no es la gratuidad sino
la libertad de utilizar el código fuente del software.

Una definición, quizá menos tendenciosa, es la que diferencia al software en: software de código
abierto (aquel cuyo código fuente está a disposición del cliente) y software de código cerrado u
oculto. Está diferencia de software se debe a dos formas diferentes de entender la fabricación de
software.

Los defensores del código cerrado argumentan que es lógico protegerle para evitar copiar su
tecnología por parte de la competencia e incluso por razones de seguridad del mismo, al no poder
asegurar su correcto funcionamiento ante modificaciones de terceros.
Los defensores del código abierto están a favor porque ofrece la posibilidad de poder modificar el
código por parte de miles de programadores en todo el mundo que pueden compartir dichas
mejoras y así rápidamente y de manera dinámica perfeccionar el producto. Argumentan que es más
seguro este software ya que permite detectar problemas y virtudes más rápidamente.

[1.4.2] SGBD de código cerrado

Normalmente las licencias de uso de Sistemas Gestores de Bases de Datos con código cerrado usan
licencias tipo CLUF o EULA, acrónimos equivalentes (en español y en inglés respectivamente de)
de contrato de licencia de usuario final.

En estas licencias, el usuario firma unas condiciones de uso por el software, entre las que siempre
figuran el hecho de no poder distribuir libremente el mismo y que está restringido a unas
condiciones de trabajo concretas. Por ejemplo se restringe el número de máquinas en el que se
puede instalar o el número de usuarios que la pueden utilizar.

Ejemplos de SGBD de este tipo son:

 Oracle Database. Propiedad de Oracle Corporation. Es el SGBD más veterano y más


influyente ya que la mayoría de mejoras al SQL original se desarrollaron para este SGBD.
Sigue siendo uno de los SGBD comerciales más utilizados y además posee una gran relación
con el lenguaje Java, acrecentada por la compra de la empresa creadora del mismo, Sun
Microsystems.

Presume de su gran estabilidad y escalabilidad, un control avanzado de transacciones y de


sus lenguajes internos de manejo. Especialmente famoso es su lenguaje procedimental
PL/SQL. Es un SGBD multiplataforma, que se puede instalar en diferentes sistemas,
especialmente Linux de tipo Red Hat Enterprise, Windows y Solaris.

 DB2. Propiedad de IBM, es una de las bases de datos comerciales más populares.
Desarrollada para Windows, UNIX y Linux. Implementa XML de manera nativa y dispone de
amplias facilidades de migración de datos (especialmente desde Oracle) así como uso de
transacciones avanzadas.
 SQL Server. Propiedad de Microsoft. Originalmente basado en el código del
SGBD SyBaseque Microsoft. Actualmente SyBase (ahora perteneciente a la empresa SAP) y
SQL Server son productos diferentes. SQL Server dispone de una gran escalabilidad,
estabilidad, uso de transacciones, entorno gráfico avanzado y de éxito entre los
programadores de la plataforma .NET (también de Microsoft por su compatibilidad con
esta).
 Informix. Propiedad de IBM desde 2001 (anteriormente perteneciente a la empresa
Informix). Durante los años 90 fue el sistema más popular por detrás de Oracle, por lo que
sigue siendo el software de gestión de las bases de datos numerosos negocios

[1.4.3] SGBD de código abierto


Licencias de código abierto
 GPL (GNU General Public License). Es la licencia más utilizada en el mundo del software de
código abierto. Fue creada por Richard Stallman para el proyecto GNU, por lo tanto es la
licencia del sistema Linux. Es la Free Software Fundation la entidad encargada de actualizar
y revisar esta licencia.

Esta licencia permite:

o Modificar y distribuir el software bajo esta licencia (incluso si se modifica ).


o Cobrar por la distribución del software (incluso si lo hemos modificado)

Las restricciones más importantes que realiza esta licencia son:

o Disminuir, en las obras distribuidas, la licencia original. Es decir no podemos, por


ejemplo, cerrar el código original o modificar esa licencia.
o Distribuir el software sin el código fuente original.
o Distribuir el software sin suministrar a los destinatarios una copia de la licencia GPL
del software.
o Aplicar derechos de copyright, si el autor no indica explícitamente que la obra
original era GPL.
 Licencia BSD. Es la que se creó para los sistemas BSD (Berkeley Software Distribution). Es
menos restrictiva que la anterior. Permite modificar y distribuir el software bajo esta licencia
(incluso si se modifica ) en la forma que queramos siempre que se cumpla
o Si distribuimos el software debemos mantener el aviso de copyright anterior del
software en el que se basa nuestra distribución.
o No podemos usar el nombre de los autores originales ni de sus colaboradores para
apoyar o promocionar una distribución modificada del software original.

Hay que tener en cuenta que incluso podemos modificar software con licencia BSD y
distribuirle bajo una licencia de software cerrado. El caso más típico de esta idea es el
sistema Mac OS de Apple que se basa originalmente en un sistema BSD.

 Licencia MIT. Licencia creada por el Instituto Tecnológico de Masachusetts, para sus
distribuciones de software, concretamente se utilizó para el sistema X Window System. Es,
como la anterior, muy permisiva. Permite modificar y redistribuir el software en la forma
que el usuario desee, basta con incluir el aviso de copyright de esta licencia (que incluso se
puede modificar).
 Licencia Apache. Presente en todo el software distribuido por la fundación Apache. Solo
exige que se avise al usuario que el software original utilizaba licencia Apache, pero se
permite que una distribución de software sea más restrictiva que el original (al estilo de las
dos licencias anteriores).
 Dominio público. Es la licencia más permisiva de todas. De hecho un software bajo esta
denominación no tiene ningún derecho de autor o restricción de uso. Es la licencia de uso
de las obras (sean del tipo que sean) a las que le caducan los derechos de autor.

productos comerciales de código abierto

 MySQL. Inicialmente creada por la empresa MySQL AB, posteriormente comprada por Sun
Microsystems que, a su vez, fue comprada por Oracle. Ha sido considerada como la
principal SGBD de la comunidad de programadores de código abierto y de hecho en Internet
sigue siendo la principal base de datos asociada a una aplicación web. Mantiene su licencia
de tipo GPL, pero posee una segunda licencia cerrada para opciones de compra comercial
con soporte.

Es muy popular por su histórica asociación con el lenguaje PHP, por su buena estabilidad,
gran escalabilidad, e incluso uso de transacciones y lenguaje procedimental; además de ser
un producto con infinidad de plataformas posibles para su instalación.

 MariaDB. Derivada la anterior por Michael Widenius, fundador de MySQL. La idea es


disponer de un producto compatible con MySQL que mantenga la licencia GPL de forma
perdurable. Esta siendo muy exitosa y está reemplazando a MySQL en numerosas
instalaciones de Linux.
 PostgreSQL. Versión de código abierto basada en el producto Ingres de la Universidad de
Berkeley. Usa licencia de tipo MIT. Es muy potente y, probablemente, sea el SGBD relacional
más respetuoso con los estándares. Hoy en día, está considerada como la más potente de
las bases de datos de código abierto y a partir de su núcleo se han creado otros productos
de gestión de bases de datos.
 SQLite. Creada por el desarrollador Richard Hipp, usa una licencia de dominio público.
Presume de ser totalmente relacional, compatible con ACID (gestión de transacciones
completo) e incluso incluir un lenguaje procedimental (al estilo de PL/SQL). Todo ello en
apenas 300KB de espacio.

Está escrita en C y guarda todo lo que necesita en un solo fichero para cada base de datos.
Su ligereza y potencia aceptable la han hecho muy popular en muchas aplicaciones e incluso
en los sistemas operativos móviles (casi todos la integran).

[1.5] Bases de datos NoSQL. modelos diferentes del relacional


[1.5.1] Introducción

Las bases de datos relacionales han sido el modelo más popular desde finales de los años 70 por su
solidez y gran facilidad para diseñar sistemas complejos. Sin embargo en estos últimos años
empiezan a estar desbordadas ante el uso de bases de datos que tienen que dar servicio veloz y
concurrente a miles de usuarios, los cuales son capaces de generar enormes cantidades de
información en poco tiempo.

Esta información en una base de datos relacional habría que validarla con las reglas e integridad que
se imponen en esas bases de datos, indexarla y asegurar su uso en transacciones, etc.

En un sistema con miles de entradas por minuto (como ocurre con las bases de datos de las redes
sociales), el sistema se colapsaría. Por ello se han diseñado bases de datos que se saltan el modelo
relacional y que ya no utilizan el lenguaje SQL. De ahí el nombre de sistemasNoSQL.

Aunque este término se utiliza para designar a las bases de datos documentales, gráficas y otros
esquemas de bases de datos; actualmente se utiliza especialmente para designar a las bases de
datos que requieren tantas transacciones por segundo, que el esquema relacional tradicional no
daría abasto para ello.
La base teórica de este modelo se basa en el teorema de CAP o de Brewer, que indica que en un
sistema distribuido no se pueden asegurar simultáneamente estas tres reglas:

 Consistencia (C). Que consigue que la información sea la misma (y en todo momento) en
todos los nodos que almacenan los datos
 Disponibilidad (A de Availability). Que hace que cada instrucción realizada sobre los datos
reciba la confirmación de si ha sido satisfactoria o no. Es decir, se tiene la seguridad de que
el sistema siempre atiende a los usuarios ocurra lo que ocurra.
 Tolerancia a fallos (P de Partition tolerance), que permite que el sistema siga funcionando
aun cuando se pierdan datos u ocurran errores.

Un sistema relacional de base de datos podría asegurar la C y la A, pero no la disponibilidad en caso


de una gran demanda de peticiones. Las bases de datos NoSQL siempre son tolerantes a fallos a
cambio de no asegurar la consistencia (como ocurre con CouchDB o Cassandra) o la disponibilidad
(como ocurre con MongoDB o Redis).

[1.5.2] Diferencias con bases de datos SQL

Las bases NoSQL utilizan un modelo diferente en el que los datos se almacenan de forma menos
estricta, en especial no siguen estas reglas:

 Transacciones ACID, como sí hacen los SGBD potentes relacionales (como Oracle, DB2,
SQLServer o PostgreSQL). ACID hace referencia a las propiedades:
o Atomicidad (A). Que implica que ninguna instrucción se pueda quedar a medias. Es
decir o se ha ejecutado completamente o no, aunque ocurra un error grave en el
servidor.
o Consistencia (C). Asegura que una transacción siempre mantiene la integridad de
los datos, se anule o se lleve finalmente a cabo la transacción. Incluso en cualquier
momento intermedio de la transacción.
o Aislamiento (I). Asegura que las transacciones simultáneas no se afecten entre sí.
Es decir que una transacción será independiente de la otra.
o Durabilidad (D). Asegura que cuando se confirme la transacción, los efectos de sus
instrucciones serán definitivos, independientemente de que el sistema se apague o
cierre por un error grave.

No obstante hay bases de datos NoSQL que son capaces de gestionar transacciones ACID,
al menos en los nodos centrales (los que compactan la información definitiva).

En la mayoría se usa una alternativa conocida como BASE, que es una norma de
disponibilidad y consistencia menos ambiciosa.

 Datos no relacionales. Los datos no se almacenan en tablas relacionales que se combinan


mediante operaciones de tipo JOIN. El modelo lógico es distinto y variable dependiendo del
sistema.
 SQL como lenguaje de consulta. En su lugar utilizan lenguajes de programación
comoJava, JavaScript o C++ para acceder a los datos y otros como XML o JSON para definir
los datos y metadatos.
[1.5.3] Usos habituales de las bases de datos NoSQL

 Datos de registros que se modifican cada poco tiempo (logs de servidores web, listado de
peticiones http, etc.)
 Datos que se producen de forma paralela (se graban a la vez)
 Datos con relaciones complejas, difícilmente consultables desde SQL o representables de
forma relacional
 Datos desestructurados o combinaciones de datos estructurados y desestructurados.
 Datos que se producen a gran velocidad

[1.5.4] Tipos de bases de datos NoSQL

Se consideran dentro de esta clasificación a estos tipos de bases de datos:

 Clave/valor. Basadas en el funcionamiento de los arrays asociativos. Se asocia una clave (no
repetible) a uno o varios valores.
o Amazon Dynamo DB. Desarrollada por la empresa Amazon, es un proyecto
propiedad de esta empresa implementada para gestionar la enorme cantidad de
transacciones de esta empresa y como una de las bases de su negocio en la nube.
Almacena los datos en estructuras clave, valor: los valores son elementos binarios
y, por lo tanto, opacos salvo desde la propia base de datos.
o Redis. Posee licencia BSD. Usa un modelo de asociación de claves a un contenido
indexado. Usa la RAM de forma intensiva para almacenar los datos. El resultado de
su arquitectura es una base de datos muy veloz. Por ello cada vez es más utilizada
o Oracle NoSQL. SGBD de Oracle que permite modelado de datos de forma relacional,
como documentos JSON o como datos de tipo clave/valor.
 Almacenes documentales. En ella, la información importante utiliza un formato
documental; es decir, un formato que encapsule la información y sus metadatos. Los datos
se almacenan usando XML, JSON o incluso formatos binarios como PDF o Microsoft Office.
Los documentos se asocian a un valor clave (key) que permite su in–dexación. Algunas bases de
datos comerciales de tipo documental son:

 MongoDB. Todavía es el SGBD de tipo NoSQL más utilizado. Tiene licencia GNU y utiliza un
formato documental llamado BSON que es una versión binaria del lenguaje JSON. Las
funcionalidades de acceso y gestión de datos y metadatos se realizan mediante JavaScript.
 Apache CouchDB. Dentro de la familia Apache (y usando licencia de código abierto Apache)
es una base de datos NoSQL orientada a almacenar documentos. Usa formatoJSON para
almacenar los datos y las consultas se realizan mediante JavaScript. Permite gestionar la
información mediante peticiones HTTP de tipo REST.

Almacenes de columna ancha (wide column stores). Se trata, en realidad, de una


modalidad de base de datos de tipo clave/valor en la que los datos se almacenan en
tablas, filas y columnas. La diferencia con las relacionales es que el nombre y tipo de las
columnas varían de fila a fila.

o Google BigTable. Base de datos propietaria utilizada para muchos de los servicios
de almacenamiento de Google. Los datos se almacenan en una estructura
multidimensional de tres claves (fila, columna y fecha) y permiten ser particionados.
El modelo físico se basa en el Google File System, modelo de archivos propietario
de Google.
o Apache Cassandra. Con licencia Apache, es muy popular y de contrastada potencia.
Se desarrolló inicialmente por facebook. Los datos se almacenan en tuplas sin
relaciones de integridad. Presume, además, de un crecimiento exponencial en estos
últimos tiempos y de ser el motor de base de datos de servicios
como twitter oNetflix.
o Apache HBase. Licencia Apache. Se basó en BigTable. Se utiliza en numerosas
aplicaciones basadas en datos. HBase es parte del proyecto Hadoop de Apache para
el proceso de Big Data.

 Basadas en grafos. Utilizan una estructura de los lenguajes de programación conocida como
grafo, que permite relacionar los datos a través de enlaces que facilitan el recorrido por los
mismos. Se usa para almacenar datos con relaciones complejas (por ejemplo trayectos con
coordenadas GPS, relaciones sociales,…).
o Neo4j. Es el SGBD de este tipo más utilizado. Es capaz de asegurar transacciones de
tipo ACID. Posee licencia GPL y está programada en Java. Usa el
lenguaje CQL(Cypher Query Language) creado para las bases de datos de este tipo.
Permite la gestión de los datos a través de peticiones HTTP de tipo REST. Su licencia
es GPL
o OrientDB. Se la considera de este tipo, pero en realidad permite organizar los datos
en forma documental, con clave/valor u orientada a objetos. Las relaciones entre
los datos siempre utilizan un modelo de grafos en todo caso. Usa licencia Apache
 Bases de datos nativas XML. El formato documental XML se utiliza en casi cualquier base
de datos comercial actual. Se habla de nativas cuando el sistema utiliza en todo momento
XML para almacenar y gestionar los datos. En ellas la información se almacena en forma
documental utilizando XML y se maneja con los lenguajes relacionados con
XML: XQuery,XPath, XSL,… La gestión avanzada se realiza con conectores que permiten
manejar el XML desde lenguajes clásicos como por ejemplo Java. Ejemplos:
o Mark Logic Server. Usa licencia comercial.
o BaseX. Utilizada por la comunidad GitHub (que es un servicio de almacenamiento
en la nube utilizado por miles de programadores), de libre uso.
o Virtuoso. Posee licencia GPL. En realidad es un sistema multimodelo que permite
manipular los datos desde un enfoque relacional o basado en grafos de
tipo RDF(lenguaje de definición basado en XML).

[1.5.5] BigData y MapReduce


Idea del Big Data

Big Data es un término que se utiliza para hacer referencia a los datos que son tan enormes y
complejos que requieren métodos de gestión y consulta sobre los mismos que escapa a las técnicas
clásicas de trabajo con bases de datos.

El uso de este término se ha potenciado debido a la producción masiva de información digital que
se realiza continuamente desde Internet.
Para que un conjunto de datos sean considerados Big Data, tienen que ser enormes en cuanto a
cantidad, muy variados en tipo y estructura, producidos a gran velocidad y veraces (información
real).

MapReduce

Se trata de un modelo de programación que permite procesar enormes volúmenes de datos. Se


basa en computación distribuida.

Muchas bases de datos NoSQL poseen funciones de tipo MapReduce, pero la implementación de
este modelo es especialmente utilizada en sistemas de trabajo con BigData.

MapReduce no utiliza un modelo lógico de base de datos, sino que trabaja con sistemas de ficheros
directamente. En este sentido hay dos soluciones muy populares para almacenar los ficheros:

 Google File System (GFS). Solución de archivos distribuidos creada de forma propietaria por
Google para aplicar MapReduce.
 Hadoop File System (HDFS). Solución similar a la anterior, pero gratuita y de código abierto.

soluciones comerciales

 Apache Hadoop. Se trata de un marco (framework) de trabajo que permite trabajar con
grandes volúmenes de datos de forma distribuida. Une el sistema de ficheros HDFS (para el
amacenamiento de los datos) con MapReduce (para el proceso). Es, de largo, la solución
más utilizada para trabajar con BigData.
 Apache Spark. Es otro framework de trabajo con una finalidad similar pero que admite
diferentes posibilidades para el almacenamiento de datos (incluido HDFS). Es más rápido
que Hadoop por lo que se usa más para aplicaciones que requieren gran velocidad de
proceso de datos (inteligencia artificial, aplicaciones de tiempo real, machine learning,etc.).

Se pueden utilizar ambos marcos (Spark y Hadoop) a la vez.

Potrebbero piacerti anche