Aplicaciones de las Bases de Datos Bases de datos estáticas Éstas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones. Bases de datos dinámicas Éstas son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización, borrado y adición de datos, además de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un sistema de información de un supermercado, una farmacia, un videoclub o una empresa. Según el contenido Bases de datos bibliográficas Solo contienen un subrogante (representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque si no, estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias —ver más abajo). Como su nombre lo indica, el contenido son cifras o números. Por ejemplo, una colección de resultados de análisis de laboratorio, entre otras. Bases de datos de texto completo Almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una colección de revistas científicas. Directorios Un ejemplo son las guías telefónicas en formato electrónico. Bases de datos o "bibliotecas" de información química o biológica Son bases de datos que almacenan diferentes tipos de información proveniente de la química, las ciencias de la vida o médicas. Se pueden considerar en varios subtipos: Las que almacenan secuencias de nucleótidos o proteínas. Las bases de datos de rutas metabólicas. Bases de datos de estructura, comprende los registros de datos experimentales sobre estructuras 3D de biomoleculas Bases de datos clínicas. Bases de datos bibliográficas (biológicas, químicas, médicas y de otros campos): PubChem, Medline, EBSCOhost. Arquitectura de la Base de Datos Los usuarios no tienen por qué conocer cómo están organizados y almacenados los datos. Por este motivo una base de datos debe presentar los datos de forma que el usuario pueda interpretarlos y modificarlos. Evidentemente esto no lo podemos aplicar a un informático que necesite saber dónde se encuentran físicamente los datos para poder tratarlos. Podemos destacar tres niveles principales según la visión y la función que realice el usuario sobre la base de datos: Nivel Interno: es el nivel más cercano al almacenamiento físico de los datos. Permite escribirlos tal y como están almacenados en el ordenador. En este nivel se diseñan los archivos que contienen la información, la ubicación de los mismos y su organización, es decir se crean los archivos de configuración. Nivel conceptual: En este nivel se representan los datos que se van a utilizar sin tener en cuenta aspectos como lo que representamos en el nivel interno. Nivel externo: es el más cercano al usuario. En este nivel se describen los datos o parte de los datos que más interesan a los usuarios. Estos tres niveles de visión de usuarios los proporcionan los sistemas gestores de base de datos. Una base de datos específica tiene un único nivel interno y un único nivel conceptual pero puede tener varios niveles externos. Niveles de Abstracción de la Base de Datos Nivel Físico: Es el nivel real de los datos almacenados. Es decir cómo se almacenan los datos, ya sea en registros, o como sea. Este nivel es usado por muy pocas personas que deben estar cualificadas para ello. Este nivel lleva asociada una representación de los datos, que es lo que denominamos Esquema Físico. Nivel Lógico: El siguiente nivel más alto de abstracción describe que datos se almacenan en la base de datos y que relaciones existen entre esos datos. La base de datos completa se describe así en términos de un número pequeño de estructuras relativamente simples en el nivel físico, los usuarios del nivel lógico no necesitan preocuparse de esta complejidad. Los administradores de base de datos, que deben decidir la información que se mantiene en la base de datos, usan el nivel lógico de abstracción. Nivel de Vistas: El nivel más alto de abstracción describe solo parte de la base de datos completa. A pesar del uso de estructuras más simples en el nivel lógico, queda algo de complejidad, debido a la variedad de información almacenada en una gran base de datos. Muchos usuarios del sistema de base de datos no necesitan toda esta información. En su lugar, tales usuarios necesitan acceder solo a una parte de la base de datos. Para que su interacción con el sistema se simplifique, se define la abstracción a nivel de vistas. El sistema puede proporcionar muchas vistas para la misma base de datos. Independencia Logica La Independencia Física De Datos debe permitir la realización de estructuras de almacenamiento de datos en forma independiente de su estructura lógica en la realidad Ventajas: los cambios en la estructura lógica no implican cambios en la de almacenamiento, las consideraciones sobre el mejor manejo de los datos almacenados quedan a cargo del SMBD y los cambio en la estructura de almacenamiento no implican cambios en los Programas de Aplicación. Es la capacidad para modificar el esquema físico sin provocar que los programas de aplicación tengan que rescribirse. Las modificaciones en el nivel físico son ocasionalmente necesarias para mejorar el funcionamiento. Independencia Fisica La Independencia lógica De Datos: debe permitir una cierta independencia entre los datos vistos por las aplicaciones y la estructura lógica de ellos en la realidad. Ventajas: soporte de la evolución de los datos y que cada grupo de trabajo vea esos datos como cada grupo lo desea. Es la capacidad para modificar el esquema lógico sin causar que los programas de aplicación tengan que rescribirse. Las modificaciones en el nivel lógico son necesarias siempre que la estructura lógica de la base de datos se altere. La independencia de datos lógica es más fácil de proporcionar que la independencia de datos física, ya que los programas de aplicación son fuertemente dependientes de la estructura lógica de los datos a los que ellos acceden. Gestor de la Base Datos El propósito general de los sistemas de gestión de bases de datos es el de manejar de manera clara, sencilla y ordenada un conjunto de datos que posteriormente se convertirán en información relevante para una organización. El sistema manejador de bases de datos es la porción más importante del software de un sistema de base de datos. Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de alguna tarea específica. Las funciones principales de un DBMS son: Crear y organizar la Base de datos. Establecer y mantener las trayectorias de acceso a la base de datos de tal forma que los datos puedan ser accesados rápidamente. Manejar los datos de acuerdo a las peticiones de los usuarios. Registrar el uso de las bases de datos. Interacción con el manejador de archivos. Esto a través de las sentencias en DML al comando del sistema de archivos. Así el Manejador de base de datos es el responsable del verdadero almacenamiento de los datos. Respaldo y recuperación. Consiste en contar con mecanismos implantados que permitan la recuperación fácilmente de los datos en caso de ocurrir fallas en el sistema de base de datos. Control de concurrencia. Consiste en controlar la interacción entre los usuarios concurrentes para no afectar la inconsistencia de los datos. Seguridad e integridad. Consiste en contar con mecanismos que permitan el control de la consistencia de los datos evitando que estos se vean perjudicados por cambios no autorizados o previstos. El DBMS(Sistema de Administración de Bases de Datos) es conocido también como Gestor de Base de datos. En sí, un sistema manejador de base de datos es el corazón de la base de datos ya que se encarga del control total de los posibles aspectos que la puedan afectar. Tipos de Usuarios de la Base de Datos Usuario Final: es la persona que utiliza los datos, esta persona ve datos convertidos en información: Desarrollador de Aplicaciones: es la persona que desarrolla los sistemas que interactúan con la Base de Datos. DBA: es la persona que asegura integridad, consistencia, redundancia, seguridad este es el Administrador de Base de Datos quien se encarga de realizar el mantenimiento diario o periódico de los datos. Las personas tienen acceso DBMS se clasifican de la siguiente manera: USUARIOS INGENUOS. – Son aquellos que interactúan con el sistema por medio de aplicaciones permanentes. USUARIOS SOFISTICADOS.- son aquellos con la capacidad de acceder a la información por medios de lenguajes de consulta. PROGRAMADORES DE APLICACIÓN.- son aquellos con un amplio dominio del DML capaces de generar nuevos módulos o utilerías capaces de manejar nuevos datos en el sistema. USUARIOS ESPECIALIZADOS.- son aquellos que desarrollan módulos que no se refieren precisamente al manejo de los datos, si no a aplicaciones avanzadas como sistemas expertos, reconocimientos de imágenes, procesamiento de audio y demás. Administrador de la Base de Datos El administrador de base de datos (DBA) es la persona responsable de los aspectos ambientales de una base de datos. En general esto incluye lo siguiente: Recuperación - Crear y probar Respaldos Integridad - Verificar o ayudar a la verificación en la integridad de datos Seguridad - Definir o implementar controles de acceso a los datos Disponibilidad - Asegurarse del mayor tiempo de encendido Desempeño - Asegurarse del máximo desempeño incluso con las limitaciones Desarrollo y soporte a pruebas - Ayudar a los programadores e ingenieros a utilizar eficientemente la base de datos. Es la persona encargada de definir y controlar las bases de datos corporativas, además proporciona asesoría a los desarrolladores, usuarios y ejecutivos que la requieran. Es la persona o equipo de personas profesionales responsables del control y manejo del sistema de base de datos, generalmente tiene(n) experiencia en DBMS, diseño de bases de datos, Sistemas operativos, comunicación de datos, hardware y programación. Un Administrador de Base de Datos de tiempo completo normalmente tiene aptitudes técnicas para el manejo del sistema en cuestión además, son cualidades deseables nociones de administración, manejo de personal e incluso un cierto grado de diplomacia. La característica más importante que debe poseer es un conocimiento profundo de las políticas y normas de la empresa, así como el criterio de la empresa para aplicarlas en un momento dado. La responsabilidad general del DBA es facilitar el desarrollo y el uso de la Base de Datos dentro de las guías de acción definidas por la administración de los datos. Middleware Es un término que abarca a todo el software distribuido necesario para el soporte de interacciones entre Clientes y Servidores". Es el enlace que permite que un cliente obtenga un servicio de un servidor. Este se inicia en el módulo de API de la parte del cliente que se emplea para invocar un servicio real; esto pertenece a los dominios del servidor. Tampoco a la interfaz del usuario ni la a la lógica de la aplicación en los dominios del cliente. Es un software de conectividad que ofrece un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas. Funciona como una capa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El middleware abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas. Dependiendo del problema a resolver y de las funciones necesarias, serán útiles diferentes tipo de servicios de middleware. Se pueden clasificar los diferentes middleware en función de su escalabilidad y su tolerancia a fallos, aunque tomando en cuenta que esta investigación no fue corroborada, puede haber otros tipos de clasificaciones: Remote Procedure Call (RPCs) — El cliente realiza una llamada a procedimientos que están ejecutando en máquinas remotas. Pueden ser síncronos o asíncronos. Publish/subscribe — Este tipo de monitores middleware activan y entregan información relevante para los subscriptores. Message-oriented middleware (MOM) — Los mensajes enviados al cliente se recogen y se almacenan hasta que son solicitados, mientras el cliente continúa con otros procesos. Object Request Broker (ORB) — Este tipo de middleware permite que los clientes envíen objetos y soliciten servicios en un sistema orientado a objetos. SQL-oriented Data Access — middleware entre las aplicaciones y los servidores de base de datos. Componentes de Aplicación y su Función de la base de Datos Un sistema de base de datos está compuesto por: Datos del usuario. En la actualidad, casi todas las bases de datos representan los datos del usuario como afinidades que son tablas de datos. No todas las afinidades son igualmente deseables; algunas están mejor estructuradas que otras. Para crear afinidades bien estructuradas se realiza un proceso llamado normalización. Metadatos. Debido a que los productos DBMS están diseñados para almacenar y manipular tablas, la mayor parte de ellos almacenan los metadatos en forma de tablas, algunas veces llamadas tablas del sistema. Índices. Están encaminados a mejorar el funcionamiento y la accesibilidad de la base de datos. Se usan para ordenar y para obtener un acceso rápido a los datos. Los índices son muy valiosos pero implican un costo. Cada vez que se actualiza una fila en una afinidad o tabla, también deben actualizarse los índices. Esto no es malo; sólo significa que los índices no son gratuitos y que deben reservarse para casos en los que sean de verdad necesarios. Metadatos de aplicación. Se usan para almacenar la estructura y el formato de formas, reportes, consultas de usuarios, y otros componentes de aplicación. Normalmente no se accede de forma directa a los metadatos de aplicación sino que se hace a través de herramientas proporcionadas por el DBMS para tal fin. Función y Sintaxis del Comando “CREATE” CREATE Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Ejemplo (crear una tabla) CREATE TABLE 'TABLA_NOMBRE' (ejemplo) 'CAMPO_1' INT, 'CAMPO_2' STRING Función y Sintaxis del Comando “Drop” DROP Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte DROP COLUMN ''CAMPO_NOMBRE1'' Llaves primarias En el diseño de bases de datos relacionales, se llama clave primaria a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria. Una clave primaria debe identificar unívocamente a todas las posibles filas de una tabla y no solo a las filas que se encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guías telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como claves candidatas, porque identifican unívocamente números de teléfono o palabras. Una clave primaria es un caso especial de clave única. La mayor diferencia es que para claves únicas, no se impone automáticamente la restricción implícita NOT NULL, mientras que para claves primarias, sí. Así, los valores en columnas de clave única pueden o no ser NULL. Otra diferencia es que las claves primarias deben definirse por medio de otra sintaxis. El modelo relacional, según se lo expresa mediante cálculo relacional y álgebra relacional, no distingue entre clave primaria y otros tipos de claves. Las claves primarias fueron agregadas al estándar SQL principalmente para conveniencia del programador. Tanto claves únicas como claves primarias pueden referenciarse con claves foráneas. Llaves Foráneas o Secundarias En el contexto de bases de datos relacionales, una clave foránea (o Foreign Key FK) es una limitación referencial entre dos tablas. La clave foránea identifica una columna o grupo de columnas en una tabla (tabla hija o referendo) que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las columnas en la tabla referendo deben ser la clave primaria u otra clave candidata en la tabla referenciada. Los valores en una fila de las columnas referendo deben existir solo en una fila en la tabla referenciada. Así, una fila en la tabla referendo no puede contener valores que no existen en la tabla referenciada. De esta forma, las referencias pueden ser creadas para vincular o relacionar información. Esto es una parte esencial de la normalización de base de datos. Múltiples filas en la tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma fila en la tabla referenciada. Mayormente esto se ve reflejado en una relación uno (tabla maestra o referenciada) a muchos (tabla hija o referendo). La tabla referendo y la tabla referenciada pueden ser la misma, esto es, la clave foránea remite o hace referencia a la misma tabla. Esta clave externa es conocida en SQL:2003 como auto-referencia o clave foránea recursiva. Una tabla puede tener múltiples claves foráneas y cada una puede tener diferentes tablas referenciadas. Cada clave foránea es forzada independientemente por el sistema de base de datos. Por tanto, las relaciones en cascada entre tablas pueden realizarse usando claves foráneas. Configuraciones impropias de las claves foráneas o primarias o no forzar esas relaciones son frecuentemente la fuente de muchos problemas para la base de datos o para el modelamiento de los mismos. Heartbeat de Alta Disponibilidad Heartbeat es una utilidad que simplemente envía un “latido de corazón” (de hecho “heartbeat en español, seria latido de corazón), un simple pulso, o paquete pequeño de datos a uno o más equipos. De esta manera, esta aplicación nos permite que en un “cluster” se realice un monitoreo automático, para saber si el nodo está vivo y los servicios corriendo en él, haciendo que en caso de que un nodo muera, automáticamente el o los nodos vivos tomen ese servicio, lo inicien y continúen trabajando. Ahora bien, quisiera aclarar, que también existe pacemaker, que no es más que la evolución de Heartbeat, un proyecto que parte del anterior, simplemente eso. Manos a la obra, ahora la idea es ir viendo paso a paso como instalar un Apache en alta disponibilidad con 2 nodos, para ello se requieren: 2 Equipos, o más, que podrán ser virtuales (si se desea solo realizar una prueba de aprendizaje, no se recomienda esto para nada en producción) Storage en común (puede ser un disco de fibra como una unidad DRBD, o un disco en común mediante VirtualBox u otra utilidad) con formato OCFS2 Apache corriendo en ambos equipos con su configuración correspondiente en ambos equipos idéntica, y ambos apuntando al mismo directorio, el cual será la unidad OCFS2. 3 Direcciones IP’s publicas/privadas, una para cada uno de los nodos y una para el “cluster”