martes, 8 de febrero de 2011

Arquitectura de Datos - Conceptos Generales

Conceptos generales

Base de Datos: Es un sistema que almacena datos que están relacionados.
Se pueden clasificar según su función o según su estructura. La clasificación en base a su función comprende una gama muy alta que no se incluirá en este trabajo. La segunda clasificación según su estructura o modelo de base de datos, se describe a continuación:
- Base de datos jerárquicos: En este modelo la información se almacena en una estructura jerárquica. En este modelo los datos se organizan en una forma similar a un árbol invertido, en donde un nodo padre de información puede tener varios hijos. La gran desventaja de este modelo es la incapacidad de representar eficientemente la redundancia de la información relacionada.
- Base de datos de red: Este modelo es muy similar al anterior, con la gran diferencia que un nodo pueda tener varios padres.
- Bases de datos transaccionales: Su fin único es el envió y recepción de datos a grandes velocidades.
- Bases de datos relacionales: Su concepto principal es el uso de “relaciones”. Estas mismas podrían considerarse en forma lógica como conjuntos de datos llamados “tuplas”.  También surge el concepto de tabla, compuesta de registros (filas en una tabla), que representan las tuplas, y campos (las columnas de una tabla). Otra característica muy importante de este modelo, es la independencia del modelo lógico contra el modelo físico, lo cual significa que el lugar y forma en que se almacenen los datos no tiene relevancia.

Sistema Administrador de Base de Datos  (DBMS-Data Managment System ) son un tipo de software muy específico, dedicado a servir de interfaz entre las bases de datos y las aplicaciones que la utilizan. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta.
Arquitectura de bases de datos
La arquitectura de los sistemas de bases de datos utilizada en la actualidad fue propuesta por el comité ANSI-SPARC (American National Standard Institute - Standards Planning and Requirements Committee) en 1975 y consiste en 3 niveles distintos de abstracción de los datos almacenados.
Los niveles propuestos son:
* Nivel interno o físico: Describe los datos de forma física, es decir, todos los detalles de su almacenamiento, configuraciones a bajo nivel y rutas de acceso.
* Nivel conceptual o lógico: Es el siguiente nivel más alto en abstracción. Describe los datos mediante un esquema conceptual, el cual describe las entidades, atributos, relaciones entre los datos y las restricciones de integridad.
* Nivel externo o vistas: Es el nivel más alto en abstracción. Describe las vistas al usuario de los datos, es decir, muestra sólo un conjunto de datos específico a ciertos usuarios y oculta el resto.
Es importante mencionar que para una base de datos existe un nivel único interno y un nivel único conceptual, pero pueden existir varios niveles externos según se requiera.
La arquitectura de 3 capas permite la independencia de datos que se puede definir como la capacidad para modificar el esquema en un nivel del sistema sin tener que modificar el esquema del nivel inmediato superior 1. Los dos tipos de independencia de datos que existen son:
* Independencia Física: Es la capacidad para modificar el esquema interno (físico) sin alterar los niveles superiores.
* Independencia Lógica: Es la capacidad para modificar el esquema conceptual sin la necesidad de rehacer las aplicaciones.

Sistemas de bases de datos
Un sistema de base de datos es un sistema informático que sirve como interfaz entre la base de datos y el usuario por medio de peticiones. Está integrado por  un conjunto de componentes que permiten:
* Definir los tipos de datos, estructuras y restricciones de los datos que se almacenarán en la base de datos.
* Almacenar los datos.
* Manipular los datos almacenados.
Los sistemas de base de datos tienen 4 componentes principales:
* Datos
* Equipo (Hardware)
* Programas (Software)
* Gente
Los sistemas de bases de datos se pueden clasificar de varias formas:
1. De acuerdo al modelo de datos en el que está basado.
o Relacional
o Orientado a Objetos
o Objeto-relacional o relacional extendido.
o Jerárquico
o De red
2. De acuerdo al número de usuarios que la pueden usar.
o Monousuario
o Multiusuario
3. De acuerdo al número de sitios en el que se encuentra distribuida la base de datos.
o Centralizado
o Distribuido
Existen 8 servicios principales que los sistemas de bases de datos deben proporcionar:
1. La capacidad a los usuarios de almacenar, acceder y actualizar datos en la base de datos
2. Un catálogo (diccionario de datos) en el que se almacenen las descripciones de los datos y que sea accesible por los usuarios. Este diccionario de datos  contiene información que describe los datos de la base de datos (metadatos).
3. Un mecanismo que garantice que todas las actualizaciones correspondientes a un conjunto de acciones (transacción) se realicen por completo  o que no se realice ninguna.
4. Un mecanismo que asegure que la base de datos se actualice correctamente cuando varios usuarios la actualizan a la vez.
5. Un mecanismo capaz de recuperar la base de datos en caso de que ocurra algún suceso que la dañe llevándola a un estado consistente.
6. Un mecanismo que garantice que sólo los usuarios autorizados pueden acceder a la base de datos.
7. Integración con algún software de comunicación que permita a los usuarios acceder a la base de datos a través de una red.
8. Los medios necesarios para garantizar que tanto los datos de la base de datos, como los cambios que se realicen sobre ellos, sigan ciertas reglas de integridad garantizando su calidad.
Los sistemas de base de datos tienen la característica de utilizar lenguajes basados en relaciones de información para utilizarse, programarse, explotarse y administrarse. Y las instrucciones relacionadas en estos lenguajes se clasifican dependiendo su función en el SDB:
- Data Control Language (DCL): es utilizado para tener control del acceso a la base de datos.
- Data Definition Language (DDL): utilizado para configurar, definir, modificar y borrar tablas y vistas.
- Data Manipulation Language (DML): utilizado para extraer y modificar información.
Frontend vs Backend

