jueves, 5 de diciembre de 2019

TEMAS UNIDAD 5

UNIDAD 5
5.1 Respaldo y Recuperación

Es posible generar periódicamente copias de respaldo y conservar una serie de versiones anteriores. Cada copia de respaldo estará identificada por tiempo y fecha y por la última transacción incluida. Una copia de respaldo debe generarse mientras la base de datos esta en reposo, ya que las actualizaciones durante el copiado pueden provocar que la copia se inconsistente.


5.1.1.1 Beneficios del espejeo de Datos en un DBMS

Esta característica tiene 3 modalidades que son Alto rendimiento, Alta Seguridad, y Alta Disponibilidad, este caso estamos hablando de las 2 primeras, las cuales el levantamiento es manual.


  • La creación de reflejo de la base de datos es una estrategia sencilla que ofrece las siguientes ventajas:
  • Incrementa la disponibilidad de una base de datos.
  • Si se produce un desastre en el modo de alta seguridad con conmutación automática por error, la conmutación por error pone en línea rápidamente la copia en espera de la base de datos, sin pérdida de datos. En los demás modos operativos, el administrador de bases de datos tiene la alternativa del servicio forzado (con una posible pérdida de datos) para la copia en espera de la base de datos. Para obtener más información, vea Conmutación de roles, más adelante en este tema.
  • Aumenta la protección de los datos.
  • La creación de reflejo de la base de datos proporciona una redundancia completa o casi completa de los datos, en función de si el modo de funcionamiento es el de alta seguridad o el de alto rendimiento. Para obtener más información, vea Modos de funcionamiento, más adelante en este tema.

5.2 Migración de la Base de Datos

Los conceptos esenciales de la migración describen cambios realizados en el soporte para el desarrollo de aplicaciones, cambios el soporte de nuevas funciones, funciones no soportadas y funciones en desuso que pueden afectar a las aplicaciones de base de datos, scripts y herramientas.

  • Migración de aplicaciones de BD dentro de DB2
  • Cambios en el soporte de los sistemas operativos
  • Cambios en los controladores de las aplicaciones
  • Cambios en el soporte del software de desarrollo
  • Cambios en las API de DB2 y en los mandatos de DB2
  • Cambios en la sintaxis de las sentencias de SQL
  • Cambios en las vistas y rutinas administrativas de SQL y en las vistas de catálogo
  • Paquetes de base de datos
  • Cambios en el soporte de 32 bits y 64 bits
  • Cambios en el comportamiento del servidor DB2
  • Soporte de conectividad de clientes DB2



5.3 Monitoreo y Auditoría de la Base de Datos

La auditoría y la protección de bases de datos (DAP) representa un avance evolutivo importante con respecto a anteriores herramientas de monitoreo de actividad en bases de datos (DAM). Los gerentes de seguridad, los administradores de bases de datos (DBAs) y otros interesados, que estén preocupados con proteger datos sensibles en las bases de datos, deben evaluar estas herramientas.



5.3.1 Monitoreo

El término Monitoreo es un término no incluido en el diccionario de la Real Academia Española (RAE). Su origen se encuentra en monitor, que es un aparato que toma imágenes de instalaciones filmadoras o sensores y que permite visualizar algo en una pantalla. El monitor, por lo tanto, ayuda a controlar o supervisar una situación.

Esto nos permite inferir que monitoreo es la acción y efecto de monitorear, el verbo que se utiliza para nombrar a la supervisión o el control a través de un monitor. Por extensión, el monitoreo es cualquier acción de este tipo, más allá de la utilización de un monitor.



5.4 Herramientas de software y hardware para monitoreo y administración automática

Herramientas de Microsoft SQL Server

Estas herramientas son el Profiler y el Performance monitor.

*Permiten ver los procesos en ejecucion del servidor

*Ayudan a ver como esta el rendimiento del sistema



PROFILER

-Permite crear trace para dar seguimiento a las ejecuciones y consultas que se ejecutan en el servidor

