domingo, 18 de noviembre de 2012

Historia de los Sistemas de Bases de Datos



El término bases de datos fue escuchado por primera vez  en un simposio celebrado en California en 1963.
En una primera aproximación, se puede decir que una base de datos es un conjunto de información relacionada que se encuentra agrupada o estructurada.
Desde el punto de vista informático, una base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos.
Por su parte, un sistema de Gestión de Bases de datos es un tipo de software muy específico dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan; o lo que es lo mismo, una agrupación de programas que sirven para definir, construir y manipular una base de datos, permitiendo así almacenar y posteriormente acceder a los datos de forma rápida y estructurada.Actualmente, las bases de datos están teniendo un impacto decisivo sobre el creciente uso de las computadoras
         Orígenes:
Los orígenes de las bases de datos se remontan a la Antigüedad donde ya existían bibliotecas y toda clase de registros. Además también se utilizaban para recoger información sobre las cosechas y censos. Sin embargo, su búsqueda era lenta y poco eficaz y no se contaba con la ayuda de máquinas que pudiesen reemplazar el trabajo manual.
Posteriormente, el uso de las bases de datos se desarrolló a partir de las necesidades de almacenar grandes cantidades de información o datos. Sobre todo, desde la aparición de las primeras computadoras, el concepto de bases de datos ha estado siempre ligado a la informática.
En 1884 Herman Hollerith creó la máquina automática de tarjetas perforadas, siendo nombrado así el primer ingeniero estadístico de la historia. En esta época, los censos se realizaban de forma manual.




·         Ante esta situación, Hollerith comenzó a trabajar en el diseño de una maquina tabuladora o censadora, basada en tarjetas perforadas.


·         Posteriormente, en la década de los cincuenta se da origen a las cintas magnéticas, para automatizar la información y hacer respaldos. Esto sirvió para suplir las necesidades de información de las nuevas industrias. Y a través de este mecanismo se empezaron a automatizar información, con la desventaja de que solo se podía hacer de forma secuencial.



·         Década de 1960:
·         Posteriormente en la época de los sesenta, las computadoras bajaron los precios para que las compañías privadas las pudiesen adquirir; dando paso a que se popularizara el uso de los discos, cosa que fue un adelanto muy efectivo en la época, debido a que a partir de este soporte se podía consultar la información directamente, sin tener que saber la ubicación exacta de los datos.
·         En esta misma época se dio inicio a las primeras generaciones de bases de datos de red y las bases de datos jerárquicas, ya que era posible guardar estructuras de datos en listas y arboles.
·         Otro de los principales logros de los años sesenta fue la alianza de IBM y American Airlines para desarrollar SABRE, un sistema operativo que manejaba las reservas de vuelos, transacciones e informaciones sobre los pasajeros de la compañía American Airlines.
·         Y, posteriormente, en esta misma década, se llevo a cabo el desarrollo del IDS desarrollado por Charles Bachman ( que formaba parte de la CODASYL) supuso la creación de un nuevo tipo de sistema de bases de datos conocido como modelo en red que permitió la creación de un standard en los sistemas de bases de datos gracias a la creación de nuevos lenguajes de sistemas de información.
·         CODASYL (Conference on Data Systems Languages) era un consorcio de industrias informáticas que tenían como objetivo la regularización de un lenguaje de programación estándar que pudiera ser utilizado en multitud de ordenadores.
·         Los miembros de este consorcio pertenecían a industrias e instituciones gubernamentales relacionadas con el proceso de datos, cuya principal meta era promover un análisis, diseño e implementación de los sistemas de datos más efectivos; y aunque trabajaron en varios lenguajes de programación como COBOL, nunca llegaron a establecer un estándar fijo, proceso que se llevo a cabo por ANSI.

·         Década de 1970:
·         Por lo que respecta a la década de los setenta, Edgar Frank Codd, científico informático ingles conocido por sus aportaciones a la teoría de bases de datos relacionales, definió el modelo relacional a la par que publicó una serie de reglas para los sistemas de datos relacionales a través de su artículo “Un modelo relacional de datos para grandes bancos de datos compartidos”.



