martes, 24 de abril de 2018

Libreria para mysql en python **PyMySQL**

Pymysql

pymysql es un paquete para la interacción con bases de datos MySQL escrito completamente en Python, a diferencia de su principal “competidor”, MySQLdb. Se presenta como una atractiva alternativa a este último y con razón, pues las ventajas son bastante relevantes. Corre en distintas implementaciones de Python: CPython, PyPy y IronPython. Además, su instalación resulta más sencilla al prescindir de código escrito en C. Por último, y de las que más aprecio personalmente, soporte para el conjunto de versiones 3.x.


Descarga e instalación

Si cuentas con pip en tu ordenador, el proceso será de lo más sencillo. Ejecutar en la terminal:

pip install PyMySQL

Como alternativa, puedes descargar el código de fuente desde PyPI o bien desde el proyecto en GitHub. Una vez descomprimido el archivo, situarse en la carpeta recientemente creada y ejecutar:

python setup.py install

https://recursospython.com/guias-y-manuales/pymysql-controlador-base-de-datos-mysql/

pymysql instalado

Para conectar Python a una base de datos se necesita un controlador, que es una biblioteca utilizada para interactuar con la base de datos. Para la base de datos MySQL, están disponibles 3 opciones de controlador:
  1. MySQL /Conector para Python
  2. MySQLdb
  3. PyMySQL

jueves, 19 de abril de 2018

Herramienta PIP de PYTHON




pip es una herramienta escrita en Python para facilitar la descarga e instalación de paquetes del lenguaje que se encuentren en el Python Package Index (PyPI). Podría suponerse que las siglas provienen de Python Install Package, aunque no hay certeza de esto. Corre en las principales plataformas: Microsoft Windows, Linux y OS X; en CPython 2.6+, 3.x y PyPy.



Una ventaja importante de pip es la facilidad de su interfaz de línea de comandos, el cual permite instalar paquetes de software de Python fácilmente desde solo una orden:


pip install nombre-paquete 



Los usuarios también pueden fácilmente desinstalar algún paquete:


pip uninstall nombre-paquete 


Otra característica particular de pip es que permite gestionar listas de paquetes y sus números de versión correspondientes a través de un archivo de requisitos. Esto nos permite una recreación eficaz de un conjunto de paquetes en un entorno separado (p. ej. otro ordenador) o entorno virtual. Esto se puede conseguir con un archivo correctamente formateado requisitos.txt y la siguiente orden:


pip install -r requisitos.txt 


Con pip es posible instalar un paquete para una versión concreta de Python, sólo es necesario reemplazar ${versión} por la versión de Python que queramos: 2, 3, 3.4, etc:


pip${versión} install nombre-paquete


martes, 17 de abril de 2018

Procedimientos Almacenados - Ejemplos en Clase

CASE

CREATE DEFINER=`root`@`localhost` PROCEDURE `AlumnosX`(
in Vnum_con int,
in Vnombre varchar(45),
in Vapellido_p varchar(45),
in Vapellido_m varchar(45),
in Vcorreo varchar (90),
in accion varchar(30))
BEGIN
case accion
when 'nuevo' then
insert into alumnos (nombre, apellido_p, apellido_m, correo)
        values (Vnombre, Vapellido_p, Vapellido_m, Vcorreo);
when 'editar' then
update alumnos set
        nombre=Vnombre, apellido_p=Vapellido_p, apellido_m=Vapellido_m, correo=Vcorreo
        where num_con=Vnum_con;
when 'eliminar' then
delete from alumnos where num_con=Vnum_con;
when 'consultar' then
select * from alumnos where num_con=Vnum_con;
end case;

END

INSERTAR

CREATE DEFINER=`root`@`localhost` PROCEDURE `Alta_libros`(
in nombre_s varchar(45),
in editorial_s int(11))
BEGIN
insert into libros (nombre,editorial) values(nombre_s, editorial_s);
END

BORRAR


CREATE DEFINER=`root`@`localhost` PROCEDURE `borrar_libros`(IN id_libros INT)
BEGIN
Delete from libros where idlibros=id_libros;
END

CONSULTAR


CREATE DEFINER=`root`@`localhost` PROCEDURE `consulta_editorial`(IN re INT)
BEGIN
SELECT * FROM editorial WHERE id_editorial=re;
END

Ejemplo de macro: suma

