lunes, 25 de febrero de 2013

sistema gestor de base de datos (SGBD)


Base de datos relacional
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". Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos.1
Diagrama Empleado.jpeg

Elementos

Relaciones base y derivadas

En una base de datos relacional, todos los datos se almacenan y se accede a ellos por medio de relaciones. Las relaciones que almacenan datos son llamadas "relaciones base" y su implementación es llamada "tabla". Otras relaciones no almacenan datos, pero son calculadas al aplicar operaciones relacionales. Estas relaciones son llamadas "relaciones derivadas" y su implementación es llamada "vista" o "consulta". Las relaciones derivadas son convenientes ya que expresan información de varias relaciones actuando como si fuera una sola.

Restricciones

Una restricción es una limitación que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional. Algunas otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10.
Las restricciones proveen un método de implementar reglas en la base de datos. Las restricciones limitan los datos que pueden ser almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos satisfacen la restricción o no.
Las restricciones no son parte formal del modelo relacional, pero son incluidas porque juegan el rol de organizar mejor los datos. Las restricciones son muy discutidas junto con los conceptos relacionales.

Dominios

Un dominio describe un conjunto de posibles valores para cierto atributo. Como un dominio restringe los valores del atributo, puede ser considerado como una restricción. Matemáticamente, atribuir un dominio a un atributo significa "todos los valores de este atributo deben de ser elementos del conjunto especificado".
Distintos tipos de dominios son: enteros, cadenas de texto, fecha,no procedurales etc.

Clave única

Cada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, es decir, no pueden existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos. Este conjunto de campos se llama clave única.
Pueden existir varias claves únicas en una determinada tabla, y a cada una de éstas suele llamársele candidata a clave primaria.

Clave primaria

Una clave primaria es una clave única elegida entre todas las candidatas que define unívocamente a todos los demás atributos de la tabla, para especificar los datos que serán relacionados con las demás tablas. La forma de hacer esto es por medio de claves foráneas.
Sólo puede existir una clave primaria por tabla y ningún campo de dicha clave puede contener valores NULL.

Clave foránea

Una clave foránea es una referencia a una clave en otra tabla, determina la relación existente en dos tablas. Las claves foráneas no necesitan ser claves únicas en la tabla donde están y sí a donde están referenciadas.
Por ejemplo, el código de departamento puede ser una clave foránea en la tabla de empleados. Se permite que haya varios empleados en un mismo departamento, pero habrá uno y sólo un departamento por cada clave distinta de departamento en la tabla de empleados.

Clave índice

Las claves índice surgen con la necesidad de tener un acceso más rápido a los datos. Los índices pueden ser creados con cualquier combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de forma no secuencial usando la clave índice.
Las bases de datos relacionales incluyen múltiples técnicas de ordenamiento, cada una de ellas es óptima para cierta distribución de datos y tamaño de la relación.
Los índices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, las claves índices son desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos.

Procedimientos almacenados

Un procedimiento almacenado es código ejecutable que se asocia y se almacena con la base de datos. Los procedimientos almacenados usualmente recogen y personalizan operaciones comunes, como insertar un registro dentro de una tabla, recopilar información estadística, o encapsular cálculos complejos. Son frecuentemente usados por un API por seguridad o simplicidad.
Los procedimientos almacenados no son parte del modelo relacional, pero todas las implementaciones comerciales los incluyen.

Estructura

La base de datos se organiza en dos marcadas secciones; el esquema y los datos (o instancia).
El esquema es la definición de la estructura de la base de datos y principalmente almacena los siguientes datos:
·         El nombre de cada tabla
·         El nombre de cada columna
·         El tipo de dato de cada columna
·         La tabla a la que pertenece cada columna
Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización, el resultado de dicho proceso es un esquema que permite que la base de datos sea usada de manera óptima.
Los datos o instancia es el contenido de la base de datos en un momento dado. Es en sí, el contenido de todos los registros.

Sistema de gestión de bases de datos

Un Sistema de Gestión de Bases de Datos (SGBD) es un conjunto de programas que permiten el almacenamiento, modificación y extracción de la información en una base de datos, además de proporcionar herramientas para añadir, borrar modificar y analizar los datos. Los usuarios pueden acceder a la información usando herramientas específicas de interrogación y de generación de informes, o bien mediante aplicaciones al efecto.
Los SGBD también proporcionan métodos para mantener la integridad de los datos, para administrar el acceso de usuarios a los datos y recuperar la información si el sistema se corrompe. Permite presentar la información de la base de datos en variados formatos. La mayoría de los SGBD incluyen un generador de informes. También puede incluir un módulo gráfico que permita presentar la información con gráficos y tartas.
Hay muchos tipos de SGBD distintos según manejen los datos y muchos tamaños distintos según funcionen sobre ordenadores personales y con poca memoria a grandes sistemas que funcionan en mainframes con sistemas de almacenamiento especiales.
Generalmente se accede a los datos mediante lenguajes de interrogación, lenguajes de alto nivel que simpifican la tarea de construir las aplicaciones. También simplifican la interrogación y la presentación de la información. Un SGDB permite controlar el acceso a los datos, asegurar su integridad, gestionar el acceso concurrente a ellos, recuperar los datos tras un fallo del sistema y hacer copias de seguridad. Las Bases de Datos y los sistemas para su gestión son esenciales para cualquier área de negocio, y deben ser gestionados con esmero.

Introducción

Las Bases de Datos generalmente funcionan en ordenadores dedicados. Por las prestaciones requeridas, generalmente funcionan en ordenadores multi-procesador con abundante memoria. Para el almacenaje de los datos puede contar con sistemas de disco propio (DAS), puede conectarse a una red de almacenamiento (SAN) o conectarse a un sistema de almacenamiento en red (NAS). Existen aceleradores hardware, usados en grandes sistema de proceso de transacciones. Los SGBD se encuentran en el corazón de toda aplicación que maneje datos. Los SGDB se basan en sistemas operativos estándar para efectuar dichas funciones.

Historia

Las Bases de Datos han estado en uso desde los primeros días de los ordenadores electrónicos. A diferencia de los sistemas modernos, que se pueden aplicar a datos y necesidades muy diferentes, la mayor parte de los sistemas originales estaban enfocados a bases de datos específicas y pensados para ganar velocidad a costa de perder flexibilidad. Los SGBD originales sólo estaban a disposición de las grandes organizaciones que podían disponer de los complejos ordenadores necesarios.

Sistemas de navegación de 1960

Según los ordenadores fueron ganando velocidad y capacidad, aparecieron sistemas e bases de datos de propósito general; a mediados de 1960 ya había algunos sistema en uso. Apareció el interés en obtener un estándar y Charles Bachman -autor de uno de los primeros productos, el Integrated Data Store (IDS)- fundó el "Database Task Group" dentro de CODASYL, el grupo responsable de la creación y estandarización de COBOL. En 1971 publicaron su estándar, que pasó a ser conocido como la "aproximación CODASYL", y en breve aparecieron algunos productos basados en esta línea.
La estrategia de CODASYL estaba basada en la navegación manual por un conjunto de datos enlazados en red. Cuando se arrancaba la base de datos, el programa devolvía un enlace al primer registro de la base de datos, el cual a su vez contenía punteros a otros datos. Para encontrar un registro concreto el programador debía ir siguiendo punteros hasta llegar al registro buscado.
Para responder a preguntas sencillas como "buscar todas las personas en Japón" el programa debía recorrer todos los datos para escoger los registros correctos. Esencialmente no existían los conceptos "buscar" ni "encontrar" que sería inaceptable hoy en día, pero que en los tiempos en que los datos se guardaban en cintas no era viable llevarlos a la práctica.
Se encontraron soluciones a muchos de esos problemas. El fabricante Prime creó un SGBD ajustado a CODASYL basado en árboles binarios que atajaba la navegación de registro en registro proveyendo caminos alternativos de acceso. También aportaba un lenguaje de interrogación muy claro. De hecho no hay razón para no poder aplicar los conceptos de normalización a bases de datos CODASYL, pero en último término CODASYL resultaba muy complejo y requería de mucho esfuerzo y práctica para producir una aplicación útil.
IBM también tenía su SGBD propio en 1968, conocido como IMS. Se trataba de un software desarrollado para el programa Apolo sobre System/360. IMS tenía conceptos similares a CODASYL, pero usaba una jerarquía estricta de ordenación de los datos, frente a la estructura en red de CODASYL. Ambos conceptos fueron englobados posterioremnte en el concepto de Bases de Datos de navegación debido al modo de acceso a los datos, de hecho Bachman recibió al premio Turing en 1973 por su ponencia "El programador como navegador"1 . De los SGBD primigenios, IMS está catalogado hoy en día como una base de datos jerárquica, mientras que IDMS y TOTAL se consideran bases de datos en red.

Niveles de un sgbd

