jueves, 28 de septiembre de 2017

Gestor de Base de Datos





UNIVERSIDAD POLITECNICA AMAZONICA




INGENIERÍA DE SISTEMAS Y TELEMÁTICAS


                       Docente         : Marco Aurelio Porro Chulli

                       Asignatura     :Lenguaje de Programación III.

                       Ciclo               : VII  "A"

                       Integrantes     : Vicente Wualdir Alberca Rojas

                                                  Yenny Isabel Cuello Morón





GESTOR DE BASE DE DATOS







1.  Contenido


Ø Definición

Se trata de un conjunto de programas no visibles al usuario final que se encargan de la privacidad, la integridad, la seguridad de los datos y la interacción con el sistema operativo. Proporciona una interfaz entre los datos, los programas que los manejan y los usuarios finales. 
Cualquier operación que el usuario hace contra la base de datos está controlada por el          gestor. 

El gestor almacena una descripción de datos en lo que llamamos diccionario de datos, así como los usuarios permitidos y los permisos. 
Tiene que haber un usuario administrador encargado de centralizar todas estas tareas. 
Los Sistemas Gestores de Bases de Datos (SGBD, por sus siglas en inglés), también conocidos como sistemas manejadores de bases de datos o DBMS (DataBase Management System), son un conjunto de programas que manejan todo acceso a la base de datos, con el objetivo de servir de interfaz entre ésta, el usuario y las aplicaciones utilizadas. 
Gracias a este sistema de software específico el usuario puede gestionar la base de datos(almacenar, modificar y acceder a la información contenida en ésta) mediante el uso de distintas herramientas para su análisis, con las que puede realizar consultas y generar informes. 
Además de gestionar los datos y mantener su consistencia, su utilización supone numerosas ventajas a la hora de construir y definir la base de datos a diferentes niveles de abstracción para distintas aplicaciones, pues facilita los procesos y también su mantenimiento. 

Un SGBD debe permitir:

• Definir una base de datos: especificar tipos, estructuras y restricciones de datos.
• Construir la base de datos: guardar los datos en algún medio controlado por el         mismo          SGBD
• Manipular la base de datos: realizar consultas, actualizarla, generar informes.

Las características de un Sistema Gestor de Base de Datos SGBD son:

• Abstracción de la información. Los SGBD ahorran a los usuarios detalles acerca del almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de archivos, este hecho se hace transparente al usuario. Así, se definen varios niveles de abstracción.

