lunes, 11 de noviembre de 2019

Unidad 3 - Configuracion y Administracion del Espacio en Disco

3.1 Estructuras logicas de almacenamiento.

Para la gestión del almacenamiento de una base de datos existen 4 conceptos bien definidos que deben ser conocidos para poder comprender la forma en la que se almacenan los datos. Vamos a ver la diferencia entre bloque, extensión, segmento y espacio de tablas.

Bloques: Se tratan de la unidad más pequeña. Generalmente debe múltiple del tamaño de bloque del sistema operativo, ya que es la unidad mínima que va a pedir Oracle al sistema operativo. Si no fuera múltiple del bloque del sistema se añadiría un trabajo extra ya que el sistema debería obtener más datos de los estrictamente necesarios. Se especifica mediante DB_BLOCK_SIZE

Extensiones: Se forma con uno o más bloques. Cuando se aumenta tamaño de un objeto se usa una extensión para incrementar el espacio.

Segmentos: Grupo de extensiones que forman un objeto de la base de datos, como por ejemplo una tabla o un índice.

Espacio de tablas:Formado por uno o más datafiles, cada datafile solo puede pertenecer a un determinado tablespace



3.1.1 Definicion de espacio de almacenamiento.

Las bases de datos suelen ser creadas para almacenar grandes cantidades de datos de forma permanente. Por lo general, los datos almacenados en éstas suelen ser consultados y actualizados constantemente.

La mayoría de las bases de datos se almacenan en las llamadas memorias secundarias, especialmente discos duros, aunque, en principio, pueden emplearse también discos ópticos, memorias flash, etc.

Las razones por las cuales las bases de datos se almacenan en memorias secundarias son:
En cuanto al respaldo de las bases de datos (ver backup), suelen emplearse tanto discos duros, como cintas magnéticas, discos ópticos o similares.
Las técnicas empleadas para almacenar bases de datos son sumamente importantes para la velocidad de acceso y recuperación de datos. Las técnicas dependen del tipo de almacenamiento, el uso que se le da o se le dará a la base de datos, la estructura de la misma, el SGBD empleado, etc.
Esta dependencia no significa necesariamente que haya que cambiar la estructura de la base de datos si se cambian las técnicas empleadas. Las técnicas de almacenamiento son independientes de la base de datos, pero, de todas maneras, las mejores técnicas muchas veces pueden determinarse viendo la estructura de la base de datos, entre otras características.



Los encargados de elegir estas técnicas son los diseñadores y administradores de bases de datos, y dependen también de las capacidades del SGBD. En general, el SGBD ofrece diferentes opciones y técnicas para organizar los datos.

La idea es que los encargados de la base de datos encuentren las técnicas idóneas, o sea, aquellas que permitan la mayor velocidad posible de acceso a los datos. Una mala decisión en esta área puede resultar en una menor velocidad de acceso a la base de datos, o en un uso excesivo del espacio de almacenamiento, o incluso, puede aumentar la velocidad de consulta de una base de datos, pero disminuir la velocidad de actualización de la misma.

3.1.2 Definicion y creacion del espacio asignado para cada base de datos.

Las bases de datos se almacenan en ficheros o archivos, existen diferentes formas de organizaciones primarias de archivos que determinan la forma en que los registros de un archivo se colocan físicamente en el disco y, por lo tanto, cómo se accede a éstos.

Las distintas formas de organizaciones primarias de archivos son:

  • Archivos de Montículos (o no Ordenados): esta técnica coloca los registros en el disco sin un orden específico, añadiendo nuevos registros al final del archivo.
  • Archivos Ordenados (o Secuenciales): mantiene el orden de los registros con respecto a algún valor de algún campo (clave de ordenación).
  • Archivos de Direccionamiento Calculado: utilizan una función de direccionamiento calculado aplicada a un campo específico para determinar la colocación de los registros en disco.
  • Árboles B: se vale de la estructura de árbol para las colocaciones de registros.

Existe una segunda forma de acceder a los datos llamada:
  • Organización secundaria o estructura de acceso auxiliar: Estas permiten que los accesos a los registros de un archivo basado en campos alternativos, sean más eficientes que los que han sido utilizados para la organización primaria de archivos.