·         1. Niveles de un sgbdEn 1975, el comité ANSI-SPARC (American National Standard Institute -StandardsPlanning and RequirementsCommittee) propuso una arquitectura de tresniveles para los SGBD cuyo objetivo principal era el de separar los programas deaplicación de la BD física. En esta arquitectura el esquema de una BD se define en tresniveles de abstracción distintos:- Nivel interno o físico: el más cercano al almacenamiento físico, es decir, tal y comoestán almacenados en el ordenador. Describe la estructura física de la BD mediante unesquema interno. Este esquema se especifica con un modelo físico y describe los detallesde cómo se almacenan físicamente los datos: los archivos que contienen la información,su organización, los métodos de acceso a los registros, los tipos de registros, la longitud,los campos que los componen, etcétera.- Nivel externo o de visión: es el más cercano a los usuarios, es decir, es donde sedescriben varios esquemas externos o vistas de usuarios. Cada esquema describe laparte de la BD que interesa a un grupo de usuarios en este nivel se representa la visiónindividual de un usuario o de un grupo de usuarios.- Nivel conceptual: describe la estructura de toda la BD para un grupo de usuariosmediante un esquema conceptual. Este esquema describe las entidades, atributos,relaciones, operaciones de los usuarios y restricciones, ocultando los detalles de lasestructuras físicas de almacenamiento. Representa la información contenida en la BD.Tipos de sgbd Clasificación de los SGBDEsta clasificación está basada en el modelo de datos en que está basado el SGBD. Los modelos de datosmás habituales son:* Relacional (SGBDR): representa a la base de datos como una colección de tablas. Estas bases de datossuelen utilizar SQL como lenguaje de consultas de alto nivel.* Orientado a objetos: define a la base de datos en términos de objetos, sus propiedades y sus operaciones.Todos los objetos que tienen la misma estructura y comportamiento pertenecen a una clase y las clases de
·         2. organizan en jerarquías.* Objeto-relacional o relacional extendido: son los sistemas relacionales con características de los orientado aobjetos.* Jerárquico: representa los datos como estructuras jerárquicas de árbol.* En red o CODASYL DBTG.Un SGBD también puede clasificarse por el número de usuario a los que da servicio:* Monousuario* MultiusuarioTambién puede clasificarse según el número de sitios en los que está distribuida la base de datos:* Centralizado: la base de datos y el software SGBD están almacenados en un solo sitio (una solacomputadora).* Distribuido (SGBDD): la base de datos y el software SGBD pueden estar distribuidos en múltiples sitiosconectados por una red.Breve historia de los SGBDREl modelo relacional fue presentado en la década del 70, y a partir de ese momento comenzaron adesarrollarse múltiples sistemas para gestionar las bases de datos relacionales. IBM fue una de las pionerasen el desarrollo de productos comerciales sobre SGBD relacionales; algunos de sus productos fueron elSQL/DS para los entornos DOS/VSE y VM/CMS, y el DB2 para el sistema operativo MVS en 1983.En tanto, INGRES fue otro SGBDR desarrollado por la Universidad de Berkeley a principios de los setenta.Luego se convirtió en comercial y comenzó a ser distribuido por Ingres Inc. y luego por ComputerAssociates.Otras marcas comerciales de SGBDR son Oracle de Oracle Inc., Sybase de Sybase Inc., RDB de DigitalEquipment Corp. de Compaq, INFORMIX de Informix Inc. y UNIFY de Unify Inc.Además de los SGBDR mencionados, en los ochenta aparecen múltiples aplicaciones para PCs como serRIM, RBASE 5000, PARADOX, OS/2 Database Manager, DBase IV, XDB, WAT-COM SQL, SQLServer (deSybase Inc.), SQL Server (de Microsoft), Access, etc.Modelo entidad-relación
·         3. Ejemplo de diagrama E-R.Un diagrama o modelo entidad-relación (a veces denominado por su siglas, E-R "Entityrelationship", o, "DER" Diagrama de Entidad Relación) es una herramienta parael modelado de datos de un sistema de información. Estos modelos expresan entidades relevantespara un sistema de información así como sus interrelaciones y propiedades. Contenido [ocultar]1 Modelado Entidad-Relación2 Base Teórica y Conceptual o 2.1 Entidad o 2.2 Conjunto de entidades o 2.3 Atributos o 2.4 Relación o 2.5 Conjunto de relaciones3 Restricciones o 3.1 Correspondencia de cardinalidades o 3.2 Restricciones de participación4 Claves5 Diagrama entidad-relación o 5.1 Entidad o 5.2 Atributo o 5.3 Relaciones6 Diagramas extendidos o 6.1 Entidades fuertes y débiles
·         Transformación de relaciones múltiples en binarias.§4. o 6.2 Cardinalidad de las relaciones o 6.3 Atributos en relaciones o 6.4 Herencia o 6.5 Agregación7 Véase tambiénModelado Entidad-Relación [editar]El Modelo Entidad-Relación, también conocido como DER (diagramas entidad-relación) es unaherramienta de modelado para bases de datos, propuesto por Peter Chen en 1976, mediante elcual se pretende visualizar los objetos que pertenecen a la Base de Datos como entidades (secorresponde al concepto de clase, cada tupla representaría un objeto, de la ProgramaciónOrientada a Objetos) las cuales tienen unos atributos y se vinculan mediante relaciones.Es una representación conceptual de la información. Mediante una serie de procedimientos sepuede pasar del modelo E-R a otros, como por ejemplo el modelo relacional.El modelado entidad-relación es una técnica para el modelado de datos utilizando diagramasentidad relación. No es la única técnica pero sí la más utilizada. Brevemente consiste en lossiguientes pasos: 1. Se parte de una descripción textual del problema o sistema de información a automatizar (los requisitos). 2. Se hace una lista de los sustantivos y verbos que aparecen. 3. Los sustantivos son posibles entidades o atributos. 4. Los verbos son posibles relaciones. 5. Analizando las frases se determina la cardinalidad de las relaciones y otros detalles. 6. Se elabora el diagrama (o diagramas) entidad-relación. 7. Se completa el modelo con listas de atributos y una descripción de otras restricciones que no se pueden reflejar en el diagrama.Dado lo rudimentario de esta técnica se necesita cierto entrenamiento y experiencia para lograrbuenos modelos de datos.El modelado de datos no acaba con el uso de esta técnica. Son necesarias otras técnicas paralograr un modelo directamente implementable en una base de datos. Brevemente:
·         Todos los países del mundo, comparten las características: nombre, continente, área, lengua principal, lengua secundaria, moneda, etc.Atributos [editar]Los atributos son las propiedades que describen a cada entidad en un conjunto de entidades.§ Todos los atletas que participan en los Juegos Olímpicos, comparten sus atributos: nombre, número de identificación, edad, peso, categoría...§ Una casa (Aunque sea exactamente igual a otra, aún se diferenciará en su dirección).Una entidad puede ser un objeto con existencia física como: una persona, un animal, una casa,etc. (entidad concreta), o un objeto con existencia conceptual como: un puesto de trabajo, unaasignatura de clases, un nombre,etc. (entidad abstracta).Una entidad está descrita y se representa por sus características o atributos. Por ejemplo, laentidad Persona puede llevar consigo las características: Nombre, Apellido, Género, Estatura,Peso, Fecha de nacimiento, etc...Conjunto de entidades [editar]Es una colección de entidades que comparten los mismos atributos o características.Ejemplos: Un automóvil. (Aunque sean de la misma marca, el mismo modelo,..., tendrán atributos diferentes, por ejemplo, el número de bastidor).§ Una persona. (Se diferencia de cualquier otra persona, incluso siendo gemelos).§ Conversión en tablas (en caso de utilizar una base de datos relacional).Base Teórica y Conceptual [editar]El modelo entidad-relación se basa en los conceptos descritos a continuación para representar unmodelo de la vida real.Entidad [editar]Representa una “cosa” u "objeto" del mundo real con existencia independiente, es decir, sediferencia unívocamente de cualquier otro objeto o cosa, incluso siendo del mismo tipo, o unamisma entidad.Algunos Ejemplos:§ Normalización de una base de datos de relaciones (algunas relaciones pueden transformarse en atributos y viceversa).§5.
·         ...Cada una de las entidades pertenecientes a este conjunto se diferencia de las demás por el valorde sus atributos. Nótese que dos o más entidades diferentes pueden tener los mismos valores paraalgunos de sus atributos, pero nunca para todos.En particular, los atributos identificativos son aquellos que permiten diferenciar a una instanciade la entidad de otra distinta. Por ejemplo, el atributo identificativo que distingue a un alumno deotro es su número de id.Para cada atributo, existe un dominio del mismo, este hace referencia al tipo de datos que seráalmacenado o a restricciones en los valores que el atributo puede tomar (Cadenas de caracteres,números, solo dos letras, solo números mayores que cero, solo números enteros...).Cuando una entidad no tiene un valor para un atributo dado, este toma el valor nulo, bien sea queno se conoce, que no existe o que no se sabe nada al respecto del mismo.Relación [editar]Describe cierta dependencia entre entidades o permite la asociación de las mismas.Ejemplo:Dadas dos entidades "Habitación 502" y "Mark", es posible relacionar quelahabitacion 502 se encuentra ocupada por el huésped de nombre Mark.Una relación tiene sentido al expresar las entidades que relaciona. En el ejemplo anterior, UnHuésped (entidad), se aloja (relación) en una habitación (entidad).Conjunto de relaciones [editar]§ (3, Gabriela, 20 años, 2)§ (2, Josefa, 19 años, 5)§ (1, Sofia, 18 años, 2)§6. Un conjunto de entidades dentro de una entidad, tiene valores específicos asignados para cadauno de sus atributos, de esta forma, es posible su identificación unívoca.Ejemplos:A la colección de entidades Alumnos, con el siguiente conjunto de atributos en común, (id, nombre,edad, semestre), pertenecen las entidades:
·         Total: Cuando cada entidad en A participa en al menos una relación de R.§ Varios a varios: Una entidad en A se puede relacionar con 0 o muchas entidades en B y viceversa.Restricciones de participación [editar]Dado un conjunto de relaciones R en el cual participa un conjunto de entidades A, dichaparticipación puede ser de dos tipos:§ Varios a uno: Una entidad en A se relaciona exclusivamente con una entidad en B. Pero una entidad en B se puede relacionar con 0 o muchas entidades en A.§ Uno a varios: Una entidad en A se relaciona con cero o muchas entidades en B. Pero una entidad en B se relaciona con una única entidad en A.§ Uno a uno: Una entidad de A se relaciona únicamente con una entidad en B y viceversa.§7. Consiste en una colección, o conjunto, de relaciones de la misma naturaleza.Ejemplo:Dados los conjuntos de entidades "Habitación" y "Huésped", todas las relaciones de la formahabitación-huésped, permiten obtener la información de los huéspedes y sus respectivashabitaciones.La dependencia o asociación entre los conjuntos de entidades es llamada participación. En elejemplo anterior los conjuntos de entidades "Habitación" y "Huésped" participan en el conjunto derelaciones habitación-huésped.Se llama grado del conjunto de relaciones a la cantidad de conjuntos de entidades participantes enla relación.Restricciones [editar]Son reglas que deben mantener los datos almacenados en la base de datos.Correspondencia de cardinalidades [editar]Dado un conjunto de relaciones en el que participan dos o más conjuntos de entidades, lacorrespondencia de cardinalidad indica el número de entidades con las que puede estarrelacionada una entidad dada.Dado un conjunto de relaciones binarias y los conjuntos de entidades A y B, la correspondencia decardinalidades puede ser:
·         R es de uno a uno de A a B entonces se toma cualquiera de las dos claves primarias, como clave primaria de R.§ R es de uno a muchos de A a B entonces se toma sólo la clave primaria de B, como clave primaria de R.§ R es de muchos a uno de A a B entonces sólo se toma la clave primaria de A, como clave primaria de R.§ R tiene atributos asociados: En este caso, se usa como clave primaria de R la unión de los atributos asociados y las claves primarias de todos los conjuntos de entidades participantes.Si el conjunto de relaciones, R, sobre las que se pretende determinar la clave primaria estácompuesto de relaciones binarias, con los conjuntos de entidades participantes A y B, seconsideran los siguientes casos, según sus cardinalidades:§ R NO tiene atributos asociados: En este caso, se usa como clave primaria de R la unión de las claves primarias de todos los conjuntos de entidades participantes.§ Clave primaria: Es una clave candidata, elegida por el diseñador de la base de datos, para identificar unívocamente las entidades en un conjunto de entidades.Los valores de los atributos de una clave, no pueden ser todos iguales para dos o más entidades.Para poder distinguir unívocamente las relaciones en un conjunto de relaciones R, se debenconsiderar dos casos:§ Clave candidata: Dada una superclave, si ésta deja de serlo quitando únicamente uno de los atributos que la componen, entonces ésta es una clave candidata.§ Superclave: Es un subconjunto de atributos que permite distinguir unívocamente cada una de las entidades de un conjunto de entidades. Si se añade un atributo al anterior subconjunto, el resultado seguirá siendo una superclave.§ Parcial: Cuando al menos una entidad en A NO participa en alguna relación de R.Claves [editar]Es un subconjunto del conjunto de atributos comunes en una colección de entidades, que permiteidentificar unívocamente cada una de las entidades pertenecientes a dicha colección. Asimismo,permiten distinguir entre sí las relaciones de un conjunto de relaciones.Dentro de los conjuntos de entidades existen los siguientes tipos de claves:§8.
·         R es de muchos a muchos de A a B entonces se toma la unión de los atributos que conforman las claves primarias de A y de B, como clave primaria de R.Diagrama entidad-relación [editar]Formalmente, los diagramas E-R son un lenguaje gráfico para describir conceptos. Informalmente,son simples dibujos o gráficos que describen la información que trata un sis§9. tema de información yel software que lo automatiza.Entidad [editar]Se representa mediante un rectángulo o "caja" etiquetada en su interior mediante un identificador.Ejemplos de entidades habituales en los sistemas de información son: factura, persona, empleado,etc.Atributo [editar]Se representan mediante un círculo o elipse etiquetado mediante un nombre en su interior. Cuandoun atributo es identificativo de la entidad se suele subrayar dicha etiqueta.Relaciones [editar]Se representa mediante un rombo etiquetado en su interior con un verbo. Este rombo se debe unirmediante líneas con las entidades (rectángulos) que relaciona.Por motivos de legibilidad, los atributos no suelen representarse en un diagrama entidad-relación,sino que se describen textualmente en otros documentos adjuntos.Diagramas extendidos [editar]DER extendidoLos diagramas Entidad-Relación no cumplen su propósito con eficacia debido a que tienenlimitaciones semánticas. Por ese motivo se suelen utilizar los diagramas Entidad-Relaciónextendidos que incorporan algunos elementos más al lenguaje:
·         Un cliente (entidad) puede comprar (relación) varios artículos (entidad) y un artículo puede ser comprado por varios clientes distintos. Es una relación N:M.Atributos en relaciones [editar]Las relaciones también pueden tener atributos asociados. Se representan igual que los atributos delas entidades. Un ejemplo típico son las relaciones de tipo "histórico" donde debe constar unafecha o una hora. Por ejemplo, supongamos que es necesario hacer constar la fecha de emisiónde una factura a un cliente, y que es posible emitir duplicados de la factura (con distinta fecha). Ental caso, el atributo "Fecha de emisión" de la factura debería colocarse en la relación "se emite".§ Una factura (entidad) se emite (relación) a una persona (entidad) y sólo una, pero una persona puede tener varias facturas emitidas a su nombre. Todas las facturas se emiten a nombre de alguien. Es una relación 1:N.§ Cada esposo (entidad) está casado (relación) con una única esposa (entidad) y viceversa. Es una relación 1:1.§ "N" , "M", ó "*" si cada instancia de la entidad no está obligada a participar en la relación y puede hacerlo cualquier número de veces.Ejemplos de relaciones que expresan cardinalidad:§ "1" si toda instancia de la entidad está obligada a participar en la relación y, además, solamente participa una vez.§ "0" si cada instancia de la entidad no está obligada a participar en la relación.§10. Entidades fuertes y débiles [editar]Cuando una entidad participa en una relación puede adquirir un papel fuerte o débil. Una entidaddébil es aquella que no puede existir sin participar en la relación, es decir, aquella que no puedeser unívocamente identificada solamente por sus atributos. Una entidad fuerte (también conocidacomo entidad regular) es aquella que sí puede ser identificada unívocamente. En los casos en quese requiera, se puede dar que una entidad fuerte "preste" algunos de sus atributos a una entidaddébil para que, esta última, se pueda identificar.Las entidades débiles se representan- mediante un doble rectángulo, es decir, un rectángulo condoble línea.Cardinalidad de las relaciones [editar]El tipo de cardinalidad se representa mediante una etiqueta en el exterior de la relación,respectivamente: "1:1", "1:N" y "N:M", aunque la notación depende del lenguaje utilizado, la quemás se usa actualmente es el unificado. Otra forma de expresar la cardinalidad es situando unsímbolo cerca de la línea que conecta una entidad con una relación:
·         11. Herencia La herencia es un intento de adaptación de estos diagramas al paradigma orientado a objetos. La herencia es un tipo de relación entre una entidad "padre" y una entidad "hijo". La entidad "hijo" hereda todos los atributos y relaciones de la entidad "padre". Por tanto, no necesitan ser representadas dos veces en el diagrama. La relación de herencia se representa mediante un triángulo interconectado por líneas a las entidades. La entidad conectada por el vértice superior del triángulo es la entidad "padre". Solamente puede existir una entidad "padre" (herencia simple). Las entidades "hijo" se conectan por la base del triángulo. Agregación [editar] Ejemplo agregación Es una abstracción a través de la cual las relaciones se tratan como entidades de un nivel más alto. Se utiliza para expresar relaciones entre relaciones o entre entidades y relaciones. Se representa englobando la relación abstraída y las entidades que participan en ella en un rectángulo. En la figura se muestra un ejemplo de agregación en el que se representa la situación en la que un profesor, cuando está impartiendo una clase, puede poner una incidencia ocurrida a lo largo de ésta (se fue la luz, falta la configuración de un determinado software, etc.). Modelo Relacional - PresentationTranscript1. BASE DE DATOS (IV) Prof. Omar A. Rivera Zarate Instituto Superior Tecnológico Público “OXAPAMPA”2. MODELO RELACIONAL3. MODELO RELACIONAL o Edgar Frank Codd a finales definió las bases del modelo relacional a finales de los 60.Trabajaba para IBM empresa que tardó un poco en implementar sus bases. Pocos años después el modelo se empezó a implementar cada vez más, hasta ser el modelo de bases de datos más popular.4. OBJETIVOS DEL MODELO
·         12. o Independencia física . La forma de almacenar los datos, no debe influir en su manipulación lógica o Independencia lógica . Las aplicaciones que utilizan la base de datos no deben ser modificadas por que se modifiquen elementos de la base de datos. o Flexibilidad . La base de datos ofrece fácilmente distintas vistas en función de los usuarios y aplicaciones. o Uniformidad . Las estructuras lógicas siempre tienen una única forma conceptual (las tablas) o Sencillez .5. EVOLUCION DEL MODELO o Año Hecho o 1970 Codd publica las bases del modelo relacional o 1971-72 Primeros desarrollos teóricos o 1973-78 Primeros prototipos o 1978 Aparece el lenguaje QBE o 1979 Aparece Oracle o 1980 Aparece Ingres o 1981 Aparece SQL o 1982 Aparece DB2 o 1986 ANSI normaliza el SQL (SQL/ANSI) o 1987 SQL de ISO o 1990 Versión dos del modelo relacional (RM/V2) o 1992 SQL 92 o 1998 SQL 36. TABLAS o Las bases de datos relacionales se basan en el uso de tablas (también se las llama relaciones ). Las tablas se representan gráficamente como una estructura rectangular formada por filas y columnas. Cada columna almacena información sobre una propiedad determinada de la tabla (se le llama también atributo ), nombre, dni, apellidos, edad,.... Cada fila posee una ocurrencia o ejemplar de la instancia o relación representada por la tabla (a las filas se las llama también tuplas ).7. TABLAS8. TERMINOLOGIA RELACIONAL o Tupla. Cada fila de la tabla (cada ejemplar que la tabla representa) o Atributo. Cada columna de la tabla
·         Instantáneas . Son vistas (creadas de la misma forma) que sí que almacenan los datos que muestra, además de la consulta que dio lugar a esa vista. Sólo modifican su resultado (actualizan los datos) siendo refrescadas por el sistema cada cierto tiempo. o Temporales . Son tablas que se eliminan automáticamente por el sistema. Pueden ser de cualquiera de los tipos anterior.10. DOMINIOS o Los dominios suponen una gran mejora en este modelo ya que permiten especificar los posibles valores válidos para un atributo. Cada§ Vistas . Son tablas que sólo almacenan una definición de consulta, resultado de la cual se produce una tabla cuyos datos proceden de las bases o de otras vistas e instantáneas. Si los datos de las tablas base cambian, los de la vista que utiliza esos datos también cambia. § Base . Independientes, se crean indicando su estructura y sus ejemplares. §13. o Grado. Número de atributos de la tabla o Cardinalidad. Número de tuplas de una tabla o Dominio . Conjunto válido de valores representables por un atributo.9. TIPOS DE TABLAS o Persistentes. Sólo pueden ser borradas por los usuarios:  dominio incorpora su nombre y una definición del mismo. o Ejemplos de dominio: o Dirección: 50 caracteres o Nacionalidad: Español, Francés, Italiano,... o Los dominios pueden ser también compuestos a partir de otros (año, mes y día = fecha)11. CLAVES o Clave candidata o Conjunto de atributos de una tabla que identifican unívocamente cada tupla de la tabla. o Clave primaria o Clave candidata que se escoge como identificador de las tuplas. o Clave alternativa o Cualquier clave candidata que no sea primaria o Clave externa o secundaria o Atributo de una tabla relacionado con una clave de otra tabla.12. VALORES NULOS
·         14. o Los valores nulos indican contenidos de atributos que no tienen ningún valor. En claves secundarias indican que el registro actual no está relacionado con ninguno. En otros atributos indica que no se puede rellenar ese valor por la razón que sea. o Las bases de datos relacionales admiten utilizar ese valor en todo tipo de operaciones. Eso significa definir un tercer valor en la lógica. Además de el valor verdadero o falso, existe el valor para los nulos.13. LOGICA DEL VALOR NULO o verdadero Y (AND) nulo da como resultado, nulo o falso Y (AND) nulo da como resultado, falso o verdadero O (OR) nulo da como resultado, verdadero o falso O nulo da como resultado nulo o la negación de nulo, da como resultado nulo14. RESTRICCIONES o Se trata de unas condiciones de obligado cumplimiento por los datos de la base de datos. o Las hay de varios tipos. o Inherentes o Semánticas15. RESTRICCIONES INHERENTES o Son aquellas que no son determinadas por los usuarios, sino que son definidas por el hecho de que la base de datos sea relacional. o Por ejemplo: o No puede haber dos tuplas iguales o El orden de las tuplas no importa o El orden de los atributos no importa o Cada atributo sólo puede tomar un valor en el dominio en el que está inscrito16. RESTRICCIONES SEMANTICAS o El modelo relacional permite a los usuario incorporar restricciones personales a los datos. Las principales son: o Clave primaria . Hace que los atributos marcados como clave primaria no puedan repetir valores. o Unicidad . Impide que los valores de los atributos marcados de esa forma, puedan repetirse. o Obligatoriedad . Prohíbe que el atributo marcado de esta forma no tenga ningún valor o Integridad referencial . Prohíbe colocar valores en una clave externa que no estén reflejados en la tabla donde ese atributo es clave primaria.
·         15. o Regla de validación. Condición que debe de cumplir un dato concreto para que sea actualizado.17. LAS 12 REGLAS DE CODD o Preocupado por los productos que decían ser sistemas gestores de bases de datos relacionales (RDBMS) sin serlo, Codd publica las 12 reglas que debe cumplir todo DBMS para ser considerado relacional. Estas reglas en la práctica las cumplen pocos sistemas relacionales.18. LAS 12 REGLAS DE CODD o 1. Información . Toda la información de la base de datos debe estar representada explícitamente en el esquema lógico. Es decir, todos los datos están en las tablas. o 2. Acceso garantizado . Todo dato es accesible sabiendo el valor de su clave y el nombre de la columna o atributo que contiene el dato. o 3. Tratamiento sistemático de los valores nulos . El DBMS debe permitir el tratamiento adecuado de estos valores. o 4. Catálogo en línea basado en el modelo relacional. Los metadatos deben de ser accesibles usando un esquema relacional.19. LAS 12 REGLAS DE CODD o 5. Sublenguaje de datos completo . Al menos debe de existir un lenguaje que permita el manejo completo de la base de datos. Este lenguaje, por lo tanto, debe permitir realizar cualquier operación. o 6. Actualización de vistas. El DBMS debe encargarse de que las vistas muestren la última información o 7. Inserciones, modificaciones y eliminaciones de dato nivel. Cualquier operación de modificación debe actuar sobre conjuntos de filas, nunca deben actuar registro a registro. o 8. Independencia física. Los datos deben de ser accesibles desde la lógica de la base de datos aún cuando se modifique el almacenamiento.20. LAS 12 REGLAS DE CODD o 9. Independencia lógica. Los programas no deben verse afectados por cambios en las tablas o 10.Independencia de integridad. Las reglas de integridad deben almacenarse en la base de datos (en el diccionario de datos), no en los programas de aplicación. o 11.Independencia de la distribución. El sublenguaje de datos debe permitir que sus instrucciones funciones igualmente en una base de datos distribuida que en una que no lo es. o 12.No subversión . Si el DBMS posee un lenguaje que permite el recorrido registro a registro, éste no puede utilizarse para incumplir las reglas relacionales.21. PASO DEL ESQUEMA E/R AL MODELO RELACIONAL o TRANSFORMACION DE ENTIDADES FUERTES o En principio las entidades fuertes del modelo. Entidad Relación son transformados al modelo relacional siguiendo estas instrucciones: o Entidades. Las entidades pasan a ser tablas
·         16. o Atributos . Los atributos pasan a ser columnas. o Identificadores principales . Pasan a ser claves primarias o Identificadores candidatos . Pasan a ser claves candidatas.22. PASO DEL ESQUEMA E/R AL MODELO RELACIONAL23. TRANSFORMACION DE RELACIONES o RELACION VARIOS A VARIOS o En las relaciones varios a varios, la relación se transforma en una tabla cuyos atributos son: los atributos de la relación y las claves de las entidades relacionadas (que pasarán a ser claves externas). La clave de la tabla la forman todas las claves externas:24. TRANSFORMACION DE RELACIONES o RELACION VARIOS A VARIOS25. TRANSFORMACION DE RELACIONES o RELACIONES DE ORDEN N o Las relaciones ternarias, cuaternarias y n-arias que unen más de dos relaciones se transforman en una tabla que contiene los atributos de la relación más los identificadores de las entidades relacionadas. La clave la forman todas las claves externas:26. TRANSFORMACION DE RELACIONES o RELACIONES DE ORDEN N27. TRANSFORMACION DE RELACIONES o RELACIONES DE UNO A VARIOS Y DE UNO A UNO o Las relaciones binarios de tipo uno a varios no requieren ser transformadas en una tabla en el modelo relacional. En su lugar la tabla del lado varios ( tabla relacionada) incluye como clave externa1 el identificador de la entidad del lado uno ( tabla principal ):28. TRANSFORMACION DE RELACIONES o RELACIONES DE UNO A VARIOS Y DE UNO A UNO29. TRANSFORMACION DE RELACIONES o Así en el dibujo, el identificador2 en la tabla E ntidad1 pasa a ser una clave externa. En el caso de que el número mínimo de la relación sea de cero (puede haber ejemplares de la entidad uno sin relacionar), se deberá permitir valores nulos en la clave externa. Así en el dibujo, el identificador2 en la tabla E ntidad1 pasa a ser una clave externa. En el caso de que el número mínimo de la relación sea de cero (puede haber ejemplares de la entidad uno sin relacionar), se deberá permitir valores nulos en la clave externa30. TRANSFORMACION DE RELACIONES o RELACIONES RECURSIVAS
·         17. o Las relaciones recursivas se tratan de la misma forma que las otras, sólo que un mismo atributo puede figurar dos veces en una tabla como resultado de la transformación:31. TRANSFORMACION DE RELACIONES o RELACIONES RECURSIVAS32. TRANSFORMACION DE RELACIONES o RELACIONES RECURSIVAS33. TRANSFORMACION DE RELACIONES o ENTIDADES DEBILES o Toda entidad débil incorpora una relación implícita con una entidad fuerte. Esta relación no necesita incorporarse como tabla en el modelo relacional. Sí se necesita incorporar la clave de la entidad fuerte como clave externa en la entidad débil. Es más, normalmente esa clave externa forma parte de la clave principal de la tabla que representa a la entidad débil.34. TRANSFORMACION DE RELACIONES o ENTIDADES DEBILES35. TRANSFORMACION DE RELACIONES o ENTIDADES DEBILES o En ocasiones el identificador de la entidad débil es suficiente para identificar los ejemplares de dicha entidad, entonces ese identificador quedaría como clave principal, pero el identificador de la entidad fuerte seguiría figurando como clave externa en la entidad débil.
Herramienta de Gestión de Base de Datos y Valores Históricos
Los datos generados por las estaciones de control son registrados de forma periódica en la base de datos del sistema.
Esta información está accesible desde el primer día de la instalación, además  la generación de informes a partir de los datos se puede preconfigurar y enviar a los responsables de forma automática.
Facilidades para la visualización de los datos históricos
  • Configuración personalizada de la información y los períodos.
  • Envío automático de informes según la periodicidad programada (diario, semanal, a una hora concreta, etc) y a través de los medios definidos por el cliente.
  • Múltiples formatos de visualización y descarga (MS Excel, MS Word, PDF, así como en formatos de estándares abiertos)
  • Personalización de los informes con la identidad corporativa del cliente (logotipo, formatos, etc.)
  • Presentación de los datos en tablas y gráficos.