sumas macro p, s     ;macro de la suma
    mov al, p         ;se mueve el primer numero a al
    add al, s         ;a al se le suma el segundo numero (s)
    add al, 30h        ;a al se le suma 30h para obtener de nuevo el numero en decimal
    mov suma, al      ;se mueve al a suma
    mov ah, 09        ;salida de cadena de caracteres
    lea dx, msj3      ;se imprime el mensaje 3
    int 21h           ;interrupcion de sistema
    mov ah, 02        ;peticion para colocar el cursor
    mov dl, suma      ;se mueve suma a dl
    int 21h           ;interrupcion de sistema
    mov ah, 4ch       ;termina programa
    int 21h           ;interrupcion de sistema
endm
   

.model small
.stack 64
.data       ;segmento datos

    n1 db 0
    n2 db 0
    suma db 0
    msj  db "Dame el primer valor: $"
    msj2 db 10,13, "Dame el segundo valor: $"
    msj3 db 10,13, "suma = $"
   
.code  ;segmento codigo

mov ax, @data    ;se mueve data a ax
mov ds, ax       ;se mueve ax a ds
mov ah, 09       ;salida de una cadena de caracteres
lea dx, msj      ;se imprime el primer mensaje
int 21h          ;interrupcion de sistema

mov ah, 01       ;peticion de leer caracter
int 21h          ;interrupcion de sistema
sub al, 30h      ;se resta 30h para obtener el numero
mov n1, al       ;se mueve al a n1

mov ah, 09       ;salida de una cadena de caracteres
lea dx, msj2     ;se imprime el segundo mensaje
int 21h          ;interrupcion de sistema
mov ah, 01       ;peticion de leer caracter
int 21h          ;interrupcion de sistema
sub al, 30h      ;se resta 30h para obtener el numero
mov n2, al       ;se mueve al a n2

sumas n1, n2     ;se llama al macro y se le envian los parametros
   
ret

lunes, 16 de abril de 2018

Programa documentado de macros






gotoxy macro fila,col   ;macro para posicinar el caracter
    mov ah,02h     ;posicionar el cursor en pantalla       
    mov dh,fila    ;se manda la fila a la parte alta de dx    
    mov dl,col     ;columna a la parte baja de dx
    mov bh,0h      ;posiciona en las coordenadas dadas     
    int 10h        ;interrupcion
endm          

pantalla macro car  ;recibe el dato a mostrar, que es el parametro      
    mov ah,02h      ;posiciona con las coordenadas anteriores       
    mov dl,car      ;enviar el caracter y mostrar  
    int 21h         ;interrupcion 
endm           

imprime macro msj    ;macro para mostrar los mensajes   
    mov dx,offset msj  ;ponemos el mensaje en dx y lo muestra
    mov ah,9            ;funcion para imprimir mensaje
    int 21h             ;interrupcion
endm 

.model small
.data ;segmento datos 
    mensaje  DB "INGRESE UN CARACTER: $"
    mensaje2  DB 13,10,"INGRESE X del 0 al 9: $" 
    mensaje3  DB 13,10,"INGRESE Y del 0 al 9: $"  
    caracter  DB 40   ;variable para cadena  
    varx  DB ?      ;variables para coordenadas
    vary  DB ? 

    vtext db 100 dup('$') ;declaración del vector

         
.code ;segmento codigo
    inicio:  
        mov ax,@data    ;mueve segmento datos a ax    
        mov ds,ax       ;se mueve ax a ds
    
        imprime mensaje ;llamamos a imprime y le enviamos la variable    
    
        mov si,00h  ;limpiamos registro si          
    
    leer:  

        mov ax,0000   ;se limpia ax            
        mov ah,01h    ;funcion de ingreso de caracter, e imprimir          
        int 21h       ;interrupcion  

        mov caracter[si],al  ;ponemos el caracter tecleado en el arreglo caracter       
        inc si               ;incrementamos si
        cmp al,0dh           ;comparamos al = salto de linea
        ja leer              ;si no es igual, se repite  
        jb leer              ;si es igual, continua el programa
        ;acaba capturar caracter
            
        ;mostrar caracter capturado
        mov dx,offset caracter   ;imprime el caracter
        mov ah,0ah              ;lee cadenas de texto por teclado  
        int 21h                 ;interrupcion
    
        imprime caracter ;llama al macro imprime el caracter     
        
        imprime mensaje2 ;capturar coordenada 1  
    
        mov ah,01h   ;captura lo que se teclee  
        int 21h       ;interrupcion      
    
        sub al,30h   ;se le resta 30h para que se reconozca como numero
        mov bl,al      ;se mueve a bl 
    
        mov varx,al     ;se mueve el valor a varx   
        ;termina capturar coordenada 1
        
        
        imprime mensaje3    ;se llama al macro imprime y se le manda la variable
    
        mov ah,01h   ;captura lo que se teclee  
        int 21h      ;interrupcion       
    
        sub al,30h  
        mov bl,al  
        mov vary,al    ;termina capturar coordenada 2      
    
        
        mov ax,0003h   ;limpia pantalla       
        int 10h         ;interrupcion
        
        ;se llama a los macros y se les envian los datos        
        gotoxy vary,varx          
        pantalla caracter[0]           
    
        mov ah,01h       ;captura e impresion   
        int 21h          ;interrupcion
        mov ax,4c00h     ;funcion de fin  
        int 21h          ;interrupcion