·         Este hecho dio paso al nacimiento de la segunda generación de los Sistemas Gestores de Bases de Datos.
·         Como consecuencia de esto, durante la década de 1970, Lawrence J. Ellison, más conocido como Larry Ellison, a partir del trabajo de Edgar F. Codd sobre los sistemas de bases de datos relacionales, desarrolló el Relational Software System, o lo que es lo mismo, lo que actualmente se conoce como Oracle Corporation, desarrollando así un sistema de gestión de bases de datos relacional con el mismo nombre que dicha compañía.


·         Posteriormente en la época de los ochenta también se desarrollará el SQL (Structured Query Language) o lo que es lo mismo un lenguaje de consultas o lenguaje declarativo de acceso a bases de datos relacionales que permite efectuar consultas con el fin de recuperar información de interés de una base de datos y hacer cambios sobre la base de datos de forma sencilla; además de analiza grandes cantidades de información y permitir especificar diversos tipos de operaciones frente a la misma información, a diferencia de las bases de datos de los años ochenta que se diseñaron para aplicaciones de procesamiento de transacciones.
             Década de 1980:
·         Por su parte, a principios de los años ochenta comenzó el auge de la comercialización de los sistemas relacionales, y SQL comenzó a ser el estándar de la industria, ya que las bases de datos relacionales con su sistema de tablas (compuesta por filas y columnas) pudieron competir con las bases jerárquicas y de red, como consecuencia de que su nivel de programación era sencillo y su nivel de programación era relativamente bajo.



·         Década años 1990:
·         En la década de 1990 la investigación en bases de datos giró en torno a las bases de datos orientadas a objetos. Las cuales han tenido bastante éxito a la hora de gestionar datos complejos en los campos donde las bases de datos relacionales no han podido desarrollarse de forma eficiente. Así se desarrollaron herramientas como Excel y Access del paquete de Microsoft Office que marcan el inicio de las bases de datos orientadas a objetos.










·         Así se creó la tercera generación de sistemas gestores de bases de datos.
·         Fue también en esta época cuando se empezó a modificar la primera publicación hecha por ANSI del lenguaje SQL y se empezó a agregar nuevas expresiones regulares, consultas recursivas, triggers y algunas características orientadas a objetos, que posteriormente en el siglo XXI volverá a sufrir modificaciones introduciendo características de XML, cambios en sus funciones, estandarización del objeto sequence y de las columnas autonuméricas. Y además, se creará la posibilidad de que SQL se pueda utilizar conjuntamente con XML, y se definirá las maneras de cómo importar y guardar datos XML en una base de datos SQL. Dando asi, la posibilidad de proporcionar facilidades que permiten a las aplicaciones integrar el uso de XQuery (lenguaje de consulta XML) para acceso concurrente a datos ordinarios SQL y documentos XML. Y posteriormente, se dará la posibilidad de usar la clausula order by.
·         Aunque el boom de la década de los noventa será es el nacimiento del World Wide Web a finales de la década, ya que a través de este se facilitará la consulta a bases de datos.


·         SIGLO XXI:
·         En la actualidad, las tres grandes compañías que dominan el mercado de las bases de datos son IBM, Microsoft y Oracle. Por su parte, en el campo de internet, la compañía que genera gran cantidad de información es Google. Aunque existe una gran variedad de software que  permiten crear y manejar bases de datos con gran facilidad, como por ejemplo LINQ, que es un proyecto de Microsoft que agrega consultas nativas semejantes a las de SQL a los lenguajes de la plataforma .NET. El objetivo de este proyecto es permitir que todo el código hecho en Visual Studio sean también orientados a objetos; ya que antes de LINQ la manipulación de datos externos tenía un concepto más estructurado que orientado a objetos; y es por eso que trata de facilitar y estandarizar el acceso a dichos objetos.
      Cabe destacar que Visual Studio es un entorno de desarrollo integrado para sistemas operativos Windows que soporta varios lenguajes de programación tales como Visual C++, Visual#, Visual J#, ASP.NET y Visual Basic.NET, aunque se están desarrollando las extensiones necesarias para otros, cuyo objetivo es permitir crear aplicaciones, sitios y aplicaciones web, así como servicios web a cualquier entorno que soporte la plataforma .Net, creando así aplicaciones que intercomuniquen entre estaciones de trabajo, páginas web y dispositivos móviles.