Herramientas De Programacion


·          
Herramientas De Programación
Las herramientas de programación, son aquellas que permiten realizar aplicativos, programas, rutinas, utilitarios y sistemas para que la parte física del computador u ordenador, funcione y pueda producir resultados.Hoy día existen múltiples herramientas de programación en el mercado, tanto para analistas expertos como para analistas inexpertos.Las herramientas de programación más comunes del mercado, cuentan hoy día con programas de depuración o de bugger, que son utilitarios que nos permiten detectar los posibles errores en tiempo de ejecución o corrida de rutinas y programas. |
Entre otras herramientas de programación encontramos librerías y componentes, dados por algunos lenguajes de programación como son el C++ y delphi.
Otras herramientas de programación son los lenguajes de programación, que nos permiten crear rutinas, programas y utilitarios.
Entre algunas de estas herramientas de programación tenemos:
  * Basic y Pascal que son herramientas de programación, idóneas para la inicialización de los programadores.
  * C y C++ que sirven para la programación de sistemas.
  * Cobol, que es una herramienta de programación orientada hacia sistemas de gestión empresarial como nominas y contabilidad.
  * Fortran, que son lenguajes específicos para cálculos matemáticos y o numéricos.
  * Herramientas de programación para ambientes gráficos como son Visual Basic, Delphi y Visual C.
  * HTML y Java, que permiten la creación de páginas WEB para internet.