• Independencia. La independencia de los datos consiste en la capacidad de modificar el esquema (físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella.

• Redundancia mínima. Un buen diseño de una base de datos logrará evitar la aparición de información repetida o redundante. De entrada, lo ideal es lograr una redundancia nula; no obstante, en algunos casos la complejidad de los cálculos hace necesaria la aparición de redundancias.

• Consistencia. En aquellos casos en los que no se ha logrado esta redundancia nula, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea.

• Seguridad. La información almacenada en una base de datos puede llegar a tener un gran valor. Los SGBD deben garantizar que esta información se encuentra asegurada frente a usuarios malintencionados, que intenten leer información privilegiada; frente a ataques que deseen manipular o destruir la información; o simplemente ante las torpezas de algún usuario autorizado pero despistado. Normalmente, los SGBD disponen de un complejo sistema de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos.

• Integridad. Se trata de adoptar las medidas necesarias para garantizar la validez de los datos almacenados. Es decir, se trata de proteger los datos ante fallos de hardware, datos introducidos por usuarios descuidados, o cualquier otra circunstancia capaz de corromper la información almacenada.

• Respaldo y recuperación. Los SGBD deben proporcionar una forma eficiente de realizar copias de respaldo de la información almacenada en ellos, y de restaurar a partir de estas copias los datos que se hayan podido perder.

• Control de la concurrencia. En la mayoría de entornos (excepto quizás el doméstico), lo más habitual es que sean muchas las personas que acceden a una base de datos, bien para recuperar información, bien para almacenarla. Y es también frecuente que dichos accesos se realicen de forma simultánea. Así pues, un SGBD debe controlar este acceso concurrente a la información, que podría derivar en inconsistencias.

Ø  Componentes

Lenguajes SGBD

·      Lenguaje de definición de datos- DDL: te permite llevar a cabo las tareas de definición de las estructuras que almacenarán los datos, así como los métodos o funciones que permitan consultarlos.
·     Lenguaje de manipulación de datos-DML: te permite consultar o manipular los datos, organizados por el modelo adecuado. El más popular es el SQL. Se clasifican en:
·    Procedurales: se le da instrucciones al sistema para que elabore unos procedimientos en la base de datos para calcular un resultado final.
·        No Procedurales: se detalla la información sin un método específico para obtener información.

·     Lenguajes de cuarta generación: son lenguajes de programación diseñados con el objetivo de desarrollar aplicaciones orientadas a las bases de datos.
·   Lenguaje de control de datos: este tipo de lenguaje incluye una serie de comandos SQL que permiten al administrador controlar al acceso a los datos que tengan una base de datos.

Diccionario de   datos

El diccionario de datos es el lugar donde se guarda toda la información de todos los datos que forman la base de datos. Dentro de él se encuentra la lista de todos los elementos que forman parte del flujo de datos de todo el sistema.
En su contenido está las descripciones de todos los demás objetos (archivos, programas) que existen en el sistema, almacena el conjunto numeroso de esquemas y especifica cada archivo y su ubicación, también incluye información acerca de qué programas utilizan qué datos, y a que usuarios les interesa un informe u otro.
Está integrado dentro de la misma base de datos, puede tolerar descripciones de los modelos conceptual, lógico, interno y externo. Está guardado en un medio con acceso directo por si llegásemos a perder información poder recuperarla con facilidad.

Seguridad e Integridad

Los datos están protegidos por si personas que no tienen acceso intentasen acceder, por caídas durante el procesamiento de transacciones, anomalías por acceder varias personas al mismo tiempo, anomalías producidas por distribuir los datos entre varios ordenadores.

 El administrador de la base de datos

Dentro de los sistemas de gestión de bases de datos hay varias categorías de usuarios según el derecho o autorización que tengan sobre los objetos que componen la base de datos:

·        Usuarios de la categoría DBA: su función es administrar la base por lo tanto tienen acceso total.
·     Usuarios de la categoría RESOURCE: pueden crear sus propios objetos y pueden hacer consultas.
·        Usuario de la categoría CONNECT: solo pueden realizar consultas.

Tareas del administrador de la  BD

·  Instalar el SGBD en el sistema informático. 
·  Crear las bases de datos que se vayan a tramitar. 
·  Crear y mantener el esquema de la BD. 
·  Crear y mantener las cuentas de usuario de la BD. 
·  Arrancar y parar el SGBD, y cargar las bases de datos necesarias para trabajar. 
· Cooperar con el administrador del sistema operativo, a la hora de ubicar, dimensionar y controlar los archivos y espacios de disco ocupados por el SGBD. 
·  Ayudar en las tareas de formación de usuarios. 
· Realizar estándares de uso, políticas de acceso y reglas de trabajo para los usuarios de la BD. 
·  Proporcionar la información que necesitan sobre la BD a los equipos de análisis y programación de aplicaciones. 
·  Además, realizan tareas de explotación como:
·  Vigilar el trabajo diario ayudando en la información y aclarando las dudas de los usuarios de la BD.
·  Controlar en tiempo real los accesos, tasas de uso, cargas en los servidores…
·  Si es necesario, reorganizar la BD.
· Realizar las copias de seguridad periódicas de la BD. Restaurar la BD si ocurriese algo a partir de las copias de seguridad.
· Analizar las auditorías del sistema por si hay alguna anomalía, intento de violación de la seguridad.
·  Ajustar y optimizar la BD mediante el ajuste de sus parámetros, y con ayuda de las herramientas de monitorización y de las estadísticas del sistema.
§ Una vez definido las bases y conceptos básicos de los sistemas gestores de bases de datos nos quedan por definir y reconocer los modelos de datos más utilizados. Algunos se verán con un poco más de detalles, pero la mayoría de ellos se dejarán para su estudio aparte.

Ø  Lenguajes de Modelación

Modelo jerárquico



En un modelo jerárquico, los datos están organizados en una estructura arbórea (dibujada como árbol invertido o raíz), lo que implica que cada registro sólo tiene un padre. Las estructuras jerárquicas fueron usadas extensamente en los primeros sistemas de gestión de datos de unidad central, como el Sistema IMS por IBM, y ahora se usan para describir la estructura de documentos XML. Esta estructura permite relaciones 1: N entre los datos, y es muy eficiente para describir muchas relaciones del mundo real: tablas de contenido, ordenamiento de párrafos y cualquier tipo de información anidada.
Sin embargo, la estructura jerárquica es ineficiente para ciertas operaciones de base de datos cuando el camino completo no se incluye en cada registro. Una limitación del modelo jerárquico es su incapacidad para representar de manera eficiente la redundancia en datos.
En la relación Padre-hijo: El hijo sólo puede tener un padre, pero un padre puede tener múltiples hijos. Los padres e hijos están unidos por enlaces. Todo nodo tendrá una lista de enlaces a sus hijos.

Modelo de red



El modelo de red expande la estructura jerárquica, permitiendo relaciones N:N en una estructura tipo árbol que permite múltiples padres. Antes de la llegada del modelo relacional, el modelo en red era el más popular para las bases de datos. Este modelo de red (definido por la especificación CODASYL) organiza datos que usan en dos construcciones básicas, registros y conjuntos. Los registros contienen campos que puede estar organizados jerárquicamente, como en el lenguaje COBOL. Los conjuntos definen relaciones N:N entre registros: varios propietarios, varios miembros. Un registro puede ser un propietario de varios conjuntos, y miembro en cualquier número de conjuntos.
El modelo en red es una generalización del modelo jerárquico, en tanto está construido sobre el concepto de múltiples ramas (estructuras de nivel inferior) emanando de uno o varios nodos (estructuras de nivel alto), mientras el modelo se diferencia del modelo jerárquico en que las ramas pueden estar unidas a múltiples nodos. El modelo de red es capaz de representar la redundancia en datos de una manera más eficiente que en el modelo jerárquico.
Las operaciones del modelo de red se realizan por de navegación: un programa mantiene la posición actual, y navega entre registros siguiendo las relaciones entre ellos. Los registros también pueden ser localizados por valores claves.
Aunque no es una característica esencial del modelo, las bases de datos en red implementan sus relaciones mediante punteros directos al disco. Esto da una velocidad de recuperación excelente, pero penaliza las operaciones de carga y reorganización.
Entre los SGBD más populares que tienen arquitectura en red se encuentran Total e IDMS. IDMS logró una importante base de usuarios; en 1980 adoptó el modelo relacional y SQL, manteniendo además sus herramientas y lenguajes originales.
La mayoría de bases de datos orientadas a objetos (introducidas en 1990) usan el concepto de navegación para proporcionar acceso rápido entre objetos en una red. Objectivity/DB, por ejemplo, implementa 1:1, 1: N, N:1 y N:N entre distintas bases de datos. Muchas bases de datos orientadas a objetos también soportan SQL, combinando así la potencia de ambos modelos.

Modelo Relacional



El modelo fue introducido por E.F. Codd en 1970 con el objetivo de querer hacer los SGBD más independientes de las aplicaciones. Es un modelo matemático definido en términos de lógica de predicados y teoría de conjuntos, y se han implementado con él SGBD para mainframe, ordenadores medios y microordenadores.
Los productos referidos como base de datos relacional de hecho implementan un modelo que es sólo una aproximación al modelo matemático definido por Codd. Existen tres términos usados con profusión en el modelo relacional de bases de datos: relacionesatributos y dominios. Una relación equivale a una tabla con filas y columnas. Las columnas de una relación se llaman con rigor atributos, y el dominio es el conjunto de valores que cada atributo puede tomar.
La estructura básica de datos del modelo relacional es la relación (tabla), donde la información acerca de una determinada entidad (p. ej. "empleado") se almacena en tuplas (filas), cada una con un conjunto de atributos (columnas). Las columnas de cada tabla enumeran los distintos atributos de la entidad (el nombre del "empleado", dirección y número de teléfono, p. ej.), de modo que cada tupla de la relación "empleado" representa un empleado específico guardando los datos de ese empleado concreto.
Todas las relaciones (es decir, tablas) en una base de datos relacional han de seguir unas mínimas reglas:
      1.  El orden de los atributos es irrelevante
      2.  No puede haber tuplas repetidas
      3.  Cada atributo sólo puede tener un valor.

Una base de datos puede contener varias tablas, cada una similar al modelo plano. Una de las fortalezas del modelo relacional es que un valor de atributo coincidente en dos registros (filas) –en la misma o diferente tabla– implica una relación entre esos dos registros.

Modelo orientado a objetos






Base de datos orientada a objetos
En la década de 1990, el paradigma de la orientación a objetos se aplicó a las bases de datos creando un nuevo modelo llamado base de datos orientada a objetos. Esto tuvo el fin de reducir la impedancia objeto-relacional, la sobrecarga de convertir la información de su representación en la base de datos –como filas en tablas– a su representación en el programa –típicamente como objeto–. Incluso más, los tipos de datos usados en una aplicación pueden definirse directamente en la base de datos, preservando así la base de datos la misma integridad de datos. Las bases de datos orientadas a objetos también introducen las ideas clave de la programación orientada a objetos –encapsulación y polimorfismo– en el mundo de las bases de datos.
Se han propuesto distintos modos de almacenar objetos en una base de datos. Algunos se han aproximado desde la perspectiva de la programación, haciendo los objetos manipulados por el programa persistentes. Esto típicamente requiere la adición de algún tipo de lenguaje de interrogación, ya que lo lenguajes tradicionales no tienen la posibilidad de encontrar objetos basados en su contenido. Otros se han aproximado al problema desde la perspectiva de la base de datos, definiendo un modelo orientado a objetos para la base de datos, y definiendo un lenguaje de programación de dicha base de datos que permite tanto capacidades de programación como de interrogación.
Las bases de datos orientadas a objetos sufren falta de estandarización; aunque han sido definidos estándares por en Object Database Management Group nunca han sido implementados con generalidad suficiente como para permitir la interoperabilidad entre productos. Sin embargo, las bases de datos orientadas a objetos han sido empleadas eficazmente en distintas aplicaciones: generalmente en nichos especializados como ingeniería o biología molecular, pero no de forma general con soporte comercial. Sin embargo, algunas de las ideas que ha aportado han sido recogidas por los fabricantes de bases de datos relacionales y se han aplicado en extensiones al lenguaje SQL.

Ø  Sistema Gestor de base de Datos

MySQL




MySQL es un sistema gestor de bases de datos relacionales rápido, sólido y flexible. Es idóneo para la creación de bases de datos con acceso desde páginas web dinámicas, así como para la creación de cualquier otra solución que implique el almacenamiento de datos, posibilitando realizar múltiples y rápidas consultas. Está desarrollado en C y C++, facilitando su integración en otras aplicaciones desarrolladas también en esos lenguajes.
Es un sistema cliente/servidor, por lo que permite trabajar como servidor multiusuario y de subprocesamiento múltiple, o sea, cada vez que se crea una conexión con el servidor, el programa servidor establece un proceso para manejar la solicitud del cliente, controlando así el acceso simultáneo de un gran número de usuarios a los datos y asegurando el acceso a usuarios autorizados solamente. Es uno de los sistemas gestores de bases de datos más utilizado en la actualidad, utilizado por grandes corporaciones como Yahoo! Finance, Google, Motorola, entre otras.

Microsoft SQL Server



SQL Server es un sistema gestor de base de datos relacionales producido por Microsoft. Es un sistema cliente/servidor que funciona como una extensión natural del sistema operativo Windows. Entre otras características proporciona integridad de datos, optimización de consultas, control de concurrencia y backup y recuperación.
Es relativamente fácil de administrar a través de la utilización de un entorno gráfico para casi todas las tareas de sistema y administración de bases de datos. Utiliza servicios del sistema operativo Windows para ofrecer nuevas capacidades o ampliar la base de datos, tales como enviar y recibir mensajes y gestionar la seguridad de la conexión. Es fácil de usar y proporciona funciones de almacenamiento de datos que sólo estaban disponibles en Oracle y otros sistemas gestores de bases de datos más caros.

PostgreSQL





PostgreSQL es un Sistema Gestor de Bases de Datos Relacionales Orientadas a Objetos, derivado de Postgres, desarrollado en la Universidad de California, en el Departamento de Ciencias de la Computación de Berkeley. Es un gestor de bases de datos de código abierto, brinda un control de concurrencia multi-versión (MVCC por sus siglas en inglés) que permite trabajar con grandes volúmenes de datos; soporta gran parte de la sintaxis SQL y cuenta con un extenso grupo de enlaces con lenguajes de programación.
Posee características significativas del motor de datos, entre las que se pueden incluir las subconsultas, los valores por defecto, las restricciones a valores en los campos (constraints) y los disparadores (triggers). Ofrece funcionalidades en línea con el estándar SQL92, incluyendo claves primarias, identificadores entrecomillados, conversión de tipos y entrada de enteros binarios y hexadecimales.
El código fuente se encuentra disponible para todos sin costo alguno. Está disponible para 34 plataformas con la última versión estable.Es totalmente compatible con ACID (acrónimo de Atomicity, Consistency, Isolation and Durability; en español: Atomicidad, Consistencia, Aislamiento y Durabilidad).
Posee una integridad referencial e interfaces nativas para lenguajes como ODBC, JDBC, C, C++, PHP, PERL, TCL, ECPG; PYTHON y RUBY. Funciona en todos los sistemas operativos Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), y Windows.
Debido a la liberación de la licencia, PostgreSQL se puede usar, modificar y distribuir de forma gratuita para cualquier fin, ya sea privado, comercial o académico.