Sistemas de Bases de Datos en contraposición a Sistemas de archivos.



Desventajas del Sistema de Archivos

  • Redundancia e inconsistencia de datos. Existen datos que pueden repetirse en diferentes lugares o archivos, esto provoca que, teniendo esa duplicidad de datos, el almacenamiento y el costo (en recursos del sistema) de acceso sean más altos. Inconsistencia de datos se presentará porque las copias de los mismos datos en diferentes archivos pueden no coincidir, pues si en un archivo se hicieron cambios de los datos, en los otros archivos donde estaban los mismos datos no son modificados automáticamente.
  • Dificultad en el acceso a los datos. Cuando se requiere de ciertos datos diferentes de archivos diferentes, la obtención, consulta y modificación de los datos no puede hacerse directamente de forma práctica y eficiente. Tendrían que desarrollarse sistemas de recuperación de datos para realizar esa operación específica, o desarrollar un sistema de recuperación de datos para uso general y ajustarlo de acuerdo a las necesidades.
  • Aislamiento de datos. Debido a que los datos están dispersos en varios archivos, y los archivos pueden estar en diferentes formatos, es difícil escribir nuevos programas de aplicación para recuperar los datos apropiados.
  • Problemas de integridad. Los valores de los datos almacenadosen la BD deben satisfacer ciertas restricciones de consistencia. Los desarrolladores hacen cumplir estas restricciones en el sistema añadiendo código apropiado en las diversas aplicaciones. Sin embargo, cuando se añaden nuevas restricciones es difícil cambiar los programas para hacer que se cumplan. Esto se complica cuando las restricciones implican diferentes elementos de datos de diferentes archivos.
  • Problemas de atomicidad. En muchas aplicaciones es crucial asegurar que, cuando ocurra un fallo y sea detectado, se restauren los datos a un estado de consistencia que existía antes del fallo. Es difícil asegurar esta propiedad en un sistema de archivos tradicional.
  • Anomalías en el acceso concurrente. en estos sistemas un entorno en el que permita a múltiples usuarios actualizar los datos de un mismo archivo simultáneamente puede dar lugar a datos inconsistentes o un estado incorrecto. Problemas de seguridad. No todos los usuarios de un sistema de bases de datos deberían poder acceder a todos los datos. En estos sistemas es difícil garantizar tales restricciones de seguridad.