3.1.3 Bitacoras.

La estructura más amplia mente 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:

1. Nombre de la transacción: Nombre de la transacción que realizó la operación de escritura.
2. Nombre del dato: El nombre único del dato escrito.
3. Valor antiguo: El valor del dato antes de la escritura.
4. Valor nuevo: El valor que tendrá el dato después de la escritura.


3.1.4 Particiones.

Una partición es una división de una base de datos lógica o sus elementos constituyentes en partes independientes. La partición de bases de datos se hace normalmente por razones de mantenimiento, rendimiento o manejo. Cada partición puede ser extendida hasta múltiples nodos, y los usuarios en el nodo pueden hacer transacciones locales en la partición.

Esto aumenta el rendimiento en sitios que tienen transacciones regularmente involucrando ciertas vistas de datos, y manteniendo la disponibilidad y la seguridad. Esta partición puede hacerse creando bases de datos más pequeñas separadas (cada una con sus propias tablas, índices, y registros de transacciones) o dividiendo elementos seleccionados, por ejemplo, solo una tabla.


3.1.5 Espacios Privados.

Un «espacio privado» permite que los administradores y redactores gestionen el conjunto de datos del sitio. Algunas bases de datos tienen estos espacios privados llamados comúnmente paneles de control, que son formularios que aparecen al abrir la base de datos.

Los paneles de control sirven de "puerta principal" o "recibidor" de una base de datos en el sentido de que dirigen a las personas hacia determinadas tareas, como introducir o buscar datos. Sirven también para mantener alejados a los usuarios de las tablas que contienen los datos en tiempo real.

Cuando reciba una base de datos, debe adentrarse más allá del panel de control para averiguar cómo están estructurados los datos, pero merece la pena echar un vistazo inicial al panel de control. 

3.1.6 Espacio para Objetos.

Los DBMS se basan en archivos para almacenar datos, y estos archivos, o conjuntos de datos, residen en medios de almacenamiento, o dispositivos. Una buena parte del trabajo del DBA implicará la planificación para el almacenamiento real de la base de datos.

Algunas tecnologías de almacenamiento son más adecuadas que otras. Sin embargo, la naturaleza mecánica de la unidad de disco los hace más vulnerables al fracaso de los componentes de otro equipo. Además, las formas en que las unidades de disco son utilizados por las bases de datos pueden hacer que la gestión del almacenamiento impredecibles, como la barra lateral "Modern DBMS de uso de disco“ Puede usarse RAID para mejorar la seguridad de los datos.


3.2 Segmentos.

Un segmento contiene un tipo específico de objetos de la base de datos, como por ejemplo una tabla. Un segmento está compuesto de extensiones que definen el tamaño disponible para el segmento. 

A medida que se llenan las extensiones se van añadiendo nuevas extensiones, es aquel espacio reservado por la base de datos, dentro de un datafile, para ser utilizado por un solo objeto. Así una tabla (o cualquier otro objeto) está dentro de su segmento, y nunca podrá salir de él, ya que si la tabla crece, el segmento también crece con ella.

Los segmentos son los equivalentes físicos de los objetos que almacenan datos. El uso efectivo de los segmentos requiere que el DBA conozca los objetos, que utiliza una aplicación, cómo los datos son introducidos en esos objetos y el modo en que serán recuperados. 

3.3 Memoria Compartida.

Un servidor Oracle es un sistema que permite administrar bases de datos y que ofrece un medio de gestión de información abierto, completo e integrado. Un servidor Oracle está constituido de una instancia y una base de datos.

Instancia de Oracle: Una instancia de Oracle permite acceder a la base de datos Oracle y permite abrir únicamente una sola base de datos. La instancia de Oracle está compuesta de procesos en segundo plano que administran y aplican las relaciones entre las estructuras físicas y las estructuras de memoria. 
Existen dos categorías:

  • Procesos en Segundo Plano Obligatorios: DBWN, PMON, CKPT, LGWR, SMON
  • Procesos en Segundo Plano Facultativos: ARCn, LMDn, RECO, CJQ0, LMON, Snnn, Dnnn, Pnnn, LCKn, QMNn