En los sistemas de bases de datos existen componentes servidor (backend) y componentes de explotación, consumo y presentación de la información (frontend). Aunque actualmente no es tan común utilizar los mismos frontends que provee el fabricante, un caso muy claro seria Access, ya que es una BD que tiene sus elementos de presentación y explotación integrados. Aunque también los aplicativos que se desarrollan para consumir la información de una BD se considerarían como Frontend. Por ejemplo una aplicación web, que explota los servicios de una BD de SQL Server u Oracle. O incluso un Servicio XML Web que consume información de una base de datos diversa.
Lenguajes de explotación
Se le denomina de esta forma a los lenguajes que permiten manipular los datos contenidos en las bases de datos, es decir, realizar consultas, insertar, borrar y modificar datos. En ingles Data Manipulation Language (DML).
Existen 2 tipos de lenguajes de explotación o manipulación:
* Lenguajes procedurales: En este tipo de lenguaje el usuario debe especificar que datos necesita y las operaciones relacionadas para obtenerlos. Las sentencias de los lenguajes procedurales deben estar embebidas en un lenguaje de alto nivel, ya que se necesitan sus estructuras (bucles, condicionales, etc.) para obtener y procesar cada registro individual. A este lenguaje se le denomina lenguaje anfitrión2. Son usados por bases de datos del tipo jerárquicas y de red
* Lenguajes no procedurales (o declarativos): Permiten al usuario especificar el tipo de manipulación de datos que desee por medio de una sentencia sencilla sin especificar cómo se debe acceder a ellos. La traducción de la sentencia es realizada por el Sistema Gestor de Base de Datos. Son usados por las bases de datos relacionales.
Algunos de los lenguajes más usados son:
* SQL (Structured Query Language): Fue creado por IBM en los años 70’s, está basado en el álgebra relacional y cuenta con algunas facilidades del cálculo relacional. Se creó para System R.
* QUEL (Query Language): Fue desarrollado en 1976 por M. Stonebraker para el Sistema de Base de Datos Ingres. Está basado en el cálculo relacional orientado a tuplas.
* QBE (Query by example): Se desarrolló por IBM en los años 70’s. Está basado en cálculo relacional orientado al dominio. Consiste en dar un ejemplo del tipo de tupla que se quiere.

Lenguajes de 4ta generación
Se les llama así a los lenguajes de programación que utilizan una sintaxis muy parecida al idioma inglés. Los lenguajes de 4ta generación son del tipo no procedural, es decir, el usuario define lo que se debe hacer y no el cómo.
Es interesante que a partir de la creación de estos lenguajes de programación, se cambie la manera en la que se compilan o interpretan estos lenguajes. Este proceso básicamente significa traducir de un lenguaje específico a otro lenguaje, en este caso de un lenguaje que entiende fácilmente un usuario programador, a un lenguaje comprendido por la computadora. Sin embargo, era común que la interpretación dependiera específicamente de la computadora a utilizar, en particular la arquitectura del procesador, y con el auge en evolución de procesadores y el dinamismo en el que surgían nuevos procesadores, la industria tuvo que partir de estándares y se crearon las maquinas virtuales. Así entonces cuando un programador compilaba su programa, lo hacía en una maquina virtual, la cual a su vez traducía al lenguaje propio de la computadora donde estuviera ejecutándose, independiente de la arquitectura del procesador. Y el programador solo se tenía que preocupar con algunas características básicas del procesador, como si su arquitectura es 32 bits o 64 bits. Independiente del fabricante. En la industria surgieron dos maquinas virtuales principales, .NET CLR la desarrollada por Microsoft para arquitectura Windows principalmente, y Java Virtual Machine desarrollada por SUN y otros para ejecutarse abiertamente en diferentes arquitecturas, incluso en arquitectura abierta o libre.
Otra característica interesante de los manejadores actuales de bases de datos es que pueden utilizar y compilar subconjuntos de instrucciones para estas maquinas virtuales, como es el caso del lenguaje Java en el mismo manejador Oracle, o CLR (common language runtime) del .NET para SQL Server, para ejecutar instrucciones C# o VB en el manejador de BD de Microsoft.
Y por último, en la arquitectura de aplicaciones actualmente se incluye una capa de abstracción para manipular y explotar la información de una base de datos, independiente de la aplicación y su arquitectura. Esta capa se conoce como capa de Acceso a Datos, en ella se definen instrucciones en los lenguajes actuales de programación propios del aplicativo a utilizar, y permite integrar instrucciones o elementos del modelo relacional para su manipulación directa en la base de datos. Esta capa ha evolucionado en base a los nuevos lenguajes, anteriormente se utilizaban RPC (llamadas remotas a procedimientos), luego se utilizaron lenguajes orientados a objetos (ODBC’s, JDBC, ADO.NET), luego se utilizaron sentencias que pudieran manipular información estructura en XML, incluso algunos manejadores como Oracle o SQL Server permiten exponer funciones para explotar su información en formato XML, y accesarla vía Servicios XML Web. Actualmente en esta evolución de capas de acceso a datos, se están utilizando modelos de datos directamente integrados en las aplicaciones, utilizando componentes que generan el código a utilizar de manera automatizada, lo cual permite a los programadores basarse en el modelo relacional para integrarlo en su aplicación directamente, algunos ejemplos (Java Hibernate o  ADO.NET Entity Framework).

No hay comentarios:

Publicar un comentario