Interrupciones del PIC16F84
 Las interrupciones constituyen quizá el mecanismo más importante para la conexión del micro controlador con el mundo exterior, sincronizando la ejecución de programas con acontecimientos externos.
El funcionamiento de las interrupciones es similar al de las subrutinas de las cuales se diferencian principalmente en los procedimientos que las ponen en marcha. Así como las subrutinas se ejecutan cada vez que en el programa aparece una instrucción.
Lenguaje de un Sistema Gestor de Bases de Datos


Una vez finalizado el diseño de una base de datos y escogido un SGBD para su implementación, el primer paso consiste en especificar el esquema conceptual y el esquema interno de la base de datos, y la correspondencia entre ambos. En muchos SGBD no se mantiene una separación estricta de niveles, por lo que el administrador de la base de datos y los diseñadores utilizan el mismo lenguaje para definir ambos esquemas, es el lenguaje de definición de datos (LDD). El SGBD posee un compilador de LDD cuya función consiste en procesar las sentencias del lenguaje para identificar las descripciones de los distintos elementos de los esquemas y almacenar la descripción del esquema en el catálogo o diccionario de datos. Se dice que el diccionario contiene metadatos: describe los objetos de la base de datos.
Cuando en un SGBD hay una clara separación entre los niveles conceptual e interno, el LDD sólo sirve para especificar el esquema conceptual. Para especificar el esquema interno se utiliza un lenguaje de definición de almacenamiento (LDA).


Las correspondencias entre ambos esquemas se pueden especificar en cualquiera de los dos lenguajes. Para tener una verdadera arquitectura de tres niveles sería necesario disponer de un tercer lenguaje, el lenguaje de definición de vistas(LDV), que se utilizaría para especificar las vistas de los usuarios y su correspondencia con el esquema conceptual.
Lenguaje de manejo de datos


Una vez creados los esquemas de la base de datos, los usuarios necesitan un lenguaje que les permita manipular los datos de la base de datos: realizar consultas, inserciones, eliminaciones y modificaciones. Este lenguaje es el que se denominalenguaje de manejo de datos (LMD).

Hay dos tipos de LMD: los procedurales y los no procedurales. Con un LMD procedural el usuario (normalmente será un programador) especifica qué datos se necesitan y cómo hay que obtenerlos. Esto quiere decir que el usuario debe especificar todas las operaciones de acceso a datos llamando a los procedimientos necesarios para obtener la información requerida. Estos lenguajes acceden a un registro, lo procesan y basándose en los resultados obtenidos, acceden a otro registro, que también deben procesar. Así se va accediendo a registros y se van procesando hasta que se obtienen los datos deseados. Las sentencias de un LMD procedural 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ón. Las bases de datos jerárquicas y de red utilizan LMD procedurales.

Un LMD no procedural se puede utilizar de manera independiente para especificar operaciones complejas sobre la base de datos de forma concisa. En muchos SGBD se pueden introducir interactivamente instrucciones del LMD desde un terminal o bien embeberlas en un lenguaje de programación de alto nivel. Los LMD no procedurales permiten especificar los datos a obtener en una consulta o los datos que se deben actualizar, mediante una sola y sencilla sentencia. El usuario o programador especifica qué datos quiere obtener sin decir cómo se debe acceder a ellos. El SGBD traduce las sentencias del LMD en uno o varios procedimientos que manipulan los conjuntos de registros necesarios. Esto libera al usuario de tener que conocer cuál es la estructura física de los datos y qué algoritmos se deben utilizar para acceder a ellos. A los LMD no procedurales también se les denomina declarativos. Las bases de datos relacionales utilizan LMD no procedurales, como SQL (Structured Query Language) o QBE (Query-By-Example). Los lenguajes no procedurales son más fáciles de aprender y de usar que los procedurales, y el usuario debe realizar menos trabajo, siendo el SGBD quien hace la mayor parte.
La parte de los LMD no procedurales que realiza la obtención de datos es lo que se denomina un lenguaje de consultas. En general, las órdenes tanto de obtención como de actualización de datos de un LMD no procedural se pueden utilizar interactivamente, por lo que al conjunto completo de sentencias del LMD se le denomina lenguaje de consultas, aunque es técnicamente incorrecto.