CODIGO ENDS  
    end inicio

jueves, 12 de abril de 2018

RESUMEN UNIDAD II: Arquitectura del Gestor de Bases de Datos

Objetivo de la Unidad
*Conocer los diferentes tipos de memoria y procesos que nos podemos encontrar en un sistema gestor de bases de datos.
*Tener conocimiento sobre el procedimiento de instalación y configuración de un DBMS.
*Saber los requisitos que pide cada DBMS y comandos generales de alta y baja.
*Poder elegir el mejor DBMS en cada situación.

2.1 Características del DBMS

  • CONTROL DE REDUNDANCIA 

* Redundancia es el resultante de almacenar los mismos datos varias veces, esto conduce a serios problemas como duplicación del esfuerzo, derrochar espacio de almacenamiento, incoherencia de los datos.

* En la practica se puede recurrir a una redundancia controlada, en este caso el DBMS debe tener la capacidad de controlarla.

* Se pueden poner especificaciones en el DBMS durante el diseño de la base de datos y se ejecuten en automatico cuando se actualice un archivo de BD.

  • RESTRICCIÓN DE LOS ACCESOS NO AUTORIZADOS

* Cuando varios usuarios comparten una base de datos grande, la mayoría no tiene autorización para acceder a toda la información de la BD.

* Un DBMS debe proporcionar seguridad y un subsistema de autorización que el DBA debe utilizar para crear cuentas y especificar las restricciones de la misma.
  • CUMPLIMIENTO DE LAS RESTRICCIONES DE INTEGRIDAD 
La mayor parte de las aplicaciones de base de datos tienen ciertas restricciones de integridad que deben cumplir los datos. El SGBD debe ofrecer recursos para definir tales restricciones y hacer que se cumplan.
  • RESPALDO Y RECUPERACIÓN
* El DBMS debe contar con el subsistema de copia de seguridad y recuperación.
* Por ejemplo si falla la computadora en medio de una transacción compleja de actualización el DBMS debe dejar la BD en el estado anterior.
Suministro de varias interfaces de usuarios
* Cuando una base de datos la utilizan muchos tipos de usuarios con distintos niveles de conocimiento técnico, un DBMS.

2.1.1 Estructura de Memoria y Procesos de la Instancia

Memoria:

  • Shared Global Area (SGA): es el área más grande de memoria y quizás el más importante 

  • Shared Pool: es una caché que mejora el rendimiento ya que almacena parte del diccionario de datos y el parsing de algunas consultas en SQL. 

  • Redo Log Buffer: contiene un registro de todas las transacciones dentro de la base, las cuales se almacenan en el respectivo archivo de Redo y en caso de siniestro se vuelven a ejecutar aquellos cambios que aún no se hayan reflejado en el archivo de datos (commit). 

  • Large Pool: espacio adicional, generalmente usado en casos de multithreading y esclavos de I/O. 

  • Java Pool: usado principalmente para almacenar objetos Java

Procesos:
  • System Monitor: despierta periódicamente y realiza algunas actividades entre las que se encuentran la recuperación de errores, recuperación de espacio libre en tablespaces y en segmentos temporales. 
  • Process Monitor: limpia aquellos procesos que el usuario termina de manera anormal, verificando consistencias, liberación de recursos, bloqueos. 
  • Database Writer: escribe bloques de datos modificados del buffer al disco, aquellas transacciones que llegan a un estado de commit. 
  • Log Writer: escribe todo lo que se encuentra en el redo log buffer hacia el redo file 
  • Checkpoint: sincroniza todo lo que se tenga en memoria, con sus correspondientes archivos en disco