-Podemos tener acceso en la dirección Start>Program Files > Microsoft SQL Server >Profiler.

-Se pueden filtar traces especificando el nombre de la aplicacion a la que se le quiere dar seguimiento.


PERFORMANCE MONITOR

-Con esta herramienta se visualiza como se esta comportando el disco duro

-A demas de como la base de datos utiliza la memoria y el procesador del servidor los cuales deberían mantenerse por debajo de un 20%

Herramientas de MySql

MySQL-Proxy

es una herramienta para monitorear y optimizar consultas y búsquedas.

TEMAS UNIDAD 4

4.1 Bitacoras de trabajo del DBMS.


En muchos DBMS la bitácora incluye todo tipo de consulta incluyendo aquellas que no modifican los datos.La operación ROLLBACK está basada en el uso de una bitácora. El DBMS (Sistema Manejador de Bases de Datos) mantiene una bitácora o diario en cinta o en disco, comúnmente, en el cual se registran los detalles de todas las operaciones de actualización, en particular, los valores iniciales y final del objeto modificado. Por tanto, si resulta necesario anular alguna modificación específica, el sistema puede utilizar la entrada correspondiente de la bitácora para restaurar el valor original del objeto restaurado.

4.1.1 Funciones Específicas de las Bitácoras

La estructura más ampliamente usada para grabar las modificaciones de la base de datos es la Bitácora. Cada registro de la bitácora escribe una única escritura de base de datos y tiene lo siguiente:
-Nombre de la Transacción
-Valor antiguo
-Valor Nuevo
Es fundamental que siempre se cree un registro en la bitácora cuando se realice una escritura antes de que se modifique la base de datos.
También tenemos la posibilidad de deshacer una modificación que ya se ha escrito en la base de datos, esto se realizará usando el campo del valor antiguo de los registros de la bitácora.
Los registros de la bitácora deben residir en memoria estable como resultado el volumen de datos en la bitácora puede ser exageradamente grande.
Las operaciones COMMIT y ROLLBACK establecen lo que se le conoce como punto de sincronización lo cual representa el límite entre dos transacciones consecutivas, o el final de una unidad lógica de trabajo, y por tanto al punto en el cual la base de datos esta (o debería estar) en un estado de consistencia. Las únicas operaciones que establecen un punto de sincronización son COMMIT, ROLLBACK y el inicio de un programa. Cuando se establece un punto de sincronización:
Se comprometen o anulan todas las modificaciones realizadas por el programa desde el punto de sincronización anterior. Se pierde todo posible posicionamiento en la base de datos. Se liberan todos los registros bloqueados. Es importante advertir que COMMIT y ROLLBACK terminan las transacción, no el programa.

4.1.2 Recuperación (rollback)

Rollback señala el término no exitoso de la transacción. Le dice al manejador de transacciones que algo salió mal, que la base de datos podría estar en un estado inconsistente y que todas las modificaciones deben retroceder o anularse.
Si una transacción falla, por alguna razón, después de la actualización de la base de datos es necesario “anularla” (rollback o UNDO). Cualquier valor del data ítem que haya sido cambiado por la transacción debe volver a su valor previo
Si una transacción T es anulada (rollback), cualquier transacción S, que es en ínterin, haya leído un valor de un data ítem X modificado por T, entonces S también debe anularse (rollback)
De igual forma, si una transacción R ha leído un valor de un data ítem Y que ha sido modificado por S, entonces R también se debe anular y así sucesivamente.
Este fenómeno se conoce como rollback en cascada. El rollback en cascada puede ser muy costoso y es por ello que los mecanismos de recovery han catalogado a este fenómeno como indeseable o nunca requerido

Uso de rollback


4.1.3 Permanencia (commit)

Commit(acción de comprometer) se refiere a la idea de guardar un conjunto de cambios “tentativos , o no permanentes”. Un uso popular es al final de una transacción de base de datos.
Una sentencia COMMIT en SQL finaliza una transacción de base de datos dentro de un sistema gestor de base de datos relacional y pone visibles todos los cambios a otros usuarios. El formato general es emitir una sentencia BEGIN WORK, una o mas sentencias SQL, y entonces la sentencia COMMIT. Alternativamente, una sentencia ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emitio BEGIN WORK. Una sentencia COMMIT publicara cualquiera de los savepoints existentes que puedan estar en uso.