Lenguajes de cuarta generación



No existe consenso sobre lo que es un lenguaje de cuarta generación (4GL). Lo que en un lenguaje de tercera generación (3GL) como COBOL requiere cientos de líneas de código, tan solo necesita diez o veinte líneas en un 4GL. Comparado con un 3GL, que es procedural, un 4GL es un lenguaje no procedural: el usuario define qué se debe hacer, no cómo debe hacerse. Los 4GL se apoyan en unas herramientas de mucho más alto nivel denominadas herramientas de cuarta generación. El usuario no debe definir los pasos a seguir en un programa para realizar una determinada tarea, tan sólo debe definir una serie de parámetros que estas herramientas utilizarán para generar un programa de aplicación. Se dice que los 4GL pueden mejorar la productividad de los programadores en un factor de 10, aunque se limita el tipo de problemas que pueden resolver. Los 4GL abarcan:

·         Lenguajes de presentación, como lenguajes de consultas y generadores de informes.
·         Lenguajes especializados, como hojas de cálculo y lenguajes de bases de datos.
·         Generadores de aplicaciones que definen, insertan, actualizan y obtienen datos de la base de datos.
·         Lenguajes de muy alto nivel que se utilizan para generar el código de la aplicación.

Los lenguajes SQL y QBE son ejemplos de 4GL. Hay otros tipos de 4GL:

·         Un generador de formularios es una herramienta interactiva que permite crear rápidamente formularios de pantalla para introducir o visualizar datos. Los generadores de formularios permiten que el usuario defina el aspecto de la pantalla, qué información se debe visualizar y en qué lugar de la pantalla debe visualizarse. Algunos generadores de formularios permiten la creación de atributos derivados utilizando operadores aritméticos y también permiten especificar controles para la validación de los datos de entrada.
·         Un generador de informes es una herramienta para crear informes a partir de los datos almacenados en la base de datos. Se parece a un lenguaje de consultas en que permite al usuario hacer preguntas sobre la base de datos y obtener información de ella para un informe. Sin embargo, en el generador de informes se tiene un mayor control sobre el aspecto de la salida. Se puede dejar que el generador determine automáticamente el aspecto de la salida o se puede diseñar ésta para que tenga el aspecto que desee el usuario final.
·         Un generador de gráficos es una herramienta para obtener datos de la base de datos y visualizarlos en un gráfico mostrando tendencias y relaciones entre datos. Normalmente se pueden diseñar distintos tipos de gráficos: barras, líneas, etc.
·         Un generador de aplicaciones es una herramienta para crear programas que hagan de interface entre el usuario y la base de datos. El uso de un generador de aplicaciones puede reducir el tiempo que se necesita para diseñar un programa de aplicación. Los generadores de aplicaciones constan de procedimientos que realizan las funciones fundamentales que se utilizan en la mayoría de los programas. Estos procedimientos están escritos en un lenguaje de programación de alto nivel y forman una librería de funciones entre las que escoger. El usuario especifica qué debe hacer el programa y el generador de aplicaciones es quien determina cómo realizar la tarea.

Arquitectura cliente servidor

·         2. En el mundo de TCP/IP las comunicaciones entre computadoras se rigen básicamente por lo que se llama modelo Cliente-Servidor, éste es un modelo que intenta proveer usabilidad, flexibilidad, interoperabilidad y escalabilidad en las comunicaciones.   El término Cliente/Servidor fue usado por primera vez en 1980 para referirse a PC’s en red. Este modelo Cliente/Servidor empezó a ser aceptado a finales de los 80’s. Su funcionamiento es sencillo: se tiene una máquina cliente, que requiere un servicio de una máquina servidor, y éste realiza la función para la que está programado (nótese que no tienen que tratarse de máquinas diferentes; es decir, una computadora por sí sola puede ser ambos cliente y servidor dependiendo del software de configuración).
·         3. Sistema distribuido entre múltiples procesadores donde hay clientes que solicitan servicios y servidores que los proporcionan. Separa los servicios situando cada uno en su plataforma más adecuada. Desde el punto de vista funcional, se puede definir la computación Cliente/Servidor como una arquitectura distribuida que permite a los usuarios finales obtener acceso a la información en forma transparente aún en entornos multiplataforma.   En el modelo cliente servidor, el cliente envía un mensaje solicitando un determinado servicio a un servidor (hace una petición), y este envía uno o varios mensajes con la respuesta (provee el servicio).
·         4. En un sistema distribuido cada máquina puede cumplir el rol de servidor para algunas tareas y el rol de cliente para otras. La idea es tratar a una computadora como un instrumento, que por sí sola pueda realizar muchas tareas, pero con la consideración de que realice aquellas que son mas adecuadas a sus características. Si esto se aplica tanto a clientes como servidores se entiende que la forma más estándar de aplicación y uso de sistemas Cliente/Servidor es mediante la explotación de las PC’s a través de interfaces gráficas de usuario; mientras que la administración de datos y su seguridad e integridad se deja a cargo de computadoras centrales tipo mainframe. Usualmente la mayoría del trabajo pesado se hace en el proceso llamado servidor y el o los procesos cliente sólo se ocupan de la interacción con el usuario (aunque esto puede variar).
·         5. En otras palabras la arquitectura Cliente/Servidor es una extensión de programación modular en la que la base fundamental es separar una gran pieza de software en módulos con el fin de hacer más fácil el desarrollo y mejorar su mantenimiento.   Esta arquitectura permite distribuir físicamente los procesos y los datos en forma más eficiente lo que en computación distribuida afecta directamente el tráfico de la red, reduciéndolo grandemente. Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.
·         6. En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma. Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.
·         7. La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico. La red Cliente/Servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se esté utilizando en una red mixta.
·         8. 1. Cambios estructurales y organizativos. 2. Cambios en organigramas. 3. Respuesta dinámica de mercado. 4. Cambio en procesos de negocio. 1. La demanda de sistemas fáciles. 2. Precio/rendimiento de estaciones y servidores. 3. Creciente acceso a la información para decisiones: Separación datos-programas. Programas flexibles. 4. Nuevas tecnologías de alta productividad.
·         9. Un sistema cliente/servidor funciona tal como se detalla en el siguiente diagrama: El cliente envía una solicitud al servidor mediante su dirección IP y el puerto, que está reservado para un servicio en particular que se ejecuta en el servidor. El servidor recibe la solicitud y responde con la dirección IP del equipo cliente y su puerto.
·         10. Es el que inicia un requerimiento de servicio. El requerimiento inicial puede convertirse en múltiples requerimientos de trabajo a través de redes LAN o WAN. La ubicación de los datos o de las aplicaciones es totalmente transparente para el cliente. En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo). Espera y recibe las respuestas del servidor. Por lo general, puede conectarse a varios servidores a la vez. Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.
·         11. 5. Al contratar un servicio de redes , se tiene que tener en la velocidad de conexión que le otorga al cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre ronda entre 1 ms y 50 ms. Es cualquier recurso de cómputo dedicado a responder a los requerimientos del cliente. Los servidores pueden estar conectados a los clientes a través de redes, para proveer de múltiples servicios a los clientes y ciudadanos tales como impresión, acceso a bases de datos, fax, procesamiento de imágenes, etc. Al receptor de la solicitud enviada por cliente se conoce como servidor.
·         12. 1. Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo). 2. Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente. 3. Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado). 4. No es frecuente que interactúen directamente con los usuarios finales. El cliente es el proceso que permite al usuario formular los requerimientos y pasarlos al servidor, se le conoce con el término front-end.
·         13. El Cliente normalmente maneja todas las funciones relacionadas con la manipulación y despliegue de datos, por lo que están desarrollados sobre plataformas que permiten construir interfaces gráficas de usuario (GUI), además de acceder a los servicios distribuidos en cualquier parte de una red. Las funciones que lleva a cabo el proceso cliente se resumen en los siguientes puntos: • Administrar la interfaz de usuario. • Interactuar con el usuario. • Procesar la lógica de la aplicación y hacer validaciones locales. • Generar requerimientos de bases de datos. • Recibir resultados del servidor. • Formatear resultados.
·         14. Es el proceso encargado de atender a múltiples clientes que hacen peticiones de algún recurso administrado por él. Al proceso servidor se le conoce con el término back-end.   El servidor normalmente maneja todas las funciones relacionadas con la mayoría de las reglas del negocio y los recursos de datos.   Las funciones que lleva a cabo el proceso servidor se resumen en los siguientes puntos: • Aceptar los requerimientos de bases de datos que hacen los clientes. • Procesar requerimientos de bases de datos. • Formatear datos para trasmitirlos a los clientes. • Procesar la lógica de la aplicación y realizar validaciones a nivel de bases de datos.
·         15. Cualquier combinación de sistemas que pueden colaborar entre sí para dar a los usuarios toda la información que ellos necesiten sin que tengan que saber donde está ubicada. Es una arquitectura de procesamientos cooperativo donde uno de los componentes pide servicios a otro. Es un procesamiento de datos de índole colaborativo entre dos o más computadoras conectadas a una red. El término cliente/servidor es originalmente aplicado a la arquitectura de software que describe el procesamiento entre dos o más programas: una aplicación y un servicio soportante.
·         16. IBM define al modelo Cliente/Servidor. "Es la tecnología que proporciona al usuario final el acceso transparente a las aplicaciones, datos, servicios de cómputo o cualquier otro recurso del grupo de trabajo y/o, a través de la organización, en múltiples plataformas. El modelo soporta un medio ambiente distribuido en el cual los requerimientos de servicio hechos por estaciones de trabajo inteligentes o "clientes'', resultan en un trabajo realizado por otros computadores llamados servidores". "Es un modelo para construir sistemas de información, que se sustenta en la idea de repartir el tratamiento de la información y los datos por todo el sistema informático, permitiendo mejorar el rendimiento del sistema global de información"
·         17. Combinación de un cliente que interactúa con el usuario, y un servidor que interactúa con los recursos compartidos. El proceso del cliente proporciona la interfaz entre el usuario y el resto del sistema. El proceso del servidor actúa como un motor de software que maneja recursos compartidos tales como bases de datos, impresoras, módems, etc. Las tareas del cliente y del servidor tienen diferentes requerimientos en cuanto a recursos de cómputo como velocidad del procesador, memoria, velocidad y capacidades del disco y input-output devices. Se establece una relación entre procesos distintos, los cuales pueden ser ejecutados en la misma máquina o en máquinas diferentes distribuidas a lo largo de la red.
·         18. Existe una clara distinción de funciones basada en el concepto de "servicio", que se establece entre clientes y servidores.   La relación establecida puede ser de muchos a uno, en la que un servidor puede dar servicio a muchos clientes, regulando su acceso a recursos compartidos.   Los clientes corresponden a procesos activos en cuanto a que son éstos los que hacen peticiones de servicios a los servidores. Estos últimos tienen un carácter pasivo ya que esperan las peticiones de los clientes. No existe otra relación entre clientes y servidores que no sea la que se establece a través del intercambio de mensajes entre ambos. El mensaje es el mecanismo para la petición y entrega de solicitudes de servicio.
·         19. El ambiente es heterogéneo. La plataforma de hardware y el sistema operativo del cliente y del servidor no son siempre la misma. Precisamente una de las principales ventajas de esta arquitectura es la posibilidad de conectar clientes y servidores independientemente de sus plataformas.   El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema Cliente/Servidor. La escalabilidad horizontal permite agregar más estaciones de trabajo activas sin afectar significativamente el rendimiento. La escalabilidad vertical permite mejorar las características del servidor o agregar múltiples servidores.
·         20. Front/end : Es la parte de la aplicación que interactúa con el usuario. Basados en una interfaz gráfica con el usuario (GUI). El Cliente corre la aplicación que ofrece la interfaz con el usuario. Back/end: Es la parte no-interactiva de la aplicación. La mayor parte reside en las Bases de Datos (relacionales o no). No requieren una gran Base de Datos compartida, pueden ser elaboradas solamente en el Cliente. Exigen dos capas, una para la aplicación del usuario (Cliente) y otra para la base de datos (Servidor).
·         21. 1. Generalmente usa los modelos de función distribuida o datos distribuidos. 2. Muy productivo. 3. Distribución no flexible. 4. Dependiente del suministrador. Nivel Responsabilidad Funciones Herramientas Aplicativo del Usuario Interfaz Incomprensible y Eficiente Presentación, Navegación, Manejo y Análisis Herramientas Graficas y Lenguaje de Programación Reglas de Negocio Políticas, Reglas y Heurística Toma de Decisiones, Políticas y Administración de Recursos Lenguaje de Programación Base de Datos Datos Consistentes y Seguros Mantenimiento, Actualización, Integridad y Seguridad Base de Datos, Lenguaje de Base de Datos
·         22. La Arquitectura de tres niveles es lógica y no física. Se preocupa con las funciones y no con la implantación.   La Arquitectura puede ser utilizada para desarrollar sistemas Centralizados o Distribuidos.   La Arquitectura facilitará la distribución de los componentes del sistema. 1. Modelo presentación-negocio-datos 2. Distribución flexible. 3. Sistema abierto. No dependiente.
·         23. Estructura para la elaboración de aplicativos flexibles y fáciles de modificar, según las necesidades del negocio(cambio). Alto nivel de reutilización del software y datos. Fácil y rápido desarrollo de aplicativos grandes y complejos, para las transacciones y los SSD. Fácil y rápido desarrollo de sistemas distribuidos que dan soporte a la administración central y a equipos auto-gestionados.
·         24. Esconde de cada nivel los detalles contenidos en los niveles inferiores: Desarrollo simplificado del aplicativo: A l desarrollar un nivel no precisa preocuparse por el otro. Mayor seguridad y protección: El desarrollador de un nivel no puede controlar físicamente otra camada en ningún nivel de detalle. Es la superficie entre los componentes adyacentes de un aplicativo y el dispositivo por medio del cual ellos interactúan a través de las siguientes funciones: Informa lo que el otro componente debe hacer, pregunta el estado actual del otro componente, recibe el resultado de las operaciones solicitadas.
·         25.
·         26. Nivel Interfaz Foco del Proyecto Aplicativo del Usuario GUI Objetos del Aplicativo Independiente del Proyecto Proceso de Reglas del Negocio Proceso Solicitud de Decisiones Independientes de la Interfaz, Usuario y Datos Administración de Base de Datos Transacción y Consultas Datos Independiente de la Decisión
·         27. El desarrollo de un buen sistema Cliente / Servidor exige especialización de: 1. Interfaz gráfica 2. Redes de computadora 3. Programación de Negocios 4. Base de Datos 5. Programación de Base de Datos 6. Distribución de sistemas
·         28.
·         29. En la arquitectura Cliente/Servidor se como los tres niveles de aplicación se relacionan. Focaliza sobre la estructura y la adaptación. Y determina qué entra en cada nivel y cómo la aplicación se relaciona con otras aplicaciones. *Distribución de Datos * Distribución de Procesamiento *Interfaz gráfica con el usuario
·         30.
·         31. Históricamente el área de informática elabora los sistemas de aplicación de forma completa, estando los usuarios obligados a “tomarlos o dejarlos”. En el futuro, el área informática elaborará la infraestructura, o sea: La base de Datos, los módulos de los procesos de negocio, y kits de herramientas; para que el usuario pueda elaborar sus propias aplicaciones. 1. Proveer los procesos de las reglas del negocio. 2. Proveer las estructuras fundamentales de las Bases de Datos 3. Proveer los elementos de la interfaz . 4. Proveer la infraestructura general de los sistemas, sobre la cual los equipos de trabajo puedan montar sus aplicaciones.
·         32.
·         33.
·         34. 1. Uno de los aspectos que más ha promovido el uso de sistemas Cliente/Servidor, es la existencia de plataformas de hardware cada vez más baratas.   2. El esquema Cliente/Servidor facilita la integración entre sistemas diferentes y comparte información permitiendo, por ejemplo que las máquinas ya existentes puedan ser utilizadas pero utilizando interfaces mas amigables al usuario.   3. Al favorecer el uso de interfaces gráficas interactivas, los sistemas construidos bajo este esquema tienen mayor interacción más intuitiva con el usuario. 4. Es más rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear las herramientas existentes (por ejemplo los servidores de SQL o las herramientas de más bajo nivel como los sockets o el RPC ).
·         35. La estructura inherentemente modular facilita además la integración de nuevas tecnologías y el crecimiento de la infraestructura computacional, favoreciendo así la escalabilidad de las soluciones.   El esquema Cliente/Servidor contribuye además, a proporcionar, a los diferentes departamentos de una organización, soluciones locales, pero permitiendo la integración de la información relevante a nivel global.
·         36. es.wikipedia.org/wiki/Cliente-servidor www.monografias.com/trabajos24/arquitectura-cliente-servidor/arquitectura-cliente-servidor.shtml www.desarrolloweb.com/articulos/arquitectura-cliente-servidor.html www.csae.map.es/csi/silice/Global71.html temariotic.wikidot.com/la-arquitectura-cliente-servidor
Bases de datos distribuidas
Una base de datos distribuida (BDD) es un conjunto de múltiples bases de datos lógicamente relacionadas las cuales se encuentran distribuidas en diferentes espacios lógicos (pej. un servidor corriendo 2 máquinas virtuales) e interconectados por una red de comunicaciones. Dichas BDD tienen la capacidad de realizar procesamiento autónomo, esto permite realizar operaciones locales o distribuidas. Un sistema de Bases de Datos Distribuida (SBDD) es un sistema en el cual múltiples sitios de bases de datos están ligados por un sistema de comunicaciones de tal forma que, un usuario en cualquier sitio puede acceder los datos en cualquier parte de la red exactamente como si estos fueran accedidos de forma local.
Un sistema distribuido de bases de datos se almacenan en varias computadoras. Los principales factores que distinguen un SBDD de un sistema centralizado son los siguientes:
·         Hay múltiples computadores, llamados sitios o nodos.
·         Estos sitios deben de estar comunicados por medio de algún tipo de red de comunicaciones para transmitir datos y órdenes entre los sitios.