proceso servidor y proceso cliente

El proceso cliente es el programa en la memoria de la máquina en la que el usuario ha conectado con Oracle. Este proceso se comunica con un proceso servidor que es lanzado cuando el cliente establece conexión con Oracle.

Puede haber un mismo proceso servidor para más de un cliente en caso de una configuración compartida de proceso servidor. Cuando el proceso cliente y el servidor establecen conexión, se crea la sesión de usuario, que es manejada por el proceso servidor. El proceso de usuario no puede acceder directamente a la base de datos.



2.1.2 Estructuras Físicas de la Base de Datos




Una BD Oracle tiene una estructura física y una estructura lógica que se mantienen separadamente.

La estructura física se corresponde a los ficheros del sistema operativo: de datos (datafiles), de redo log y de control (controlfiles).

La estructura lógica está formada por los tablespace y los objetos de un esquema de BD (tablas, vistas, índices,...).





La Arquitectura de Oracle tiene tres componentes básicos:

*La Estructura de memoria

Es la estructura de memoria compartida que contienen datos e información de control para una instancia de una base de datos, cada instancia tiene sus propias estructuras de memoria y se localiza en la memoria virtual del computador. Las estructuras de memoria se denominan System Global Area (SGA) la cual es un área compartida por todos los usuarios y se divide en tres partes:

1.- shared pool

2.- Database buffer cache

3.- Redo Log Buffer


*Los Procesos

Los procesos son programas que se ejecutan para permitior el acceso a los datos, se cargan en memoria y son transportados para los usuarios. 


*Los Archivos.

Se clasifican en 4 tipos:

1.- Los Archivos de Datos (Datafiles): sirve para el almacenamiento físico de las tablas, índices y procedimientos, estos son los únicos que contienen los datos de los usuarios de la base de datos.

2.- Archivos de Control (control files): tiene la descripción física y dirección de los archivos para el arranque correcto de la base de datos 

3.- Archivos de Rehacer (redo log files): tienen los cambios que se han hecho a la base de datos para recuperar fallas o para manejar transacciones. Debe esta conformado por dos grupos como mínimo y cada grupo debe esta en discos separados. El principal propósito de estos archivos es de servir de respaldo de los datos en la memoria RAM. 

4.- Archivos fuera de línea (archived files): archivos opcionales donde se pueda guardar información vieja de los archivos de rehacer, convenientes para respaldos de base de datos.

2.1.3 Requerimiento para Instalación

Antes de instalar cualquier SGBD es necesario conocer los requerimientos de hardware y software, el posible software a desinstalar previamente, verificar el registro de Windows y el entorno del sistema, así como otras características de configuración especializadas como pueden ser la reconfiguración de los servicios TCP/IP y la modificación de los tipos archivos HTML para los diversos navegadores. Se presenta a continuación una serie de requerimientos mínimos de hardware y software para instalar oracle 11g Express y MySQL estándar versión 5.1. en Windows Seven y Ubuntu 10.





La regla general para determinar el tamaño de la memoria virtual depende del tamaño de memoria RAM instalada. Si su sistema tiene menos de 4 GB de RAM por lo general el espacio de intercambio debe ser de al menos dos veces este tamaño. Si usted tiene más de 8 GB de memoria RAM instalada puede considerar usar el mismo tamaño como espacio de intercambio. Cuanta más memoria RAM tenga instalada, es menos probable usar el espacio de intercambio, a menos que tenga un proceso inadecuado. 


2.1.4 Instalación del Software de BD en Modo Transaccional



Una base de datos en modo transaccional significa que la BD será capaz de que las operaciones de inserción y actualización se hagan dentro de una transacción, es un componente que procesa información descomponiéndola de forma unitaria en operaciones indivisibles, llamadas transacciones, esto quiere decir que todas las operaciones se realizan o no, si sucede algún error en la operación se omite todo el proceso de modificación de la base de datos, si no sucede ningún error se hacen toda la operación con éxito.