En términos de transacciones, lo opuesto de commit para descartar cambios “en tentativa” de una transacción, es un rollback.





4.2 Definición de los modos de operación de un DBMS. (Alta, baja, recovery)

Una operación de alta en un archivo consiste en la adición de un nuevo registro. En un archivo de empleados, un alta consistirá en introducir los datos de un nuevo empleado. Para situar correctamente un alta, se deberá conocer la posición donde se desea almacenar el registro correspondiente: al principio, en el interior o al final de un archivo.

El algoritmo de ALTAS debe contemplar la comprobación de que el registro a dar de alta no existe previamente. Una baja es la acción de eliminar un registro de un archivo. La baja de un registro puede ser lógica o física. Una baja lógica supone el no borrado del registro en el archivo.

Altas

La operación de dar de alta un determinado registro es similar a la de añadir datos a un archivo. Es importante remarcar que en un archivo secuencial sólo permite añadir datos al final del mismo.
En otro caso, si se quiere insertar un registro en medio de los ya presentes en el archivo, sería necesaria la creación nueva del archivo.

Bajas

Existen dos métodos para dar de baja a un registro en un archivo secuencial, donde no es fácil eliminar un registro situado en el interior de una secuencia: Para ello podemos seguir dos métodos:

1) Utilizar y por tanto crear un segundo archivo auxiliar transitorio, también secuencial, copia del que se trata de actualizar. Se lee el archivo completo registro a registro y en función de su lectura se decide si el registro se debe dar de baja o no. En caso afirmativo, se omite la escritura en el archivo auxiliar. Si el registro no se va a dar de baja, este registro se reescribe en el archivo auxiliar

Tras terminar la lectura del archivo original, se tendrán dos archivos: original (o maestro) y auxiliar. El proceso de bajas del archivo concluye borrando el archivo original y cambiando el nombre del archivo auxiliar por el del inicial.

2) Guardar o señalar los registros que se desean dar de baja con un indicador o bandera que se guarda en un array; de esta forma los registros no son borrados físicamente, sino que son considerados como inexistentes.

Propósito de Backup y Recuperación

Como administrador de copia de seguridad, la tarea principal es diseñar, implementar y gestionar una estrategia de backup y recuperación. En general, el propósito de una estrategia de recuperación de copia de seguridad y es para proteger la base de datos contra la pérdida de datos y reconstruir la base de datos después de la pérdida de datos. Normalmente, las tareas de administración de seguridad son las siguientes:

· Planificación y probar las respuestas a diferentes tipos de fallas.

· Configuración del entorno de base de datos de copia de seguridad y recuperación.

· La creación de un programa de copia de seguridad

· Seguimiento de la copia de seguridad y entorno de recuperación

· Solución de problemas de copia de seguridad

· Para recuperarse de la pérdida de datos en caso de necesidad

Como administrador de copia de seguridad, es posible que se le pida que realice otros deberes que se relacionan con copia de seguridad y recuperación:

· La preservación de datos, lo que implica la creación de una copia de base de datos para el almacenamiento a largo plazo

· La transferencia de datos, lo que implica el movimiento de datos de una base de datos o un host a otro.

Algunas de las situaciones en las que se recomienda tener este respaldo de datos pueden ser alguna de las siguientes:

· De protección de datos

· Fallas de medios

· Errores de los usuarios

· Errores de la aplicación

· Transferencia de datos

4.3 Comandos de Activación para los Modos de Operación

Para ser uso de los diferentes comandos para un modo de operación debemos estar como administrador o asuma un rol que incluya el perfil de derechos Service Management.

Comando STARTUP

