sábado, 14 de marzo de 2015

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 dato, 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.
Estos sistemas también proporcionan métodos para mantener la integridad de los datos, para administrar el acceso de usuarios a los datos y para recuperar la información si el sistema se corrompe. Permiten presentar la información de la base de datos en variados formatos. La mayoría incluyen un generador de informes. También pueden incluir un módulo gráfico que permita presentar la información con gráficos y tablas.
Hay muchos tipos distintos según cómo manejen los datos y muchos tamaños distintos de acuerdo a si operan en computadores personales y con poca memoria o 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 simplifican la tarea de construir las aplicaciones. También simplifican la interrogación y la presentación de la información. Un SGBD 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.

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 de bases de datos de propósito general; a mediados de 1960 ya había algunos sistemas 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 simples como «buscar todas las personas en Japón» el programa debía recorrer todos los datos para escoger los registros correctos. No existían los conceptos «buscar» ni «encontrar», algo 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 árbores 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 posteriormente 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 navegado.

Sistemas relacionales de 1970


Edgar Codd trabajaba en IBM, en una de esas oficinas periféricas que estaba dedicada principalmente al desarrollo de discos duros. Estaba descontento con el modelo de navegación CODASYL, principalmente con la falta de operación de búsqueda. En 1970 escribió algunos artículos en los que perfilaba una nueva aproximación que culminó en el documento "A Relational Model of Data for Large Shared Data Banks".


En este artículo descubrió un nuevo sistema para almacenar y trabajar con grandes bases de datos. En vez de almacenar registros de tipo arbitrario en una lista encadenada como en CODASYL, la idea de Codd era usar una "tabla" de registros de tamaño fijo. Una lista encadenada tiene muy poca eficiencia al almacenar datos dispersos donde algunos de los datos de un registro pueden dejarse en blanco. El modelo relacional resuelve esto dividiendo los datos en una serie de tablas -o relaciones- normalizadas, en las que los elementos optativos han sido extraídos de la tabla principal para que ocupen espacio sólo si lo necesitan. En este modelo relacional los registros relacionados se enlazan con una "clave".
Un uso común de las bases de datos puede mantener una agenda de usuarios, su nombre, información de acceso, dirección y teléfono. En la solución de navegación todos esos datos estaría localizados en un solo registro, y las características no usadas simplemente no estarían en la base de datos. En la solución relacional, los datos estarían normalizados en una tabla de usuario, una de teléfono y una de dirección, en la que serían añadidos registros si tuviéramos que incorporar teléfono y dirección.
Reconciliar toda la información es la clave de este sistema. En el modelo relacional, una parte de la información se usa como clave, identificando de manera biunívoca un registro concreto. Cuando se recopila información acerca de un usuario, se accederá a la información de las tablas optativas buscando mediante esa clave. Por ejemplo si el nombre de usuario es único, la dirección y número de teléfono de ese usuario será guardada con el nombre de usuario como clave. La recopilaciòn de esta información en un solo registro es algo para lo que los lenguajes tradicionales no están pensados.
Así como el enfoque de navegación requiere programas que realicen bucles para recolectar registros, el enfoque relacional también los requerirá. La solución de Codd para los necesarios bucles se basa en un lenguaje orientado a conjuntos, una sugerencia que más tarde cristalizaría en el ubicuo SQL. Planteó el uso de una rama del álgebra llamada cálculo de tuplas, y demonstró que con ella se podrían realizar todas las operaciones típicas sobre una base de datos, además de extraer conjuntos de datos de una forma sencilla.
El artículo de Codd cayo en manos de dos personas en Berkeley, Eugene Wong y Michael Stonebraker. Ellos comenzaron un proyecto llamado INGRES con fondos asignados a un proyecto de base de datos geográfica programada por los estudiantes. Comenzando en 1973, INGRES produjo sus primeras versiones de prueba que estuvieron listas para uso general en 1979. INGRES era muy similar a system R de IBM en varios aspectos, incluyendo un lenguaje para acceso a los datos, conocido como QUEL. Con el paso del tiempo, INGRES adopto el estándar SQL.
IBM realizó una implementación de prueba del modelo relacional -PRTV- y una de producción -Business System 12- ambas descontinuadas. Honeywell escribió MRDS para Multics, y aparecen también dos nuevas implementaciones: Alphora Dataphor y ReI. La mayoría de las demás implementaciones de SGBD llamados relacionales son en realidad SGBD SQL.

Sistemas SQL de finales de la década 1970