2.  Resumen

Los principales objetivos de un sistema gestor de bases de datos son:
Independencia lógica y física de los datos: se refiere a la capacidad de modificar una definición de esquema en un nivel de la arquitectura sin que esta modificación afecte al nivel inmediatamente superior.

Redundancia mínima: se trata de usar la base de datos como repositorio común de datos para distintas  aplicaciones.

Acceso concurrente por parte de múltiples usuarios: control de concurrencia mediante técnicas de bloqueo o cerrado de datos  accedidos.

Una base de datos típica conlleva la existencia de tres tipos de usuario con relación a su diseño, desarrollo y uso:

El administrador de bases de datos (DBA: Database Administrator): diseña y mantiene la DB.

El desarrollador de aplicaciones (programador): implementa las transacciones e interfaces.

Componentes

Ø  Modelo jerárquico

Ø  Modelo de red

Ø  Modelo Relacional

Ø  Modelo orientado a objetos


3.  Summary
The main objectives of a database management system are:
Logical and physical independence of data: refers to the ability to modify a schema definition at one level of the architecture without this modification affecting the next higher level.

Minimal redundancy: it is a question of using the database as a common data repository for different applications.

Concurrent access by multiple users: concurrency control by means of locking techniques or closed access data.
A typical database entails the existence of three types of users in relation to their design, development and use:
The database administrator (DBA: Database Administrator): designs and maintains the DB.
The application developer (programmer): implements the transactions and interfaces.