Para el arranque de una base de datos hay tres fases de arranque, para realizar estas fases podemos utilizar startup más un comando, las tres fases son las siguientes:
·         Fase de no montaje: startup nomount
·         Fase de montaje: start mount, alter database mount.
·         Fase de aperture: startup open.

Comando shutdown

El comando shutdown lo utilizamos para parar una base de datos la cual consiste en varias clausulas
·         Shutdown normal
·         Shutdown immediate
·         Shutdown transactional
·         Shutdown abort.

Comando describe

Este comando permite conocer la estructura de una tabla, columnas que la forman y su tipo y restricciones.

Comando SHOW TABLES Y SHOW CREATE TABLE

El comando SHOW TABLES muestra las tablas dentro de una base de datos y SHOW CREATE TABLES muestra la estructura de creación de una tabla.

Comandos de modificación

Para realizar una modificación utilizamos el comando ALTER TABLE. Para usar ALTER TABLE, necesitamos permisos ALTER, INSERT y CREATE para la tabla


4.4 Manejo de índices.

El índice de una base de datos es una estructura alternativa de los datos en una tabla. El propósito de los índices es acelerar el acceso a los datos mediante operaciones físicas más rápidas y efectivas. En pocas palabras, se mejoran las operaciones gracias a un aumento de la velocidad, permitiendo un rápido acceso a los registros de una tabla en una base de datos.


4.4.1 Tipos de índices

Existen diferentes tipos de índices algunos de ellos son:

● Índices agrupados: Son los que definen el orden en que almacenan las filas de la tabla (nodos hoja/página de datos de la imagen anterior).

● Índices no agrupados: tienen la misma estructura de árbol b que los índices agrupados, con algunos matices.

● Índices compuestos: es un índice de varias columnas de una tabla.

● Índices descendientes: Este tipo de índice almacena los datos en una columna o columnas de concreto en orden descendente.

4.4.2 Reorganización de índices

Un paquete puede usar la tarea Reorganizar índice para reorganizar los índices de una base de datos individual o de varias bases de datos. Si la tarea solo reorganiza los índices de una base de datos individual, puede elegir las vistas o las tablas cuyos índices reorganiza la tarea.

Dentro de las tareas habituales de Mantenimiento de las Bases de Datos se encuentran aquellas destinadas al control y respaldo de las mismas como ser:

● Control de Integridad

● Chequeo de Consistencia

● Copias de Seguridad o Compactación de las bases.

Pero también es necesario ejecutar trabajos de mantenimiento cuyos objetivos sean el de mantener la performance de las bases de datos y evitar su degradación. Esos trabajos son:

● La Reorganización de Índices

● La Actualización de Estadísticas.

La instrucción DBCC DBREINDEX reorganiza el índice de una tabla o todos los índices definidos para una tabla. La sintaxis de esta instrucción es:
DBCC DBREINDEX (’basededatos.dueño.nombre_de_tabla‘[, índice [, fillfactor] ]) [ WITH NO_INFOMSGS ]



4.4.3 Reconstrucción de índices

Es importante periódicamente examinar y determinar qué índices son susceptibles de ser reconstruidos. Cuando un Índice está descompensado puede ser porque algunas partes de Éste han sido accedidas con mayor frecuencia que otras. Como resultado de este suceso podemos obtener problemas de contención de disco o cuellos de botella en el sistema. Normalmente reconstruimos un Índice con el comando ALTER INDEX.

Es importante tener actualizadas las estadísticas de la base de datos. Para saber si las estadísticas se están lanzando correctamente podemos hacer una consulta sobre la tabla dba_indexes y ver el campo last_analyzed para observar cuando se ejecutaron sobre ese Índice las estadísticas.

SELECT index_name, last_analyzed

FROM dba_indexed

WHERE table_owner=’nb_usuario’

Nota: Siendo nb_usuario el nombre del esquema del usuario para el que queramos validar las estadísticas. (Lanzar con usuario SYS)

Para actualizar las estadísticas utilizamos el paquete DBM_STATS. Podemos actualizar las estadísticas de todos los objetos de un esquema de la siguiente forma:

Execute DBMS_STATS.gather_schema_stats(‘Esquema’);

Nota: Sustituimos esquema por el nombre de nuestro esquema a actualizar (lanzar con usuario SYS)

Una vez actualizadas las estadísticas de los Índices de la base de datos lanzamos la siguiente consulta:

SELECT index_name, blevel,

DECODE(blevel,0,'OK BLEVEL',1,'OK BLEVEL',2,

'OK BLEVEL',3,'OK BLEVEL',4,'OK BLEVEL','BLEVEL HIGH') OK

FROM dba_indexes where table_owner='Propietario';

Nota: Sustituimos Propietario por el esquema o propietario que queramos verificar (lanzar con usuario SYS)

Con esta sentencia obtendremos el nombre del Índice, el blevel y si es correcto



Los Índices que deberíamos de reconstruir son los que en la columna ok aparecen como BLEVEL HIGH.

Blevel (branch level) es parte del formato del B-tree del Índice e indica el número de veces que ORACLE ha tenido que reducir la búsqueda en ese Índice. Si este valor está por encima de 4 el Índice deberá de ser reconstruido.
Comando ALTER INDEX
Como hemos comentado esta sentencia se utiliza para cambiar o reconstruir un Índice existente en la base de datos.
Para poder ejecutar este comando el Índice debe de estar en el propio esquema donde intentes ejecutarlo o deberías de tener el privilegio alter any index. También tenemos que tener en cuenta que para realizar la reconstrucción de un Índice deberíamos de tener cuota suficiente sobre el tablespace que lo lanzamos.
Para reconstruir un Índice bastaría con lazar la siguiente sentencia:
ALTER INDEX REBUILD;

Para reconstruir una partición de un Índice podríamos hacer lo siguiente

ALTER INDEX REBUILD PARTITION NOLOGGING;

miércoles, 4 de diciembre de 2019

FRAMEWORK YII

Instalar servidores web, php y mariadb
Para poder programar utilizando el lenguaje PHP y el Framework Yii primero debemos instalar los
programas necesarios para convertir nuestra computadora en un servidor. Existen varias opciones
de programas que nos permiten realizar esta tarea. En este caso iremos a la siguiente liga y
descargaremos la aplicación winnmp
https://winnmp.wtriple.com/

Una vez descargada ejecutaremos el programa para comenzar su instalación





Crear un proyecto en el servidor
Ahora crearemos un proyecto para poder trabajar con el servidor

1. Hacemos clics sobre el icono de nuevo proyecto
2. Escribimos el nombre de nuestro proyecto que en este caso se llamara cotiza

Verificaremos que el nombre con el que vamos a acceder al proyecto este agregado en el
archivo hosts que se encuentra en la ruta C:\Windows\System32\drivers\etc y contiene la
siguiente información
127.0.0.1 cotiza.test # WinNMP local project



Primero abriremos la ventana de comando de windows y nos posicionaremos en el
directorio donde quedo instalado el programa winnmp.




Descargamos el siguiente paquete

Escribiremos la instrucción que nos pemritirá descargar el framework Yii

composer create-project --prefer-dist yiisoft/yii2-app-basic basic











Escribimos el comando para crear una migración llamada tabla_empresa
yii migrate/create tabla_empresa







Corremos otra migracion en nuestro cmd y verificamos que se ha creado la tabla dentro de WinNMP 




Base de datos verificar




El generador Gii por default ya viene activado solo necesitaremos entrar en la direccion adecuada
para poder hacer uso de el. Para ello abriremos el navegador y entraremos en la siguiente direccion
http://cotiza.test/index.php?r=gii





Creamos un modelo utilizando el generador de codigo GII



Despues de ello, iremos hasta la parte de abajo de la pagina para dar al boton de preview, el cual nos va a mostrar las acciones que va a crear o realizar el generador.







Creamos un CRUD para la tabla empresa utilizando el generador de CRUD












Creamos un modelo de contacto siguiendo los pasos similarmente