Historia

La necesidad de almacenar datos de forma masiva dio paso a la creación de los sistemas de bases de datos. En 1970 Edgar Frank Codd escribió un artículo con nombre: "A Relational Model of Data for Large Shared Data Banks" ("Un modelo relacional para grandes bancos de datos compartidos"). Con este artículo y otras publicaciones, definió el modelo de bases de datos relacionales y reglas para poder evaluar un administrador de bases de datos relacionales. El cuadrado.

Inicio de las bases de datos distribuidas

Originalmente se almacenaba la información de manera centralizada, pero con el paso del tiempo las necesidades aumentaron y esto produjo ciertos inconvenientes que no era posible solucionarlos o volverlos eficientes de la forma centralizada. Estos problemas impulsaron la creación de almacenamiento distribuido, los cuales hoy en día proveen características indispensables en el manejo de información; es decir, la combinación de las redes de comunicación y las bases de datos.

Evolución

Hay varios factores que han hecho que las bases de datos evolucionen a bases de datos distribuidas. En el mundo de los negocios se ha dado una globalización y a la vez las operaciones de las empresas son cada vez más descentralizadas geográficamente. También el poder de las computadoras personales aumentó y el costo de los Mainframes ya no tenía sentido. Además la necesidad de compartir datos ha hecho que crezca el mercado de las bases de datos distribuidas.

Componentes

Hardware involucrado

El hardware utilizado no difiere mucho del hardware utilizado en un servidor normal. Al principio se creía que si los componentes de una base de datos eran especializados serían más eficientes y rápidos, pero se comprobó que el decentralizar todo y adoptar un enfoque "nada compartido" (shared-nothing) resultaba más barato y eficaz. Por lo que el hardware que compone una base de datos distribuida se reduce a servidores y la red.

Software

Sistema manejador de base de datos distribuida (DDBMS)

Este sistema está formado por las transacciones y los administradores de la base de datos distribuidos. Un DDBMS implica un conjunto de programas que operan en diversas computadoras, estos programas pueden ser subsistemas de un único DDBMS de un fabricante o podría consistir de una colección de programas de diferentes fuentes.

Administrador de transacciones distribuidas (DTM)

Este es un programa que recibe las solicitudes de procesamiento de los programas de consulta o transacciones y las traduce en acciones para los administradores de la base de datos. Los DTM se encargan de coordinar y controlar estas acciones. Este DTM puede ser propietario o desarrollado en casa.

Sistema manejador de base de datos (DBMS)

Es un programa que procesa cierta porción de la base de datos distribuida. Se encarga de recuperar y actualizar datos del usuario y generales de acuerdo con los comandos recibidos de los DTM.

Nodo

Un nodo es una computadora que ejecuta un DTM o un DBM o ambos. Un nodo de transacción ejecuta un DTM y un nodo de base de datos ejecuta un DBM.

Consideraciones importantes

Calendarizador distribuido

El calendarizador está encargado de ordenar un conjunto de transacciones u operaciones que se deseen realizar sobre una base de datos. Cualquier orden en el que se decidan hacer este conjunto de operaciones se denomina calendarización. Parte del trabajo del calendarizador es realizar estas operaciones de forma que sean serializables y recuperables.
Dos calendarizaciones son serializables (o equivalentes) si
·         Cada operación de lectura lee valores de los datos que son producidos por la misma operación de escritura en ambas calendarizaciones (es decir son iguales)
·         La operación final de escritura en cada elemento de la data es la misma en ambas calendarizaciones

Detección de bloqueos y concurrencia

Bloqueos