Components

Ø  Hierarchical model
Ø  Network model
Ø  Relational Model
Ø  Object-oriented model

4.  Recomendaciones

Ø  Por muy bien que realices el planteamiento inicial de la base de datos, con el paso del tiempo, seguramente tengas tablas en desuso.  ¡Eliminalas!  Tener tablas en desuso es muy parecido a guardar cosas que no usas en un cajón.

Ø   Optimiza los índices. Tener una buena relación de índices entre tablas es básico para las búsquedas relacionales funcionen correctamente. Agrega índices a las tablas y, sobre ellas, utiliza las sentencias de consulta (SELECT, WHERE…).

Ø    También resulta recomendable acostumbrarse a verificar periódicamente el registro de consultas (o “queries”) lentas para identificar aquellas que deben ser optimizadas.

Ø  No mantengas consultas abiertas en tu código y realiza las querys justas. Así,evitamos saturar la memoria de la máquina.

Ø    En general, no almacenes imágenes en la base de datos. Sólo referencias a la ruta en la que se encuentran y metadatos para identificarlas.

Ø    No uses nombres complejos en las claves y campos de las tablas. ¡Simplifica! Por ejemplo, en la tabla Clientes, es  mejor utilizar nombre en vez de nombre_cliente.


5.   Conclusiones