Una transacción es un conjunto de líneas de un programa que llevan insert o update o delete. Todo aquél software que tiene un log de transacciones (que es la "bitácora" que permite hacer operaciones de commit o rollback), propiamente es un software de BD; aquél que no lo tiene (v.g. D-Base), propiamente no lo es. Todo software de base de datos es transaccional; si el software de la BD no es "transaccional", en realidad NO es un "software" de BD; en todo caso, es un software que emula el funcionamiento de un verdadero software de BD. Cada transacción debe finalizar de forma correcta o incorrecta como una unidad completa. No puede acabar en un estado intermedio.

Se usan las siguientes métodos :

· Begin TRans para iniciar la transacción 
· CommitTrans para efectuar los cambios con éxito 
· RollbackTrans para deshacer los cambios 

Y depende que base de datos uses para efectuar las operaciones pero, es la misma teoría para cualquier BD.
Una vez que se sabe la forma de ingresar comandos, es el momento de acceder a una base de datos.

Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de información sobre ellas. Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la información deseada. Entonces, podrá responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas. Los pasos serían:

• Crear una base de datos
• Crear una tabla 
• Introducir datos en la tabla 
• Recuperar datos desde la tabla de varias maneras 
• Emplear múltiples tablas

2.1.5 Variables de Ambiente y Archivos Importantes para Instalación


Para instalar MySQL como primer instancia el archivo primordial es el que se descarga de la web de MySQL. Depende del sistema operativo su instalación.

Variable: Es un espacio en memoria al cual se le da un nombre Hay variables específicas
que se crean al momento de entrar al sistema, pero también hay variables que pueden ser
definidas por el usuario. Las variables son una forma de pasar información a los programas al momento de ejecutarlos.

Variables de Ambiente: Se usan para personalizar el entorno en el que se ejecutan los
programas y para ejecutar en forma correcta los comandos del shell.

El proceso para instalar MySQL desde un archivo ZIP es lo siguiente:



1- Extraer el contenido del archivo dentro del directorio de instalación deseado.



2 - Crear un archivo de opciones


3- Elegir un tipo de servidor MySQL.

4- Iniciar el servidor MySQL

5- Establecer la seguridad de las cuentas de usuario por defecto.

2.1.6 Procedimiento General de Instalación

El proceso de instalación es muy simple y prácticamente no requiere intervención por parte del usuario.





Es similar en otra Bases de Datos.

2.1.7 Procedimiento para Configuración de un DBMS


Para configurar nuestro DBMS podemos acceder a las siguientes pantallas, para Oracle o MySQL.

El esquema de una base de datos (en inglés, Database Schema) describe la estructura de una Base de datos, en un lenguaje formal soportado por un Sistema administrador de Base de datos (DBMS). En una Base de datos Relacional, el Esquema define sus tablas, sus campos en cada tabla y las relaciones entre cada campo y cada tabla.
Oracle generalmente asocia un 'username' como esquemas en este caso SYSTEM y HR (Recursos humanos).

Por otro lado MySQL presenta dos esquemas information_schema y MySQL ambos guardan información sobre privilegios y procedimientos del gestor y no deben ser eliminados.
Adelante, sin miedo…

Optamos por Detailed Configuration, de modo que se optimice la configuración del servidorMySQL

Ha llegado un momento crucial. Dependiendo del uso que vayamos a darle a nuestro servidor deberemos elegir una opción u otra, cada una con sus propios requerimientos de memoria. Puede que te guste la opción Developer Machine, para desarrolladores, la más apta para un uso de propósito general y la que menos recursos consume. Si vas a compartir servicios en esta máquina, probablemente Server Machine sea tu elección o, si vas a dedicarla exclusivamente como servidor SQL, puedes optar por Dedicated MySQL Server Machine, pues no te importará asignar la totalidad de los recursos a esta función.

De nuevo, para un uso de propósito general, te recomiendo la opción por defecto, Multifunctional Database.

InnoDB es el motor subyacente que dota de toda la potencia y seguridad a MySQL. Su funcionamiento requiere de unas tablas e índices cuya ubicación puedes configurar. Sin causas de fuerza mayor, acepta la opción por defecto.

Esta pantalla nos permite optimizar el funcionamiento del servidor en previsión del número de usos concurrentes. La opción por defecto, Decision Support (DSS) / OLAP será probablemente la que más te convenga.

Deja ambas opciones marcadas, tal como vienen por defecto. Es la más adecuada para un uso de propósito general o de aprendizaje, tanto si eres desarrollador como no. Aceptar conexiones TCP te permitirá conectarte al servidor desde otras máquinas (o desde la misma simulando un acceso web típico)