IBM comenzó a trabajar a principios de 1970 en un prototipo lejanamente basado en los conceptos de Codd llamándolo System R. La primera versión estuvo lista en 1974/5, y comenzó así el trabajo en sistemas multi-tabla, en los que los datos podían digregarse de modo que toda la información de un registro (alguna de la cual es opcional) no tiene que estar almacenada en un único trozo grande. Las versiones multi-usuario siguientes fueron probadas por los usuarios en 1978 y 1979, tiempo por el que un lenguaje SQL había sido estandarizado. Las ideas de Codd se revelaron como operativas y superiores a las de CODASYL, lanzando a IBM al desarrollo de una verdadera versión de producción de System R, conocido como SQL/DS, y posteriormente como Database 2 (DB2).
Muchos de los técnicos de INGRES estaban seguros del éxito comercial del sistema, y formaron sus propias compañías para comercializar el desarrollo pero con un interfaz SQL. Sybase, Informix, NonStop SQL y la misma INGRES se vendían como derivados del INGRES original en los años 1980. Incluso el SQL Sever de Microsoft está basado en Sybase, y por consiguiente en INGRES. Sólo Larry Ellison -el fundador de Oracle- comenzó un nuevo camino basado en el artículo de IBM sobre System R, y aventajó a IBM sacando al mercado su primera versión en 1978.
Stonebraker aplicó las lecciones de INGRES al desarrollo de una nueva base de datos -Postgres- conocida ahora como PostgreSQL. PostgreSQL se utiliza para muchas aplicaciones críticas (los registros de dominios.org y.info lo usan para su almacenamiento primario, así como grandes compañías e instituciones financieras).
En Suecia, el artículo de Codd generó la base de datos Mimer SQL en la universidad de Uppsala. En 1984 este proyecto se consolidó en una compañía independiente. A principios de 1980, Mimer introdujo la gestión de transacciones para dar robustez a las aplicaciones, una idea que fue recogida en muchos otros SGBD.

Sistemas orientados a objetos de 1980



Durante la década de 1980 el auge de la programación orientada a objetos influyó en el modo de manejar la información de las bases de datos. Programadores y diseñadores comenzaron a tratar los datos en las bases de datos como objetos. Esto quiere decir que si los datos de una persona están en la base de datos, los atributos de la persona como dirección, teléfono y edad se consideran que pertenecen a la persona, no son datos extraños. Esto permite establecer relaciones entre objetos y atributos, más que entre campos individuales.
Otro gran foco de atención durante la década fue el incremento de velocidad y fiabilidad en el acceso. En 1989, dos profesores de la Universidad de Wisconsin publicaron un artículo en una conferencia ACM en el que exponían sus métodos para mejorar las prestaciones de las bases de datos. La idea consistía en replicar la información importante -y más solicitada- en una base de datos temporal de pequeño tamaño con enlaces a la base de datos principal. Esto implicaba que se podía buscar mucho más rápido en la base de datos pequeña que en la grande. Su mejora de prestaciones llevó a la introducción de la indización, incorporado en la totalidad de los SGBD.

Sistemas NoSQL de 2000



El siglo XXI trajo una nueva tendencia en las bases de datos: el NoSQL. Esta tendencia introducía una línea no relacional significativamente diferentes de las clásicas. No requieren por lo general esquemas fijos, evitan las operaciones join almacenando datos denormalizados y están diseñadas para escalar horizontalmente. La mayor parte de ellas pueden clasificarse como almacenes clave-valor o bases de datos orientadas a documentos.
Recientemente ha habido una gran demanda de bases de datos distribuidas con tolerancia a particiones, pero de acuerdo con el teorema CAP no es posible conseguir un sistema distribuido que simultáneamente proporcione consistencia, disponibilidad y tolerancia al particionado. Un sistema distribuido puede satisfacer sólo dos de las tres restricciones a la vez. Por dicha razón muchas de las bases de datos NoSQL usan la llamada consistencia eventual para proporcionar disponibilidad y tolerancia al particionado, con un nivel máximo de consistencia de datos.
Entre las aplicaciones más populares encontramos MongoDB, MemcacheDB, Redis, CouchDB, Hazelcast, Apache Cassandra y HBase, todas ellas de código abierto.

Sistemas XML 2010



las Bases de Datos XML forman un subconjunto de las Bases de Datos NoSQL. Todas ellas usan el formato de almacenamiento XML, que está abierto, legible por humanos y máquinas y ampliamente usado para interoperabilidad.
En esta categoría encontramos: BaseX, eXist, MarkLogic Server, MonetDB/XQuery, Sedna.

viernes, 13 de marzo de 2015

Historia de las Bases de Datos

Tuvieron sus orígenes en 1960 - 1962, cuando se empezaron a usar las maquinas que codificaban la información en tarjetas perforadas por medio de agujeros. Las bases de datos se crean con el objetivo de almacenar grandes cantidades de datos que antes se almacenaba en libros, lo que era lento, costoso y complejo (cualquier actualización a realizar, había que hacerla en cada uno de los libros en los que apareciera dicha información a modificar).