Un bloqueo en general es cuando una acción que debe ser realizada está esperando a un evento. Para manejar los bloqueos hay distintos acercamientos: prevención, detección, y recuperación. También es necesario considerar factores como que hay sistemas en los que permitir un bloqueo es inaceptable y catastrófico, y sistemas en los que la detección del bloqueo es demasiado costosa.

En el caso específico de las bases de datos distribuidas usar bloqueo de recursos, peticiones para probar, establecer o liberar bloqueos requiere mensajes entre los manejadores de transacciones y el calendarizador. Para esto existen dos formas básicas:
·         Autónoma: cada nodo es responsable por sus propios bloqueos de recursos.
·         Una transacción sobre un elemento con n replicas requiere 5n mensajes
·         Petición del recurso
·         Aprobación de la petición
·         Mensaje de la transacción
·         Reconocimientos de transacción exitosa
·         Peticiones de liberación de recursos
·         Copia Primaria: un nodo primario es responsable para todos los bloqueos de recursos
·         Una transacción sobre un elemento con n copias requiere 2n+3 mensajes
·         Una petición del recurso
·         Una aprobación de la petición
·         n mensajes de la transacción
·         n reconocimientos de transacción exitosa
·         Una petición de liberación de recurso
Podemos definir que dos operaciones entran en conflicto que debe ser resuelto si ambas acceden a la misma data, y una de ellas es de escritura y si fueron realizadas por transacciones distintas.

Concurrencia

El ejemplo más común de un bloqueo mutuo es cuando un recurso A está siendo utilizado por una transacción A que a su vez solicita un recurso B que está siendo utilizado por una transacción B que solicita el recurso A. Entre los ejemplos específicos para las bases de datos distribuidas podemos destacar::

Control de concurrencia

·         El problema de las actualizaciones perdidas: cuando dos transacciones concurrentes borran el efecto una de la otra
·         Recuperaciones inconsistentes: acceder a información modificada parcialmente por una transacción de Ian.

Soluciones

El control de concurrencia y detección y manejo de bloqueos es un área de mucho estudio en las bases de datos distribuidas, a pesar de esto no hay ningún algoritmo aceptado para solucionar el problema. Esto se debe a varios factores de los cuales se consideran a los siguientes tres los más determinantes:
1.   La data puede estar duplicada en un BDD, por tanto, el manejador de la BDD es responsable de localizar y actualizar la data duplicada.
2.   Si un nodo falla o la comunicación con un nodo falla mientras se realiza una actualización, el manejador debe asegurarse de que los efectos se reflejen una vez el nodo se recupere del fallo.
3.   La sincronización de transacciones en sitios o nodos múltiples es difícil ya que los nodos no pueden obtener información inmediata de las acciones realizadas en otros nodos concurrentemente.
Para el control de bloqueos mutuos no se ha desarrollado ninguna solución viable y la forma más simple y que la mayoría de productos utilizan es la implementación de un tiempo máximo de espera en las peticiones de bloqueos.
Causa de estas dificultades más de 20 algoritmos de control de concurrencia se han propuesto en el pasado, y aun así siguen apareciendo nuevos. Una revisión bibliográfica muestra que la mayoría de los algoritmos son variantes del 2PL (2-phase locking o bloqueo de dos fases) o el algoritmo de time-stamp. A continuación se explican estos dos algoritmos básicos.
Bloqueo de dos fases (2PL)
El algoritmo 2PL utiliza bloqueos de lectura y escritura para prevenir conflictos entre operaciones. Consiste en los siguientes pasos para una transacción T:
1.   Obtiene bloqueo de lectura para un elemento L (bloqueo compartido)
2.   Obtiene bloqueo de escritura para un elemento E (bloqueo exclusivo)
3.   Lee el elemento L
4.   Escribe en el elemento E
5.   Libera el bloqueo de L
6.   Libera el bloqueo de E
Las reglas básicas para manejar los bloqueos son: transacciones distintas no pueden tener acceso simultáneamente a un elemento (lectura-escritura o escritura-escritura), y una vez se libere un bloqueo no se puede pedir otro, es decir, los bloqueos de la transacción crecerán mientras no libere ninguno y luego de liberar alguno solo puede liberar los demás.
Ejemplos del algoritmo 2PL son
·         La básica en la que se sigue el esquema previamente explicado con la variante que el bloqueo de escritura se pide para todas las copias del elemento.
·         2PL de copia primaria: en vez de pedir bloqueo para cada copia del elemento de escritura se le pide a una copia primaria o principal.
·         2PL de voto: se pide a todos los nodos que voten para ver si se concede el bloqueo.
·         2PL centralizado: el manejador de bloqueos está centralizado y todas las peticiones de bloqueo las maneja el.
Antes de implementar un algoritmo de control de concurrencia 2PL es necesario considerar distintos factores como cual es la unidad atómica más pequeña que el sistema permite bloquear, cual es el intervalo de sincronización para todas las copias de un elemento, donde se deben colocar las tablas con la información de los bloqueos y por último que tan probable es que ocurra por los factores anteriores un bloqueo mutuo.
Time-stamp
Cada transacción realizada se le asigna un timestamp (literalmente: sello de tiempo) único en el nodo que se originó. Este sello se adjunta a cada petición de lectura y escritura. En el caso de que se dé un conflicto de que dos operaciones de escritura traten de acceder al mismo elemento, este se resuelve serializandolo respecto a los sellos que tengan. A pesar de que existen varios algoritmos de control de concurrencia basados en timestamps, muy pocos son utilizados en aplicaciones comerciales. Esto es en gran parte porque se requiere que el sistema distribuido cuente con un reloj sincronizado que es raro que se tenga implementado.

Manejador de transacciones distribuido (DTM)

Definición de transacciones

Una transacción es una secuencia de una o más operaciones agrupadas como una unidad. El inicio y el final de la transacción definen los puntos de consistencia de la base de datos. Si una acción de la transacción no se puede ejecutar, entonces ninguna acción dentro de la secuencia que conforma la transacción tendrá efecto.
Propiedades de las transacciones
·         Atomicidad: Una transacción es una unidad atómica de procesamiento, esta se realiza o no se realiza.
·         Consistencia: Si se ejecuta una transacción sobre un estado consistente, el resultado será un nuevo estado consistente.
·         Aislamiento: Una transacción no hara visibles sus modificaciones a otras transacciones hasta que termine de ejecutarse completamente. Es decir, una transacción desconoce si otras transacciones se estén ejecutando en el sistema.
·         Durabilidad: Una vez una transacción se ejecuta exitosamente y realiza cambios sobre el sistema, estos cambios nunca se deben perder a causa de fallas en el sistema.
Tipos de transacciones
Una transacción puede clasificarse de diferentes maneras dependiendo básicamente de tres criterios:
1.   Áreas de aplicación. En primer lugar, las transacciones se pueden ejecutar en aplicaciones no distribuidas. Las transacciones que operan en datos distribuidos se les conoce como transacciones distribuidas. Por otro lado, dado que los resultados de una transacción que realiza un commit son durables, la única forma de deshacer los efectos de una transacción con commit es mediante otra transacción. A este tipo de transacciones se les conoce como transacciones compensatorias. Finalmente, en ambientes heterogéneos se presentan transacciones heterogéneas sobre los datos.
2.   Tiempo de duración. Tomando en cuenta el tiempo que transcurre desde que se inicia una transacción hasta que se realiza un commit o se aborta, las transacciones pueden ser de tipo batch o en línea. Estas se pueden diferenciar también como transacciones de corta y larga vida. Las transacciones en línea se caracterizan por tiempos de respuesta muy cortos y por acceder un porción relativamente pequeña de la base de datos. Por otro lado, las transacciones de tipo batch toman tiempos relativamente largos y accedan grandes porciones de la base de datos.
3.   Estructura. Considerando la estructura que puede tener una transacción se examinan dos aspectos: si una transacción puede contener a su vez subtransacciones o el orden de las acciones de lectura y escritura dentro de una transacción.

Función del manejador

El manejador de transacciones es el encargado de definir la estructura de las transacciones, mantener la consistencia en la base de datos cuando se ejecuta una transacción o se cancela la ejecución de una, mantener protocolos de fiabilidad, implementar algoritmos para el control de la concurrencia y sincronizar las transacciones que se ejecutan simultáneamente.
El manejador recibe solicitudes de procesamiento de transacciones y las traduce en acciones para el calendarizador.
La operación COMMIT señala el término exitoso de la transacción: le dice al manejador de transacciones que se ha finalizado con éxito una unidad lógica de trabajo, que la base de datos esta (o debería estar) de nuevo en un estado consistente, y que se pueden hacer permanentes todas las modificaciones efectuadas por esa unidad de trabajo.
La operación ROLLBACK, en cambio, señala el término no exitoso de la transacción: le dice al manejador de transacciones que algo salió mal, que la base de datos podría estar en un estado inconsistente y que todas las modificaciones efectuadas hasta el momento por la unidad lógica de trabajo deben retroceder o anularse.

Distribución de los datos

Una de las decisiones más importantes que el diseñador de bases de datos distribuidas debe tomar es el posicionamiento de la data en el sistema y el esquema bajo el cuál lo desea hacer. Para esto existen cuatro alternativas principales: centralizada, replicada, fragmentada, e híbrida.

Centralizada

Es muy similar al modelo de Cliente/Servidor en el sentido que la BDD está centralizada en un lugar y los usuarios están distribuidos. Este modelo solo brinda la ventaja de tener el procesamiento distribuido ya que en sentido de disponibilidad y fiabilidad de los datos no se gana nada.

Replicadas

El esquema de BDD de replicación consiste en que cada nodo debe tener su copia completa de la base de datos. Es fácil ver que este esquema tiene un alto costo en el almacenamiento de la información. Debido a que la actualización de los datos debe ser realizada en todas las copias, también tiene un alto costo de escritura, pero todo esto vale la pena si tenemos un sistema en el que se va a escribir pocas veces y leer muchas, y dónde la disponibilidad y fiabilidad de los datos sea de máxima importancia.

Particionadas

Este modelo consiste en que solo hay una copia de cada elemento, pero la información está distribuida a través de los nodos. En cada nodo se aloja uno o más fragmentos disjuntos de la base de datos. Como los fragmentos no se replican esto disminuye el costo de almacenamiento, pero también sacrifica la disponibilidad y fiabilidad de los datos. Algo que se debe tomar en cuenta cuando se desea implementar este modelo es la granularidad de la fragmentación. La fragmentación se puede realizar también de tres formas:
·         Horizontal: Los fragmentos son subconjuntos de una tabla (análogo a un restringir)
·         Vertical: Los fragmentos son subconjuntos de los atributos con sus valores (análogo a un proyectar)
·         Mixto: Se almacenan fragmentos producto de restringir y proyectar una tabla.
Una ventaja significativa de este esquema es que las consultas (SQL) también se fragmentan por lo que su procesamiento es en paralelo y más eficiente, pero también se sacrifica con casos especiales como usar JUNTAR o PRODUCTO, en general casos que involucren varios fragmentos de la BDD.
Para que una fragmentación sea correcta esta debe cumplir con las siguientes reglas:
·         Debe ser Completa: Si una relación R se fragmenta en R1,R2, ... , Rn, cada elemento de la data de R debe estar en algún Ri.
·         Debe ser Reconstruible: Debe ser posible definir una operación relacional que a partir de los fragmentos obtenga la relación.
·         Los fragmentos deben ser Disjuntos: Si la fragmentación es horizontal entonces si un elemento e está en Ri este elemento no puede estar en ningún Rk (para k distinto a i). En el caso de fragmentación vertical es necesario que se repitan las llaves primarias y esta condición solo se debe cumplir para el conjunto de atributos que no son llave primaria.