Pese a la aparición de los métodos de bases de datos distribuidas ya hace años, parece que el salto de lo centralizado a lo distribuido a escala comercial está por venir. Todavía no se ha extendido suficientemente el esquema distribuido, pero se espera que próximamente se produzca el avance definitivo. Considero los dos componentes básicos de los sistemas de bases de datos distribuidos y pienso en la situación actual de la informática.
SQL significó un gran avance para este fin, almacenar y clasificar información, además de que, gracias a su aparición, hoy en día existe una gran variedad de SGBD basados en el lenguaje SQL, como MySQL, PostgreSQL, Oracle, entre otros. Desde su estandarización, casi todos los programas que trabajan con bases de datos, utilizan este lenguaje, con diferentes variaciones y funciones, según el tipo de software y su objetivo.

6.  Apreciación del Equipo

Ø  En la BD, siempre es necesario el SGBD para que ayuden a administrar las BD y a almacenar, manipular y recuperar datos en las computadoras.
Ø El SGBD ayuda a facilitar la comunicación entre el usuario y la base de datos. Esto se logra porque el SGBD proporciona al usuario, los medios necesarios para poder obtener información, introducir nuevos datos y actualizar los ya existentes.
Ø 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.

7.  Glosario de Términos

Transacciones: Una transacción es una interacción con una estructura de datos compleja, compuesta por varios procesos que se han de aplicar uno después del otro.
Redundancia de datos:  la redundancia hace referencia al almacenamiento de los mismos datos varias veces en diferentes lugares
Inconsistencia de datos:  La inconsistencia consiste en que no todas las copias redundantes contienen la misma información.
Estructura arbórea: estructura (dibujada como árbol invertido o raíz).
Restaurar Sistema: es una herramienta implementada en Windows que permite devolver al ordenador a un estado anterior. Recopila los archivos para quitarse y el estado que estaba el sistema y luego se ve un cargador que va devolviendo al equipo su estado anterior.

Concurrencia de procesos: Dos o más procesos decimos que son concurrentes, paralelos, o que se ejecutan concurrentemente, cuando son procesados al mismo tiempo, es decir, que para ejecutar uno de ellos, no hace falta que se haya ejecutado otro.

Lenguaje COBOL: Lenguaje de programación universal que pudiera ser usado en cualquier ordenador, y que estuviera orientado principalmente a los negocios.

Mainframe: Un Mainframe es un ordenador de grandes dimensiones pensado principalmente para el tratamiento de grandísimos volúmenes de datos.
Backup: Se refiere a la copia y archivo de datos de la computadora de modo que se puede utilizar para restaurar la información original después de una eventual pérdida de datos.

8.     Linkografías



Aqui les dejo el Link de las Diapositivas del tema