Hora de decidir qué codificación de caracteres emplearás, salvo que quieras empezar a trabajar con Unicode porque necesites soporte multilenguaje, probablemente Latin1 te sirva (opción por defecto).

Instalamos MySQL como un servicio de Windows (la opción más limpia) y lo marcamos para que el motor de la base de datos arranque por defecto y esté siempre a nuestra disposición. La alternativa es hacer esto manualmente.


Además, me aseguro de marcar que los ejecutables estén en la variable PATH, para poder invocar a MySQL desde cualquier lugar en la línea de comandos.

Pon una contraseña al usuario root. Esto siempre es lo más seguro.

Si lo deseas, puedes indicar que el usuario root pueda acceder desde una máquina diferente a esta, aunque debo advertirte de que eso tal vez no sea una buena práctica de seguridad.

Última etapa, listos para generar el fichero de configuración y arrancar el servicio.


Sólo damos al botón de Finalizar y terminamos con la configuración del DBMS.


2.1.8 Comandos Generales de Alta y Baja del DBMS

Una tabla es un sistema de elementos de datos (atributo - valores) que se organizan que usando un modelo vertical - columnas (que son identificados por su nombre)- y horizontal filas. Una tabla tiene un número específico de columnas, pero puede tener cualquier número de filas. Cada fila es identificada por los valores que aparecen en un subconjunto particular de la columna que se ha identificado por una llave primaria.

Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en cuanto a que los datos se almacenan en filas y columnas. Como consecuencia, normalmente es bastante fácil importar una hoja de cálculo en una tabla de una base de datos. La principal diferencia entre almacenar los datos en una hoja de cálculo y hacerlo en una base de datos es la forma de organizarse los datos.

MySQL
MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen:

MyISAM: trata tablas no transaccionales. Proporciona almacenamiento y recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM se soporta en todas las configuraciones MySQL, y es el motor de almacenamiento por defecto a no ser que tenga una configuración distinta a la que viene por defecto con MySQL.

El motor de almacenamiento MEMORY proporciona tablas en memoria. El motor de almacenamiento MERGE permite una colección de tablas MyISAM idénticas ser tratadas como una simple tabla. Como MyISAM, los motores de almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se incluyen en MySQL por defecto.

Nota: El motor de almacenamiento MEMORY anteriormente se conocía como HEAP.

Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos sistemas operativos que la soportan. InnoDB también se incluye por defecto en todas las distribuciones binarias de MySQL 5.0. En distribuciones fuente, puede activar o desactivar estos motores de almacenamiento configurando MySQL a su gusto.

El motor de almacenamiento EXAMPLE es un motor de almacenamiento 'tonto' que no hace nada. Puede crear tablas con este motor, pero no puede almacenar datos ni recuperarlos. El objetivo es que sirva como ejemplo en el código MySQL para ilustrar cómo escribir un motor de almacenamiento. Como tal, su interés primario es para desarrolladores.

NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para implementar tablas que se particionan en varias máquinas. Está disponible en distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento está disponible para Linux, Solaris, y Mac OS X. Los autores mencionan que se añadirá soporte para este motor de almacenamiento en otras plataformas, incluyendo Windows en próximas versiones.

El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades de datos sin índices con una huella muy pequeña.

El motor de almacenamiento CSV guarda datos en archivos de texto usando formato de valores separados por comas.

El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Este motor guarda datos en una base de datos remota. En esta versión sólo funciona con MySQL a través de la API MySQL C Client. En futuras versiones, será capaz de conectar con otras fuentes de datos usando otros drivers o métodos de conexión clientes.

La versión 5 de MySQL crea por defecto tablas InnoDB que permiten el manejo de integridad referencial, transacciones. Al igual que las tablas regulares de Oracle. Para saber si el gestor de base de datos de MySQL que tenemos las soporta es necesario ejecutar la siguiente sentencia.
SHOW VARIABLES like '%innodb%';
Comando Describe
MySQL proporciona este comando que resulta útil para conocer la estructura de una tabla, las columnas que la forman y su tipo y restricciones. La sintáxis es la siguiente:
DESCRIBE nombre Tabla.
DESCRIBE f1;

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 la tabla.