3.4 Estancias Multiples.

Se llama instancia múltiple al hecho de poder ejecutar un programa más de una vez al mismo tiempo. Hay programas que no admiten más que una sola instancia, es decir que si ya se está ejecutando, por más que le des un click de nuevo en el icono o en el menú no aparecerá un nuevo ejemplar del programa. Con las bases de datos se complica un poco porque si un usuario modifica un registro que otro usuario tiene también abierto, la modificación que se haga en una instancia debe reflejarse de inmediato (actualizarse) en cualquier otra instancia abierta de la misma base de datos.

Sin embargo, en las bases de datos se puede seleccionar la opción en el diseño de la BD, y se reflejarán de inmediato las modificaciones en todas las instancias abiertas

En programación, una instancia se produce con la creación de un objeto perteneciente a una clase (se dice que se instancia la clase). El objeto que se crea tiene los atributos, propiedades y métodos de la clase a la que pertenece. Los objetos y sus características se usan en la construcción de programas, ya sea como contenedores de datos o como partes funcionales del programa. Los objetos también puede ser ocurrencia de las clases. 

domingo, 10 de noviembre de 2019

Proyecto "Universidad"

Creamos nuestro proyecto "Universidad" en simbolo de sistema.


Ahora iremos a la raiz de nuestro proyecto con "cd Universidad" y agregamos el siguiente comando "django-admin startapp Gestion_Academica" este sera el nombre de nuestra aplicacion.



Ahora vamos a Pycharm y entramos en la carpeta Gestion_Academica y damos click en la subcarpeta models.py y agregamos el siguiente codigo.

class Alumno(models.Model):
    ApellidoPaterno= models.CharField(max_length=35)
    ApellidoMaterno = models.CharField(max_length=35)
    Nombres = models.CharField(max_length=35)
    DNI=models.CharField(max_length=8)
    FechaNacimiento=models.DateField()
    SEXOS= (('F','Femenino'),('M','Masculino'))
    sexo=models.CharField(max_length=1,choices=SEXOS,default='M')
    #foto=models.ImageField(upload_to='photos')

    def NombreCompleto(self):
        cadena="{0} {1} {2}"
        return cadena.format(self.ApellidoPaterno,self.ApellidoMaterno,self.Nombres)

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



class Curso(models.Model):
    Nombre = models.CharField(max_length=30)
    Estado = models.BooleanField(default=True)
    Creditos = models.PositiveIntegerField(default=1)

    def __str__(self):
        return "{0} -> {1}".format(self.Nombre,self.Creditos)

class Matricula(models.Model):
    Alumno =models.ForeignKey(Alumno, null=False, blank= False, on_delete= models.CASCADE)
    Curso = models.ForeignKey(Curso, null=False, blank=False, on_delete=models.CASCADE)
    FechaMatricula=models.DateTimeField(auto_now=True)

    def __str__(self):
        cadena = "{0} inscrito en: {1}"

        return cadena.format(self.Alumno, self.Curso)


Ahora registramos nuestros modelos.

from .models import Alumno
from .models import Curso
from .models import Matricula


admin.site.register(Alumno)
admin.site.register(Curso)
admin.site.register(Matricula)


Ahora nos vamos a settings.py y agregamos la aplicacion "Gestion_Academica" en installed_apps.


Cambiamos el idioma de es-us a es-mx.


Ahora usamos el comando "python manage.py migrate" en cmd


Hacemos las migraciones.




Creamos nuestro usuario con el comando "python manage.py createsuperuser" y arracancamos nuestro servidor con "python manage.py runserver"


Entramos a la direccion que nos arrojo. Ingresamos los datos


Y nos mostrara la administracion del sitio.


Ahora ya ingresamos datos y se guardaran y listo.


Poryecto Egresados 1

Primero creamos el proyecto, y es igual que cuando hicimos el proyecto de "Alumnos"



Agregamos el codigo.





Ahora le cambiaremos el idioma de es-us a es-mx


En models.py agregaremos el siguiente codigo.