Ventaja Del Sistema De Base De Datos


  • Ventajas del Sistema de Bases de Datos

    · Control sobre la redundancia de datos. Los sistemas de ficheros almacenan varias copias de los mismos datos en ficheros distintos. Esto hace que se desperdicie espacio de almacenamiento, además de provocar la falta de consistencia de datos. En los sistemas de bases de datos todos estos ficheros están integrados, por lo que no se almacenan varias copias de los mismos datos. Sin embargo, en una base de datos no se puede eliminar la redundancia completamente, ya que en ocasiones es necesaria para modelar las relaciones entre los datos, o bien es necesaria para mejorar las prestaciones.
    ·    Consistencia de datos. Eliminando o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya inconsistencias. Si un dato está almacenado una sola vez, cualquier actualización se debe realizar sólo una vez, y está disponible para todos los usuarios inmediatamente. Si un dato está duplicado y el sistema conoce esta redundancia, el propio sistema puede encargarse de garantizar que todas las copias se mantienen consistentes. Desgraciadamente, no todos los SGBD de hoy en día se encargan de mantener automáticamente la consistencia.
    ·  Más información sobre la misma cantidad de datos. Al estar todos los datos integrados, se puede extraer información adicional sobre los mismos.
    ·    Compartición de datos. En los sistemas de ficheros, los ficheros pertenecen a las personas o a los departamentos que los utilizan. Pero en los sistemas de bases de datos, la base de datos pertenece a la empresa y puede ser compartida por todos los usuarios que estén autorizados. Además, las nuevas aplicaciones que se vayan creando pueden utilizar los datos de la base de datos existente.
    ·                     Mantenimiento de estándares. Gracias a la integración es más fácil respetar los estándares necesarios, tanto los establecidos a nivel de la empresa como los nacionales e internacionales. Estos estándares pueden establecerse sobre el formato de los datos para facilitar su intercambio, pueden ser estándares de documentación, procedimientos de actualización y también reglas de acceso.

    Ventajas por la existencia del SGBD (Sistemas Gestores de Bases de Datos)
    ·                     Mejora en la integridad de datos. La integridad de la base de datos se refiere a la validez y la consistencia de los datos almacenados. Normalmente, la integridad se expresa mediante restricciones o reglas que no se pueden violar. Estas restricciones se pueden aplicar tanto a los datos, como a sus relaciones, y es el SGBD quien se debe encargar de mantenerlas.
    ·                     Mejora en la seguridad. La seguridad de la base de datos es la protección de la base de datos frente a usuarios no autorizados. Sin unas buenas medidas de seguridad, la integración de datos en los sistemas de bases de datos hace que éstos sean más vulnerables que en los sistemas de ficheros. Sin embargo, los SGBD permiten mantener la seguridad mediante el establecimiento de claves para identificar al personal autorizado a utilizar la base de datos. Las autorizaciones se pueden realizar a nivel de operaciones, de modo que un usuario puede estar autorizado a consultar ciertos datos pero no a actualizarlos, por ejemplo.
    ·  Mejora en la accesibilidad a los datos. Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba una aplicación que realice tal tarea.
    ·  Mejora en la productividad. El SGBD proporciona muchas de las funciones estándar que el programador necesita escribir en un sistema de ficheros. A nivel básico, el SGBD proporciona todas las rutinas de manejo de ficheros típicas de los programas de aplicación. El hecho de disponer de estas funciones permite al programador centrarse mejor en la función específica requerida por los usuarios, sin tener que preocuparse de los detalles de implementación de bajo nivel. Muchos SGBD también proporcionan un entorno de cuarta generación consistente en un conjunto de herramientas que simplifican, en gran medida, el desarrollo de las aplicaciones que acceden a la base de datos. Gracias a estas herramientas, el programador puede ofrecer una mayor productividad en un tiempo menor.
    · Mejora en el mantenimiento gracias a la independencia de datos. En los sistemas de ficheros, las descripciones de los datos se encuentran inmersas en los programas de aplicación que los manejan. Esto hace que los programas sean dependientes de los datos, de modo que un cambio en su estructura, o un cambio en el modo en que se almacena en disco, requiere cambios importantes en los programas cuyos datos se ven afectados. Sin embargo, los SGBD separan las descripciones de los datos de las aplicaciones. Esto es lo que se conoce como independencia de datos, gracias a la cual se simplifica el mantenimiento de las aplicaciones que acceden a la base de datos.
    ·  Aumento de la concurrencia. En algunos sistemas de ficheros, si hay varios usuarios que pueden acceder simultáneamente a un mismo fichero, es posible que el acceso interfiera entre ellos de modo que se pierda información o, incluso, que se pierda la integridad. La mayoría de los SGBD gestionan el acceso concurrente a la base de datos y garantizan que no ocurran problemas de este tipo.
    · Mejora en los servicios de copias de seguridad y de recuperación ante fallos. Muchos sistemas de ficheros dejan que sea el usuario quien proporcione las medidas necesarias para proteger los datos ante fallos en el sistema o en las aplicaciones. Los usuarios tienen que hacer copias de seguridad cada día, y si se produce algún fallo, utilizar estas copias para restaurarlos. En este caso, todo el trabajo realizado sobre los datos desde que se hizo la última copia de seguridad se pierde y se tiene que volver a realizar. Sin embargo, los SGBD actuales funcionan de modo que se minimiza la cantidad de trabajo perdido cuando se produce un fallo


