0% encontró este documento útil (0 votos)
13 vistas19 páginas

Sgba 030446

Un Sistema Gestor de Base de Datos (SGBD) es un software que gestiona bases de datos, separando aplicaciones de datos y permitiendo su acceso a través de un modelo de niveles definido por ANSI/X3/SPARC. Este modelo incluye niveles externo, interno y conceptual, y ha evolucionado para incluir niveles lógicos y físicos, cada uno con funciones específicas de descripción, manipulación y control. Los SGBD pueden operar en arquitecturas monocapa, bicapa o de múltiples capas, y utilizan diversas interfaces de acceso como ODBC y JDBC, siendo el modelo relacional el más utilizado en la actualidad.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas19 páginas

Sgba 030446

Un Sistema Gestor de Base de Datos (SGBD) es un software que gestiona bases de datos, separando aplicaciones de datos y permitiendo su acceso a través de un modelo de niveles definido por ANSI/X3/SPARC. Este modelo incluye niveles externo, interno y conceptual, y ha evolucionado para incluir niveles lógicos y físicos, cada uno con funciones específicas de descripción, manipulación y control. Los SGBD pueden operar en arquitecturas monocapa, bicapa o de múltiples capas, y utilizan diversas interfaces de acceso como ODBC y JDBC, siendo el modelo relacional el más utilizado en la actualidad.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Funcionamiento de los Sistemas Gestores de Bases de

Datos
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.

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 internos que 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.

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 [Link] con un lenguaje DTL.
ROLLBACK y COMMIT son las instrucciones creadas para esta
funconalidad.
• 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 veloces 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

opciones de funcionamiento de un SGBD


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).
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).
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 por Microsoft 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.
• [Link]. 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.

repaso del modelo relacional


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
primaria de 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.

Sistemas Gestores de Bases de Datos Comerciales de


tipo Relacional
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.

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 SyBase que 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
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).

bases de datos NoSQL. modelos diferentes del


relacional
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
sistemas NoSQL.

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 como Java, JavaScript o C++ para acceder a los datos y otros
como XML o JSON para definir los datos y metadatos.

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

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 formato JSON 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 o Netflix.
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.

También podría gustarte