CRUD JUGADORES SQL POSTGRESQL


DESCARGAR POSTGRE SQL DATABASE

Super usuario= postgres
password  = elliotroot
puerto =5432





INSTALAMOS PSYCOPG






ABRIMOS EL VISOR GRAFICO



Crear proyecto jugadores

y dentro de la carpeta jugadores crear la carpeta apps









y dentro de esa carpeta apps crear la aplicacion crud jugadores




crear la base de datos jugadores





lo statico las ssc y las js, en la carpeta static, estatico en templates las plantillas



 -Hacer archivo   __init__.py  en la carpeta apps-


 ir a settings y colocar lo siguiente .....


Configurar la base de datos en settings


Agregar linea Static



Realizamos las migraciones...




 Crear Modelos: (Deportes y Jugadores)
ir al archivo Models

Class mODEL  que hereda de la clase models:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.
class Deporte(models.Model):
    id = models.IntegerField(primary_key=True)
    nombre = models.CharField(max_length=20)

class Jugador(models.Model):
    id = models.IntegerField(primary_key=True)
    nombres = models.CharField(max_length=50)
    apellidos = models.CharField(max_length=50)
    fecha_nacimiento = models.DateField()
    email = models.EmailField()
    deporte = models.ForeignKey(Deporte, null=True,blank=True, on_delete= models.CASCADE)

Visualizar tablas y verificar que se creo el modelo


Registrar modelos
 
Entrar como modo administrador y revisar el sitio 

MODIFICAMOS PARA QUE NO OCURRA REGISTROS EN MODO OBJECT

class Deporte(models.Model):
    id = models.IntegerField(primary_key=True)
    nombre = models.CharField(max_length=20)

    def __str__(self):
        return "{0} -> {1}".format(self.id,self.nombre)
        #return '{}'.format(self.nombre)
        

class Jugador(models.Model):
    id = models.IntegerField(primary_key=True)
    nombres = models.CharField(max_length=50)
    apellidos = models.CharField(max_length=50)
    fecha_nacimiento = models.DateField()
    email = models.EmailField()
    deporte = models.ForeignKey(Deporte, null=True,blank=True, on_delete= models.CASCADE)

    def NombreCompleto(self):
        cadena = "{0} {1} {2}"
        return cadena.format(self.id, self.nombres , self.apellidos)

    def __str__(self):
        return self.NombreCompleto()





Crear carpetas y meter archivos html predeterminados antes creados



Una vez acabado con ello haremos lo siguiente, iremos a https://bootswatch.com/ y seleccionaremos un tema para utilizar en nuestro sitio web.


Esta misma URL la pegaremos en el archivo base:






Ahora nos dirigiremos a la pagina principal de https://getbootstrap.com/ e iremos a la sección de Js, Popper and Jquery, en ese apartado vendrán código para enlazar nuestro proyecto con los estilos predefinidos de boostrap.



Esas mismas lineas de código serán agregadas en el mismo archivo base.html en la sección de la etiqueta head. Al final la parte inicial de nuestro archivo base debe verse similar a esto:





crear el formulario .py




Una vez hecho esto configuremos nuestras vistas:





Con el código anterior hemos configurado una primera vista para crear nuevos registros. Ahora iniciemos configurando las urls, para ello dirijámonos al archivo urls de nuestro proyecto y escribamos el siguiente código:




una vez configuradas las urls del proyecto configuremos las urls de la aplicación, para ello como primera cosa a realizar, debemos crear un archivo llamado urls.py dentro de la carpeta de nuestra aplicación:




AL final del codigo deberia quedar asi>







Como podemos observar, las lineas de configuración de las urls de las plantillas que hemos agregado contienen un conjunto de parámetros enmascarados con símbolos un tanto raros y fuera de lugar, esto es debido a que por una parte estamos haciendo uso de expresiones regulares para identificar y colocar la url de forma auto-generada y por otro parte estamos pasando siempre un parámetro como variable auxiliar a otra plantilla, de manera que pueda ser usada para gestionar consultas al modelo html.