Híbrida

Este esquema simplemente representa la combinación del esquema de partición y replicación. Se particiona la relación y a la vez los fragmentos están selectivamente replicados a través del sistema de BDD.

Criterios para escoger la distribución

·         Localidad de la data: la data debería ser colocada donde ésta se accede más seguido. El diseñador debe analizar las aplicaciones y determinar como colocar la data de tal forma que se optimicen los accesos a la data locales.
·         Fiabilidad de la data: Almacenando varias copias de la data en lugares geográficamente apartados se logra maximizar la probabilidad de que la data va a ser recuperable en caso de que ocurra daño físico en cualquier sitio.
·         Disponibilidad de la data: como en la fiabilidad, almacenar varias copias asegura que los usuarios tengan a su disponibilidad los elementos de la data, aún si el nodo al que usualmente acceden no está disponible o falla.
·         Capacidades y costos de almacenamiento: a pesar de que los costos de almacenamiento no son tan grandes como los de transmisión, los nodos pueden tener diferentes capacidades de almacenamiento y procesamiento. Esto se debe analizar cuidadosamente para determinar donde poner la data. El costo de almacenamiento se disminuye significativamente minimizando la cantidad de copias de la data.
·         Distribución de la carga de procesamiento: una de las razones por la cual se escoge un sistema de BDD es porque se desea poder distribuir la carga de procesamiento para hacer este más eficiente.
·         Costo de comunicación: el diseñador debe considerar también el costo de usar las comunicaciones de la red para obtener data. Los costos de comunicación se minimizan cuando cada sitio tiene su propia copia de la data, por otro lado cuando la data es actualizada se debe actualizar en todos los nodos.
·         Uso del sistema: debe tomarse en consideración cual será el tipo principal de uso del sistema de BDD. Factores como la importancia en la disponibilidad de la data, la velocidad de escritura y la capacidad de recuperación de daños físicos deben tomarse en cuenta para escoger el esquema correcto.

Seguridad

Desde hace ya varios años las bases de datos son ampliamente utilizadas en departamentos de gobiernos, empresas comerciales, bancos, hospitales, etc. Actualmente se está cambiando el esquema bajo el cuál se utilizan las bases de datos, ya no son utilizadas únicamente de forma interna, sino que se tiene muchos accesos externos de tipos distintos. Estos cambios que se han introducido en el uso de las bases de datos ha creado la necesidad mejorar las prácticas de seguridad ya que el ambiente ya no es tan controlado como el esquema antiguo.

Conceptos

Los problemas de mayor importancia en seguridad son autenticación, identificación, y refuerzo de los controles de acceso apropiados. El sistema de seguridad de niveles múltiples. Éste consiste en muchos usuarios con distintos niveles de permisos para una misma base de datos con información de distintos niveles. En las bases de datos distribuidas se han investigado dos acercamientos a este modelo: data distribuida y control centralizado, y data y control distribuidos.
En el acercamiento de data distribuida y control centralizado se divide en dos soluciones: particionado y replicado. En el primero de estos lo que se tiene es un conjunto de nodos y cada uno de ellos opera a cierto nivel de seguridad, así el usuario con nivel de permisos X accede al servidor que maneja la data para X. El replicado surgió debido a que si alguien con altos derechos de seguridad deseaba consultar data con de bajo nivel de seguridad debía enviar su petición a un servidor de bajo nivel de seguridad por lo cual se podría divulgar información sensible. En el esquema replicado entonces la data se repite en cascada de tal forma que el nivel más alto tiene una copia entera de la base de datos, y el más bajo solamente la información de más bajo nivel. El otro acercamiento de data y control distribuido cada nodo contiene información de distintos niveles y está diseñado para aceptar peticiones de cualquier nivel de usuario.

El problema de inferencia

El problema de inferencia consiste en usuarios tratando de ejecutar consultas sobre la BD y estos infiriendo información sobre la respuesta legítima que la base de datos debe responder. Las herramientas para minería de datos hacen este problema aún más peligroso ya que hacen que sea más fácil para cualquier novato poder deducir patrones e información importantes de simplemente probar consultas.

Tipos de arquitecturas/implementaciones

En un sistema de bases de datos distribuidas, existen varios factores que deben tomar en consideración que definen la arquitectura del sistema:
·         Distribución: Los componentes del sistema están localizados en la misma computadora o no.
·         Heterogeneidad: Un sistema es heterogéneo cuando existen en él componentes que se ejecutan en diversos sistemas operativos, de diferentes fuentes, etc.
·         Autonomía: Se puede presentar en diferentes niveles, los cuales se describen a continuación:
1.   Autonomía de diseño: Habilidad de un componente del sistema para decidir cuestiones relacionadas a su propio diseño.
2.   Autonomía de comunicación: Habilidad de un componente del sistema para decidir como y cuando comunicarse con otros SGBD (Sistema Gestor de Bases de Datos).
3.   Autonomía de ejecución: Habilidad de un componente del sistema para ejecutar operaciones locales como quiera.

Multi base de datos distribuida

Cuando una base de datos distribuida es muy heterogenea se dice que es multi base de datos distribuida.

Base de datos Federada

Cuando una base de datos distribuida tiene mucha autonomía local se dice que es federada.

Objetivos de implementación

Al implementar una base de datos distribuida se tienen ciertos objetivos comunes:
·         Transparencia de ubicación. Permite a los usuarios tener acceso a los datos sin que tenga conocimiento de la ubicación de éstos. Se puede conseguir este nivel de transparencia al utilizar los administradores de transacciones distribuidas, los cuales son capaces de determinar la localización de los datos y de emitir acciones a los calendarizadores apropiados, lo cual puede ejecutarse cuando los administradores de transacciones distribuidas poseen acceso a los directorios de localizaciones de los datos.
·         Transparencia de duplicación. Para que la transparencia de duplicación sea posible, los administradores de transacciones deben traducir las solicitudes de procesamiento de transacción en acciones para el administrador de datos. Para las lecturas el administrador de transacciones selecciona uno de los nodos que almacena los datos y ejecuta la lectura. Para optimizar el proceso, el administrador de transacciones necesita información sobre el rendimiento de varios nodos respecto al sitio de consulta, así podrá seleccionar el nodo de mejor rendimiento. La actualización y escritura de datos duplicados suelen ser más complicadas, ya que el manejador de transacciones debe emitir una acción de escritura para cada uno de los calendarizadores que almacena una copia de los datos.
·         Transparencia de concurrencia. Cuando varias transacciones se ejecuten al mismo tiempo, los resultados de las transacciones no deberán afectarse. La transparencia de concurrencia se logra si los resultados de todas las transacciones concurrentes son consistentes de manera lógica con los resultados que se habrían obtenido si las transacciones se hubieran ejecutado una por una, en cualquier orden secuencial.
·         Transparencia de fallas. Significa que a pesar de fallas las transacciones sean procesadas de un modo correcto. Frente a una falla, las transacciones deben ser atómicas, significa que se procesen todas o ninguna de ellas. Para este tipo de problemas es importante tener resguardo de la base de datos, y así poder restaurarla cuando sea conveniente. El sistema debe detectar cuándo falla una localidad y tomar las medidas necesarias para recuperarse del fallo. El sistema no debe seguir utilizando la localidad que falló. Por último, cuando se recupere o repare esta localidad, debe contarse con mecanismos para reintegrarla al sistema con el mínimo de complicaciones.
·         Localidad del procesamiento. Los datos se deben distribuir lo más cerca posible de las aplicaciones que los usan para maximizar la localidad del procesamiento, este principio responde a minimizar el acceso remoto a los datos. Diseñar una distribución que maximice localidad del procesamiento puede hacerse añadiendo la cantidad de referencias locales y remotas correspondientes a cada fragmentación candidata y asignar la fragmentación eligiendo la mejor solución. Independencia de configuración. La independencia de configuración permite añadir o reemplazar hardware sin tener que cambiar componentes de software existentes en el sistema de base de datos distribuida.
·         Particionado de la Base de Datos. La base de datos se distribuye de modo que no haya solapamiento o duplicación de los datos mantenidos en las diferentes localidades, como no hay duplicaciones de los datos, se evitan los costos asociados con el almacenamiento y mantenimiento de datos redundantes. Si un mismo segmento de datos se usa en más de una localidad se ve limitada la disponibilidad de los datos. La fiabilidad también puede verse limitada cuando se produce un fallo en el sistema de cálculo de una localidad se afecta la disponibilidad de los datos de esa localidad no estén disponible para los usuarios en cualquier parte del sistema.
·         Fragmentación de datos. Consiste en subdividir las relaciones y distribuirlas entre los sitios de la red, tiene como objetivo buscar formas alternativas de dividir una las instancias (tablas) de relaciones en otras más pequeñas. La fragmentación se puede realizar por tuplas individuales (fragmentación horizontal), por atributos individuales fragmentación vertical) o una combinación de ambas (fragmentación híbrida). El principal problema de la fragmentación radica en encontrar la unidad apropiada de distribución. Una relación no es una buena unidad por muchas razones. Normalmente las vistas de una relación están formadas por subconjuntos de relaciones. Además, las aplicaciones acceden localmente a subconjuntos de relaciones. Por ello, es necesario considerar a los subconjuntos de relaciones como unidad de distribución. Al descomponer de una relación en fragmentos, tratados cada uno de ellos como una unidad de distribución, permite el proceso concurrente de las transacciones. El conjunto de estas relaciones, provocará la ejecución paralela de una consulta al ser dividida en una serie de subconsultas que operará sobre los fragmentos. Cuando las vistas definidas sobre una relación son consideradas como unidad de distribución que se ubican en diferentes sitios de la red, podemos optar por dos alternativas diferentes: La relación no estará replicada y se almacena en un único sitio, o existe réplica en todos o algunos de los sitios en los cuales reside la aplicación. Las consecuencias de esta estrategia son la generación de un volumen de accesos remotos que pueden ser innecesarios con un mal manejo de estas replicas. Además, las réplicas innecesarias pueden causar problemas en la ejecución de las actualizaciones y puede no ser deseable si el espacio de almacenamiento está limitado. Los inconvenientes de la fragmentación están dados en que si las pueden estar definidas por fragmentos mutuamente exclusivos y al recuperar los datos de dos fragmentos situados en sitios diferentes es necesario trasmitir los datos de un sitio a otro y realizar sobre ellos la operación de unión (Join), lo cual puede ser costoso. El control semántico cuando los atributos implicados en una dependencia una relación se descompone en diferentes fragmentos y estos se ubican en sitios diferentes puede ser muy costos porque es necesario hacer búsquedas en un gran número de sitios.

No hay comentarios:

Publicar un comentario