sábado, 17 de noviembre de 2012

Sistema Manejador de Bases de Datos


  • SISTEMA MANEJADOR DE BASE DE DATOS(SMBD) (DBMS)
    Es un software de sistemas que tiene como propósito general facilitar el proceso de
    definir, construir y manipular bases de datos que se utilizan para diferentes tipos de
    aplicaciones.

    Componentes de software principales asociados a un SMDB :
             Generadores de aplicación.
             Lenguajes de cuarta generación (4GL).
             Software de consulta a la base de datos.
             Generadores de reportes y pantallas.
    Ejemplos de software: Informix 4GL, Oracle, SQL server...




    PROCESOS RELACIONADOS CON LOS SMBD:
    *Definir la base de datos significa la declaración de:
             Los tipos de datos
             La estructura
             Las restricciones de los datos a ser almacenados en la base de datos.
    * Crear o construir la base de datos: es el proceso de almacenar los datos en algún
    medio de almacenamiento, esto es controlado por el SMBD.
    * Manipular una base de datos incluye funciones como:
             Consultar la base de datos para obtener algunos datos específicos.
             Actualizar la base de datos para reflejar cambios en el minimundo.
             Generar reportes de los datos.
             Eliminar algunos datos





    CAPACIDADES QUE DEBE OFRECER UN SMBD:

             Control de redundancias.
             Restricción de accesos no autorizados
             Proporcionar múltiples interfaces de usuario.
             Representar relaciones complejas entre datos.
             Forzar el uso de restricciones de integridad.
             Proporcionar métodos de respaldos y recuperación.

    CUANDO NO UTILIZAR UN SMBD
    * La base de datos y aplicaciones son simples, bien definidas y se requieren
       pocos cambios.
    * No es necesario el acceso de múltiples usuarios a los datos.

    Los tres niveles de arquitectura de un SMBD:

    Nivel Externo: Vista del usuario de aplicación, definida por el usuario o el programador de
    Aplicaciones en consulta con el DBA.

    Nivel conceptual: Definido por el DBA

    Nivel Interno: Definido por el DBA para su optimización


    Las principales funciones que debe realizar un S.G.B.D. son:

    ·        La definición de los datos.
    ·        La manipulación de los datos.
    ·        Garantizar la seguridad e integridad de los datos.
    ·        La gestión de las transacciones y el acceso concurrente.


    Definición de datos

    Mediante el Lenguaje de Definición de datos (L.D.D.) el S.G.B.D. permite describir y definir los esquemas de la base de datos. Este lenguaje debe permitir:

    ·        La creación de objetos conceptuales
    ·        La descripción de estructuras físicas
    ·        La definición de vistas

    Para una base de datos existente, el L.D.D. debe permitir también:

    ·        La modificación de la descripción de objetos conceptuales
    ·        El borrado de objetos conceptuales
    ·        La modificación y borrado de caminos de acceso
    ·        La modificación de las vistas

    Un L.D.D. está compuesto por un conjunto de comandos que actúan sobre los objetos conceptuales y sobre los objetos físicos El conjunto de las descripciones de objetos de una base de datos se le conoce con el nombre de diccionario de datos.


    Manipulación de datos

    La función de manipulación de datos se encarga de todas las operaciones de intercambio de datos entre los usuarios y la base de datos. Esta función se hace con la ayuda del Lenguaje de Manipulación de datos (L.M.D.), que está compuesto por un conjunto de comandos que nos permiten la consulta o puesta al día (inserción, modificación y borrado) de los datos de una base de datos.

    Los L.M.D. funciona de forma diferente, según el modelo de datos:


    ·        En los modelos en red y jerárquicos son, lenguajes procedimentales (se indica que datos se quieren y como se van a obtener esos datos), es decir, los programadores deben indicar el camino a seguir para acceder a los datos solicitados.

    ·        En el modelo relacional son lenguajes declarativos o no procedimentales (se indica que datos se quieren pero no la forma de obtenerlos), y no es necesario indicar cómo se tiene que acceder a los datos, es suficiente indicar qué es lo que se desea obtener.


    Seguridad e integridad de los datos

    Se trata de garantizar la coherencia de los datos, comprobando que sólo los usuarios autorizados puedan efectuar las operaciones correctas sobre la base de datos. Esto se consigue mediante:

    ·        Un control sobre los usuarios que acceden a la base de datos y los tipos de operaciones que están autorizados a realizar. Este control se llama gestión de autorizaciones, y permite crear o borra usuarios y conceder o retirar derechos a efectuar determinados tipos de operaciones (por ejemplo: crear objetos, borrar objetos, modificar datos, etc.).

    ·        La validación de las operaciones realizadas con los datos. Este control se hace mediante un conjunto de reglas llamadas restricciones de integridad. Existen varios tipos de restricciones de integridad, como por ejemplo, las restricciones de integridad referencial, que imponen que las modificaciones realizadas sobre algunos datos, obliguen a realizar modificaciones de otros datos con los que están enlazados (por ejemplo, si se modifica el código de un artículo, se debería modificar ese código en todos los pedidos que soliciten el artículo).

    ·        Una protección de los datos contra los accesos malintencionados y los fallos. Los accesos malintencionado se suelen evitar con la asignación de palabras de paso (password) a los usuarios, la definición de vistas, protección física de los datos (encriptado de los datos). Con respecto a los fallos causados por manipulaciones incorrectas, o accidentes lógicos o físicos, los S.G.B.D. suelen disponer de utilidades de recuperación de los datos después de un fallo.

    La correcta utilización de todas estas operaciones de seguridad e integridad constituye una tarea esencial del Administrador de la base de datos (gestión de usuarios y sus derechos, gestión de vistas y recuperación después de un fallo).


    Gestión de transacciones y acceso concurrente

    El principal objetivo de la implantación de una base de datos en un sistema de información de una organización, es poner a disposición de un gran número de usuarios un conjunto integrado de datos. El S.G.B.D. debe proteger los datos cuando estos sean manipulados simultáneamente por diferentes usuarios.

    Una transacción se define como una unidad lógica de tratamiento (conjunto de órdenes) que aplicada a un estado coherente de la base de datos la deja, de nuevo, en un estado coherente, después de hacer las modificaciones. Una transacción solo se puede ejecutar completamente o ser anulada.

    Para controlar la ejecución simultanea de transacciones es necesario una buena gestión de acceso concurrente que controle que  la ejecución paralela de transacciones da el mismo resultado que una ejecución secuencial. Para controlar la ejecución paralela, la solución clásica consiste en bloquear momentáneamente los datos utilizados por una transacción hasta que finalice la actualización y las demás transacciones que demandan estos datos se ponen en espera hasta que quedan desbloqueados.

    Un parámetro importante que afecta al rendimiento es el nivel de bloqueo de datos, llamadogranularidad del bloque. Esta granularidad puede ser lógica (toda la base, una tabla, una línea) o física (segmento, fichero, página).

    La consecuencia de esta técnica de bloqueos es el riesgo del interbloqueo (llamado bloqueo mortal), que sucede cuando dos o más transacciones se encuentran a la espera de que queden liberados datos que tiene bloqueados otra transacción que espera por los datos que están bloqueados por las transacciones anteriores. El S.G.B.D. debe estar capacitado para detectar esta situación y desbloquearla.


    Otras funciones que deben realizar los S.G.B.D. son:

    ·   Capacidad de auditoria: Para el administrador de la base de datos es muy importante conocer quien accede a la base de datos y que operaciones realiza. Un buen S.G.B.D debe poder proporcionarle esa información.

    ·   Garantizar un tiempo de respuesta idóneo para el diálogo entre los usuarios y la base de datos en los procesos en línea.