Las primeras bases de datos manejaban ficheros que eran almacenados en tarjetas o soportes magnéticos. Cuando los ordenadores evolucionan, aparecen las cintas y los discos, a la vez que las maquinas son dotadas de mucha mas potencia y facilidad de manipulación, es por tanto en ese momento cuando las bases de datos comienzan a ser realmente útiles.

En 1970 se convoca una Conferencia de Lenguajes de Programación y se establece un modelo llamado CODASYL (Modelo para el tratamiento de bases de datos que fue publicado por E. Cod en 1970. Cod, propuso una forma de organizar las bases de datos mediante un modelo matemático lógico.

¿Qué es una Base de Datos?

Es un administrador de datos relacionados lógicamente entre si, en la forma de cómo están organizados es la que lo convierte en una base de datos.

ay cuatro modelos principales de bases de datos: el modelo jerárquico, el modelo en red, el modelo relacional (el más extendido hoy en día; los datos se almacenan en tablas a los que se accede mediante consultas escritas en SQL) y el modelo de bases de datos deductivas. Otra línea de investigación en este campo son las bases de datos orientadas a objeto, o de objetos persistentes.

Su objetivo es el de automatizar:

  • El Mantenimiento
  • Cualquier informe de información
  • Cualquier consulta sobre dicha información
  • Elementos de una Base de Datos
    • Datos: Es la parte esencial de la información, es decir, la información que llega a la base de datos.
    • Atributos: Son los diferentes campos que conforman la estructura de una base de datos.
    • Campos: Es la unidad más pequeña de datos.
    • Registro: Es un conjunto de campos o atributos relacionados entre sí.
    • Archivo: Es un conjunto de registros relacionados.
    • Tipos de Base de Datos
    • Los tipos de Base de Datos son tres:
      • Base de Datos Jerárquica
      Es aquella donde los datos se presentan en nivel múltiples que represente con raíz y sus ramificaciones.
      • Bases de Datos Red
      Es aquella que permite la conexión de los nodos en forma multidireccional, por lo que cada nodo puede tener varios dueños a la vez.
      • Base de Datos Relacional
      En informática, tipo de base de datos o sistema de administración de bases de datos, que almacena información en tablas (filas y columnas de datos) y realiza búsquedas utilizando los datos de columnas especificadas de una tabla para encontrar datos adicionales en otra tabla. En una base de datos relacional, las filas representan registros (conjuntos de datos acerca de elementos separados) y las columnas representan campos (atributos particulares de un registro). Al realizar las búsquedas, una base de datos relacional hace coincidir la información de un campo de una tabla con información en el campo correspondiente de otra tabla y con ello produce una tercera tabla que combina los datos solicitados de ambas tablas. Por ejemplo, si una tabla contiene los campos NÚM-EMPLEADO, APELLIDO, NOMBRE y ANTIGÜEDAD y otra tabla contiene los campos DEPARTAMENTO, NÚM-EMPLEADO y SALARIO, una base de datos relacional hace coincidir el campo NÚM-EMPLEADO de las dos tablas para encontrar información,
      Como por ejemplo los nombres de los empleados que ganan un cierto salario o los departamentos de todos los empleados contratados a partir de un día determinado. En otras palabras, una base de datos relacional utiliza los valores coincidentes de dos tablas para relacionar información de ambas. Por lo general, los productos de bases de datos para microcomputadoras o microordenadores son bases de datos relaciónales.
    • Como se relacionan las bases de datos
    • Solo puede haber relación entre una tabla padre y otra tabla hija, de modo que no se puede establecer la relación directa entre tres tablas
    • Tipos de Datos
    • Los Tipos de Datos de una Base se dividen en dos estas son:
      • Las de Entrada
      Se refiere a la información que entra al sistema por primera vez. Esta información podría dar pie a una modificación de los datos persistentes, pero en principio no forma parte de la base de datos propiamente dicha.
      • Las de Salida
      Se refiere a mensajes y resultados que emanan del sistema. Una vez más, esta información podría derivarse de los datos persistentes, pero no se le considera en si como parte de la Base de Datos.
    • Por que utilizar una Base de Datos
      • Es Compacto: No hacen falta archivos de papeles que pudieran ocupar mucho espacio.
      • Es Rápido: La máquina puede obtener y modificar datos con mucha mayor velocidad que un ser humano. Así es posible satisfacer con rapidez consultas de casos particulares, del momento, sin necesidad de búsquedas visuales o manuales que refieren mucho tiempo.
      • Es menos Laborioso: Se elimina gran parte del tedio de manera archivos a mano. Las tareas mecánicas siempre serán mejor realizadas por las maquinas.
      • Es Actual: Se dispone en cualquier momento de información precisa y al día.
      • Cómoda: Al tener la información en un mismo sitio, ahorraremos tiempo y trabajo
      • Otras ventajas de las bases de datos
        • Disminuir la Redundancia
        • Compartición de Datos
        • Posibilidad de aplicar restricciones de seguridad
        • Posibilidad de mantener la integridad
      • Disminuir la Redundancia
      • Definimos redundancia como la duplicación de datos.
        La duplicación de datos genera a su vez una duplicación del trabajo a la hora de mantenerlos y actualizarlos. Por tanto las Bases de Datos al reducir la duplicación de datos, disminuyen el trabajo. Es fundamental hacer copia de seguridad de la base de datos cada vez que esta quede actualizada.
        Si compensa duplicar datos para aumentar la velocidad de la base de datos en cuestión, estaremos en una circunstancia en la que compensará la redundancia de dichos datos.
        También puede darse que una duplicación de datos sea obligatoria por las circunstancias. Pero al ser posible siempre es mejor intentar evitar la redundancia.
      • Compartición de Datos
      • Hablamos de datos actuales, ya que al ser centralizados, se puede tener acceso a los datos con la última actualización en prácticamente tiempo real.
      • Restricciones de Seguridad
      • Para mantener la seguridad a cerca del mantenimiento de los datos, los administradores de la Base de Datos, crean una jerarquía de acceso, que permitirá o prohibirá a los usuarios hacer una u otra acción sobre dicha base de datos.
      • Integridad
      • En una base de datos debemos mantener una coherencia. (No dejar que se introduzcan caracteres en un campo numérico). Esto se controlará mediante:
        • Máscaras.
        • Reglas de validación.
        • Tipos de datos para los campos de una tabla
            • TEXTO: Admite contenido de caracteres alfanuméricos, el tamaño estará entre 1 y 255 Bytes y el valor por defecto de esta tamaño es de 50 Bytes.
            • MEMO: Admite contenido de tipo alfanumérico, el tamaño esta entre 1 y 64.000 Bytes (64Kas).
            • NUMERICOS: Admite contenido de caracteres numéricos, el tamaño será entre 1, 2, 4 y 8 Bytes, dependiendo del formato de tipo numérico. El formato de tipo numérico puede ser de tipo: DOUBLE, FLOAT, INTEGER, etc... Este tipo de datos solo se utilizara cuando vayamos a realizar operaciones con ellos.
            • FECHA Y HORA: Solo admite horas y fechas. Este tipo de dato ocupa 8 Bytes.
            • MONEDA: Admite contenido de caracteres numéricos, dándoles a estos un formato automático para una moneda (Puntos de millar, símbolo de la peseta, etc...) dependiendo este formato de la configuración regional del panel de control. Este tipo de datos puede llevar decimales y se utilizara siempre que hablemos de cantidades monetarias.
            • AUTONUMERICO: Este campo lo crea Access con nuestro consentimiento de una manera automática, para establecerlo como una clave principal. Es de tipo numérico, y es incrementada automáticamente por Access cada vez que añadimos un nuevo registro a la tabla.
            • Este tipo de claves principal, no suelen usarse, ya que es preferible definir nuestras propias claves, aunque puede ser usada como una posible puerta trasera en alguna ocasión.
            • SI / NO: Tipo de datos boléanos, los valores boléanos pueden tener dos valores posibles, 1 o 0, donde 1 es verdadero y 0 es Falso.
            • OBJETO OLE: El contenido serán gráficos y el tamaño de estos puede ser de hasta 1 un Gigabyte. Hay que tener especial cuidado con estos objetos, pues al borrarlos de la base de datos, no se reduce el tamaño de la misma, mientras esta no sea compactada.
          Si damos de baja un registro en una base de datos Access, el programa debe compactar la base de datos para reducir y eliminar los espacios en blancos que este registro ha producido al ser eliminado. De este modo se reduce el tamaño de la base de datos. Lo mismo pasa con los objetos OLE.
          “Valores literales”
          • Numéricos: Se expresa con dígitos cuando sea necesario el separador decimal y cuando sea necesario el signo. Ej.:
          1234
          1234
          -1234
          -123,4
          • Texto: Se encierran entre comillas dobles “Hola”. Para representar el Enter recurrimos al valor 13 (código ASCII). Mediante el comando:
          Car$(13)
          Print “Hola” & Car$(13) & “Pepe”
          Car$(10)
          • Fecha: Un dato de tipo fecha y hora se encierra entre almohadillas. Ej.:
          #14/01/00#
          = Date ( ); Nos da la fecha actual.
          “Conclusión”
          En este trabajo pudimos apreciar lo que es una Base de Datos, como esta constituida, su historia y su surgimiento, sus tipos de datos y algunas ventajas de este.

          Si este fuera analizado profundamente no dejaría saber lo útil que pueden ser las Bases de Datos para la vida por que a través de este podemos disminuir la Redundancia, la Compartición de Datos, la posibilidad de aplicar restricciones de seguridad y la posibilidad de mantener la integridad.