Tablas Temporales
Las tablas temporales solo existen mientras la sesión está viva. Si se corre este código en un script de PHP (Cualquier otro lenguaje), la tabla temporal se destruirá automáticamente al término de la ejecución de la página. Si no específica MEMORY, la tabla se guardará por defecto en el disco.
CREATE TEMPORARY TABLE temporal (
ife INTEGER (13) PRIMARY KEY,
nombre CHAR (30) NOT NULL UNIQUE
);
Este tipo de tabla solo puede ser usada por el usuario que la crea.
Si creamos una tabla que tiene el mismo nombre que una existente en la base de datos, la que existe quedará oculta y trabajaremos sobre la temporal.

Tablas Memory (Head)
Se almacenan en memoria
Una tabla head no puede tener más de 1600 campos
Las tablas MEMORY usan una longitud de registro fija.
MEMORY no soporta columnas BLOB o TEXT.
MEMORY en MySQL 5.0 incluye soporte para columnas AUTO_INCREMENT e índices en columnas que contengan valores NULL.
Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra tabla no-TEMPORARY).
CREATE TEMPORARY TABLE temporal (
ife INTEGER (13) PRIMARY KEY,
nombre CHAR (30) NOT NULL UNIQUE
) ENGINE = MEMORY;


Conclusión:
Los sistemas gestores de bases de datos, nos facilitan el desempeño y manejo de la información útil. Su funcionamiento depende de qué tanto provecho seamos capaces darle a estas herramientas tan poderosas, por tal razón es preciso conocer definir, manejar e identificar los SGBD para lograr extraer todo el potencial que encierran estos novedosos programas. Pero también es muy importante como es su estructura, características, procedimientos de instalación y configuración, de igual manera conocer sobre la memoria y sus diferentes tipos y los diferentes procesos que nos pueden ayudar en diferentes situaciones.

martes, 10 de abril de 2018

Procedimientos Almacenados (Bases de Datos)

Procedimientos almacenados. Conjunto de comandos que pueden ser ejecutados directamente en el servidor, es decir, será ejecutado por el servidor de Base de Datos y no por el programa cliente que lo accede, permitiendo la ejecución de una acción o conjunto de acciones especificas.


Características

Se almacenan en la propia Base de Datos y constituyen un objeto más dentro de esta. Tienden a mejorar el rendimiento de los sistemas producto a que reducen en intercambio entre cliente y servidor. Los procedimientos almacenados son reutilizables, de manera que los usuarios mediante la aplicación cliente no necesitan relanzar los comandos individuales, sino que pueden llamar el procedimiento para ejecutarlo en el servidor tantas veces como sea necesario.

Elementos de los procedimientos almacenados

Los procedimientos almacenados están compuestos por algunos de estos elementos:
Parámetros de entrada (pueden esperar parámetros)
Parámetros de salida (pueden devolver resultados)
Declaración de variables (puede usarse variables en su cuerpo)
Cuerpo del procedimiento (en su cuerpo se indican las acciones a realizar)

Tanto los parámetros de entrada como los de salida son opcionales. Podemos tener un procedimiento que no tenga parámetros de entrada, pero sí de salida y viceversa. Como todo buen programador sabe, los parámetros de entrada sirven para pasarle datos al procedimiento que necesita para llevar a cabo una acción determinada. Los parámetros de salida devuelven al programa cliente que ejecutó el procedimiento el resultado del mismo.

Diferencias entre procedimientos y macros (Ejemplo de Macros)







La principal diferencia entre una macro y un procedimiento es que en la macro se hace posible el paso de parámetros y en el procedimiento no (esto es aplicable solo para el MASM, hay otros lenguajes de Programación que si lo permiten). Al momento de ejecutarse la macro cada parámetro es sustituido por el nombre o valor especificado al momento de llamarla.


Podemos decir entonces que un procedimiento es una extensión de un determinado programa, mientras que la macro es un módulo con funciones específicas que puede ser utilizado por diferentes programas.


Otra diferencia entre una macro y un procedimiento es la forma de llamar a cada uno, para llamar a un procedimiento se requiere el uso de una directiva, en cambio la llamada a las macros se realiza como si se tratara de una instrucción del ensamblador.


Las macros son mas rápidas porque se ejecutan en linea en un programa y los procedimientos son mas lentos a la hora de ejecutar el programa.
Las macros pueden pasar y recibir parámetros.
La escritura de una macro es simple en cambio la de los procedimientos es mas compleja.

Los procedimientos ayudan a reducir el código y los macros lo hacen mas grande.