class Datosegresados(models.Model):
    num_cont= models.CharField(max_length=10, primary_key= True,verbose_name='Numero de Control')
    nombre = models.CharField(max_length=100)
    apellido = models.CharField(max_length=100)
    IS = 'ISC'
    IQ = 'IQ'
    IQ = 'II'
    IE = 'IE'
    Carrera_egreso = (('ISC', 'Ing.Sistemas computacionales'),
                       ('IQ', 'Ing. Quimica'), ('II', 'Ing. Industrial'), ('IE', 'Ing. Electronica'))

    Carrera = models.CharField(max_length=30, choices=Carrera_egreso, default=IS)
    sexo = (('F', 'Femenino'), ('M', 'Masculino'))  # se hace arreglo
    sexo = models.CharField(max_length=1, choices=sexo, default='M')
    Edad = models.IntegerField(help_text='Solo mayores de edad')
    trabajo_area = models.BooleanField(verbose_name='Se encuentra trabajando?')
    trabajo = models.CharField(max_length=100)
    sueldo = models.CharField(max_length=100)
    imagen = models.ImageField()
    email = models.EmailField()
    Telefono = models.CharField(max_length=12)
    informacion = models.TextField()
Aqui se registra la clase con "admin.py"



Entramos al servidor para verificar que se haya conectado 


Ingresamos datos y verficamos que se hayan guardado.

Sincronizacion de Django a MySQLiteManager

Abrimos MySQLiteManager y entramos a "django_session" para tener la sesion abierta



ahora entramos a nuetsra aplicacion de "Alumnos" y llenamos la informacion que se nos pide


Despues guardamos la informacion que ingresamos


Ahora regresamos a MySQLiteManager y entramos a "datos_per_datosperosnales" y ya tendremos nbuestra informacion guardada ahi.

Aplicación Web "Alumnos"

Entramos a "cmd".



Nos vamos hasta la raiz del disco:


Usamos el comando "django-admin startproject Alumnos" para iniciar nuestro proyecto.

Entramos al proyecto Alumnos con el siguiente comando "cd Alumnos".


Ahora usamos el comando python manage.py migrate.


Despues corremos el servidor con python manage.py runserver, el cual nos dara una direccion para acceder a nuestra aplicacion wed. para parar el servidor usamos la combinacion de teclas ctrl + c .


Ahora creamos nuestra aplicacion con el siguiente comando django-admin startapp datos_per


Entramos a Pycharm 


Y agregamos el siguiente codigo:

class Datospersonales(models.Model):
    num_cont= models.CharField(max_length=10, primary_key= True,verbose_name='Numero de Control')
    nombre = models.CharField(max_length=100,verbose_name='Nombre del Alumno')
    SEXO=(('F','Femenino'),('M','Masculino')) #se hace arreglo
    Sexo = models.CharField(max_length=1,choices=SEXO,default='M')
    Edad = models.IntegerField(help_text='Solo mayores de edad')
    fecha_nacimiento= models.DateField()

    IS = 'IS'
    LC = 'LC'
    LAE = 'LAE'
    CARRERA_CHOICES = (
        ('IS','Ing. en Sistemas'),
        ('LC', 'Lic. en Contaduria'),
        ('LAE', 'Lic. en Administracion de Empresas')
    )

    Carrera = models.CharField(max_length=30,choices=CARRERA_CHOICES,default=IS,
    )
    Telefono = models.CharField(max_length=12)
    email = models.EmailField()
    Domicilio= models.TextField()


En la carpeta Settings.py agregamos una linea de codigo llamada "datos_per" para que identifique el lenguaje.

ahora vamos a cmd y agregamos el siguiente comando "python manage,py makemigrations para hacer nuestra migracion


Ahora hacemos la migracon de nuestros datos a la base de datos con el comando "python manage.py migrate"


Registramos nuestro modelo


despues crearemos nuestro usuario y contrase;a con el siguiente comando "python manage.py createsuperuser"

ahora ya podemos acceder a nuestra aplicacion wed con solo ingresar nuestro usario y contrase;a


Unidad 3 - Configuracion y Administracion del Espacio en Disco

3.1 Estructuras logicas de almacenamiento. Para la gestión del almacenamiento de una base de datos existen 4 conceptos bien definidos que ...