Light Grey Pointer

martes, 29 de agosto de 2017

Ejemplos de mnemónicos en lenguaje ensamblador.

¿Qué es un mnemónico?

En informática, un mnemónico es una palabra que sustituye a un código de operación (lenguaje de máquina), lo que facilita la programación, lo que guarda mucha relación con el lenguaje ensamblador.
En muchas ocasiones se puede tomar a nivel de usuario como las teclas de acceso rápido que vemos en las ventanas, por ejemplo en un navegador encontramos el menú típico que dice Archivo, Editar, Ver, entre otras opciones, el mnemónico sería el valor de la letra que esta subrayada, así si presionamos la tecla alt y luego por ejemplo la A, se nos abrirá el menú de archivo, es por esta razón que se puede decir que la A en el menú resulta la tecla mnemónica de Archivo, o la tecla de acceso rápido a la opción Archivo.
El lenguaje Mnemónico también es utilizado en la programación de procesadores lógicos programables (PLC), haciendo más rápida y eficiente la construcción de programas de alta complejidad.

Dentro de los principales mnemónico tenemos:

MOV (transferencia)

Sintaxis: MOV dest, origen.
Transfiere datos de longitud byte o palabra del operando origen al operando destino. Pueden ser operando origen y operando destino cualquier registro o posición de memoria direccionada de las formas ya vistas, con la única condición de que origen y destino tengan la misma dimensión. Existen ciertas limitaciones, como que los registros de segmento no admiten el direccionamiento inmediato: es incorrecto MOV DS,4000h; pero no lo es por ejemplo MOV DS,AX o MOV DS,VARIABLE.

Ejemplos:
mov  ds,ax
mov  bx,es:[si]
mov  si,offset dato
En el último ejemplo, no se coloca en SI el valor de la variable dato sino su dirección de memoria o desplazamiento respecto al segmento de datos.

LEA (carga dirección efectiva)

Sintaxis: LEA destino, origen
Transfiere el desplazamiento del operando fuente al operando destino. Otras instrucciones pueden a continuación utilizar el registro como desplazamiento para acceder a los datos que constituyen el objetivo. El operando destino no puede ser un registro de segmento. En general, esta instrucción es equivalente a MOV destino,OFFSET fuente y de hecho los buenos ensambladores (TASM) la codifican como MOV para economizar un byte de memoria. Sin embargo, LEA es en algunos casos más potente que MOV al permitir indicar registros de índice y desplazamiento para calcular el offset:
lea  dx,datos[si]
En el ejemplo de arriba, el valor depositado en DX es el offset de la etiqueta datos más el registro SI.
Esa sola instrucción es equivalente a estas dos:
mov  dx,offset datos
add  dx,si

POP (extraer de la pila)

Sintaxis: POP destino
Transfiere el elemento palabra que se encuentra en lo alto de la pila (apuntado por SP) al operando destino que a de ser tipo palabra, e incrementa en dos el registro SP. La instrucción POP CS, poco útil, no funciona correctamente en los 286 y superiores.

Ejemplos:
pop  ax
pop  pepe

PUSH (introduce en la pila)

Sintaxis: PUSH origen
Decrementa el puntero de pila (SP) en 2 y luego transfiere la palabra especificada en el operando origen a la cima de la pila. El registro CS aquí sí se puede especificar como origen, al contrario de lo que afirman algunas publicaciones.

Ejemplo:  push  cs

CALL (llamada a subrutina)

Sintaxis: CALL destino
Transfiere el control del programa a un procedimiento, salvando previamente en la pila la dirección de la instrucción siguiente, para poder volver a ella una vez ejecutado el procedimiento. El procedimiento puede estar en el mismo segmento (tipo NEAR) o en otro segmento (tipo FAR). A su vez la llamada puede ser directa a una etiqueta (especificando el tipo de llamada NEAR -por defecto- o FAR) o indirecta, indicando la dirección donde se encuentra el puntero. Según la llamada sea cercana o lejana, se almacena en la pila una dirección de retorno de 16 bits o dos palabras de 16 bits indicando en este último caso tanto el offset (IP) como el segmento (CS) a donde volver.

Ejemplos:
call  proc1
dir  dd  0f000e987h
call  dword ptr dir
En el segundo ejemplo, la variable dir almacena la dirección a donde saltar. De esta última manera -conociendo su dirección- puede llamarse también a un vector de interrupción, guardando previamente los flags en la pila (PUSHF), porque la rutina de interrupción retornará (con IRET en vez de con RETF) sacándolos.

JMP (salto)

Sintaxis: JMP dirección o JMP SHORT dirección
Transfiere el control incondicionalmente a la dirección indicada en el operando. La bifurcación puede ser también directa o indirecta como anteriormente vimos, pero además puede ser corta (tipo SHORT) con un desplazamiento comprendido entre -128 y 127; o larga, con un desplazamiento de dos bytes con signo. Si se hace un JMP SHORT y no llega el salto (porque está demasiado alejada esa etiqueta) el ensamblador dará error. Los buenos ensambladores (como TASM) cuando dan dos pasadas colocan allí donde es posible un salto corto, para economizar memoria, sin que el programador tenga que ocuparse de poner short. Si el salto de dos bytes, que permite desplazamientos de 64 Kb en la memoria sigue siendo insuficiente, se puede indicar con far que es largo (salto a otro segmento).

Ejemplos:
 jmp  etiqueta
jmp  far ptr etiqueta

RET / RETF (retorno de subrutina)

Sintaxis: RET [valor] o RETF [valor]
Retorna de un procedimiento extrayendo de la pila la dirección de la siguiente dirección. Se extraerá el registro de segmento y el desplazamiento en un procedimiento de tipo FAR (dos palabras) y solo el desplazamiento en un procedimiento NEAR (una palabra). si esta instrucción es colocada dentro de un bloque PROC-ENDP (como se verá en el siguiente capítulo) el ensamblador sabe el tipo de retorno que debe hacer, según el procedimiento sea NEAR o FAR. En cualquier caso, se puede forzar que el retorno sea de tipo FAR con la instrucción RETF. Valor, si es indicado permite sumar una cantidad valor en bytes a SP antes de retornar, lo que es frecuente en el código generado por los compiladores para retornar de una función con parámetros. También se puede retornar de una interrupción con RETF 2, para que devuelva el registro de estado sin restaurarlo de la pila.

INT (interrupción)

Sintaxis: INT n (0 <= n <= 255)
Inicializa un procedimiento de interrupción de un tipo indicado en la instrucción. En la pila se introduce al llamar a una interrupción la dirección de retorno formada por los registros CS e IP y el estado de los indicadores. INT 3 es un caso especial de INT, al ensamblarla el ensamblador genera un sólo byte en vez de los dos habituales; esta interrupción se utiliza para poner puntos de ruptura en los programas. Véase también IRET y el apartado 1 del capítulo VII.

Ejemplo:  int  21h

ADD (suma)

Sintaxis: ADD destino, origen
Suma los operandos origen y destino almacenando el resultado en el operando destino. Se activa el acarreo si se desborda el registro destino durante la suma.

Ejemplos:
add  ax,bx
add  cl,dh

SUB (resta)

Sintaxis: SUB destino, origen
Resta el operando destino al operando origen, colocando el resultado en el operando destino. Los operandos pueden tener o no signo, siendo necesario que sean del mismo tipo, byte o palabra.

Ejemplos:
sub  al,bl
sub  dx,dx

MUL (multiplicación sin signo)

Sintaxis: MUL origen  (origen no puede ser operando inmediato)
Multiplica el contenido sin signo del acumulador por el operando origen. Si el operando destino es un byte el acumulador es AL guardando el resultado en AH y AL, si el contenido de AH es distinto de 0 activa los indicadores CF y OF. Cuando el operando origen es de longitud palabra el acumulador es AX quedando el resultado sobre  DX y AX, si el valor de DX es distinto de cero los indicadores CF y OF se activan.

Ejemplo:
mul  byte ptr ds:[di]
mul  dx
mul  cl

DIV (división sin signo)

Sintaxis: DIV origen  (origen no puede ser operando inmediato)
Divide, sin considerar el signo, un número contenido en el acumulador y su extensión (AH, AL si el operando es de tipo byte o DX, AX si el operando es palabra) entre el operando fuente. El cociente se guarda en AL o AX y el resto en AH o DX según el operando sea byte o palabra respectivamente. DX o AH deben ser cero antes de la operación. Cuando el cociente es mayor que el resultado máximo que puede almacenar, cociente y resto quedan indefinidos produciéndose una interrupción 0. En caso de que las partes más significativas del cociente tengan un valor distinto de cero se activan los indicadores CF y OF.

Ejemplo:
div  bl
div  mem_pal


domingo, 27 de agosto de 2017

Importancia de la Programación en Lenguaje Ensamblador.

Definición: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador.

La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.

Procesador y sus Registros Internos.

Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionable por medio de un nombre. Los bits por convención, se numeran de derecha a izquierda, como en:

 ... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Registros de segmento
Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual. 

Registro CS. 
El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.

Registro DS. 
La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte específico en el segmento de datos.

Registro SS. 
El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que está siendo direccionada.

Registros ES. 
Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES está asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.

Registros FS y GS. 
Son registros extra de segmento en los procesadores 80386 y posteriores. 

Registros de propósito general.
Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del sistema. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El último byte de la izquierda es la parte "alta", y el ultimo byte de la derecha es la parte "baja". Por ejemplo, el registro CX consta de una parte CH (alta) y una parte Cl (baja), y usted puede referirse a
cualquier parte por su nombre.

Registro AX. 
El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. También, algunas operaciones generan código más eficiente si se refieren al AX en lugar de a los otros registros.

Registro BX. 
El BX es conocido como el registro base ya que es el único registro de propósito general que puede ser índice para direccionamiento indexado. También es común emplear el BX para cálculos. 

Registro DX. 
El DX es conocido como l registro de datos. Alguna operaciones de entrada/salida requieren uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos. 

Software Para Trabajar con Lenguaje Ensamblador.

1. WinAsm

WinAsm Studio es un entorno de desarrollo integrado (IDE) gratuito para desarrollar programas en Windows 32-bit y DOS 16-bit utilizando Microsoft Macro Assembler MASM y FASM utilizando el Add-In para FASM. Ha sido escrito por Antonis Kyprianou (akyprian).

2. Easy Code

Entorno visual de desarrollo en lenguaje ensamblador.

Easy Code es el entorno visual de programación en ensamblador hecho para generar aplicaciones de 32 bits para Windows. La interfaz de Easy Code, muy parecida a la de Visual Basic, le permite programar una aplicación en ensamblador de manera rápida y fácil como nunca antes había sido posible.

3. RadASM

RadASM es un IDE gratuito para ensambladores de 32 bits para Windows.
Soporta MASM, TASM, FASM, NASM, GoASM y HLA.

4. Fresh IDE


Es un IDE visual para el lenguaje ensamblador con un compilador integrado Flat assembler (FASM). Está escrito en Fresh IDE y es una aplicación independiente compilable. Es totalmente compatible con FASM y puede ser compilado también con todas las versiones de FASM. El objetivo principal de Fresh IDE es hacer la programación en ensamblador tan rápido y eficiente como en los lenguajes de alto nivel, sin sacrificar el tamaño de una pequeña aplicación que potencia el lenguaje ensamblador. Se trata de una aplicación Windows, pero se ejecuta en Wine muy bien y puede crear, compilar, depurar y ejecutar aplicaciones para Windows y Linux en Windows y Linux.

5. Assembler IDE

Se trata de un entorno de desarrollo para código ensamblador, cuyo propósito es automatizar al máximo este proceso integrando el editor de código, el depurador (debugger) y el desensamblador.

Entre las posibilidades que nos ofrece el entorno Assembler IDE, destacan la depuración de código (debugging), el editor de código, el desensamblador o la compilación con NASM, TASM/MASM y FASM.

Como puedes comprobar se trata de una herramienta de lo más completita.

Y no dejes que te intimide el hecho de que el programa Assembler IDE esté únicamente disponible con los textos que aparecen en pantalla en idioma inglés, ya que sus desarrolladores han diseñado una interfaz de usuario que resulta muy clara, sencilla e intuitiva, de tal manera que cualquiera que se ponga a los mandos de esta aplicación la encontrará de lo más accesible.

Y no queremos poner el punto y final a esta reseña sin mencionar el que, sin lugar a dudas, será uno de los aspectos más interesantes y atractivos del programa: su inmejorable precio. Y es que, como estamos ante una aplicación que se distribuye mediante licencia "freeware", podremos descargar Assembler IDE gratis.

jueves, 27 de abril de 2017

Practica: Bitácora en MySQL.

1.- Se crea la base de datos.


2.- Usamos nuestra base de datos y creamos 2 tablas, una para insertar datos y otra para llevar un registro de las acciones en la primera tabla.


3.- Creamos un TRIGGER para ingresar registros en la segunda tabla (bitácora).


4.- Insertamos datos en la primera tabla (carrera).


5.- Verificamos que en la tabla bitácora se agreguen los registros de las acciones en la tabla carrera con uso del TRIGGER.


miércoles, 5 de abril de 2017

Práctica 1: MySQL Base de Datos


Primero conectarse a MySQL mediante el cmd:


Creamos una Base de Datos con lo siguiente:


Después asignamos la base de datos para trabajar con ella y crear una tabla de la siguiente manera:


Para insertar registros a la tabla tenemos que hacer la siguiente instrucción:


Mostrar valores en la tabla:



Instrucción Rollback.

La instrucción rollback nos permite deshacer una instrucción previamente ejecutada. Para utilizarla primero usamos BEGIN y procedemos a insertar un registro en la tabla, después ejecutamos la instrucción rollback y ese registro se eliminara de la tabla.


Instruccion COMMIT

La instrucción COMMIT nos permite guardar cualquier cambio hecho en una tabla sin perder los datos, se necesita también empezar con un BEGIN, agregar los datos y después ejecutar la instrucción COMMIT, se puede confirmara que se guardo al terminar la conexión y volver a entrar para confirmar que los valores siguen ahí.


Administración de Bases de Datos - Unidad: 2

Unidad 2
Arquitectura del gestor

2.1. Características del DBMS

Control de la redundancia de datos
Este consiste en lograr una mínima cantidad de espacio de almacenamiento para almacenar los datos evitando la duplicación de la información. De esta manera se logran ahorros en el tiempo de procesamiento de la información, se tendrán menos inconsistencias, menores costos operativos y hará el mantenimiento más fácil.

Compartimiento de datos
Una de las principales características de las bases de datos, es que los datos pueden ser compartidos entre muchos usuarios simultáneamente, proveyendo, de esta manera, máxima eficiencia.

Mantenimiento de la integridad
La integridad de los datos es la que garantiza la precisión o exactitud de la información contenida en una base de datos. Los datos interrelacionados deben siempre representar información correcta a los usuarios.

Soporte para control de transacciones y recuperación de fallas.
Se conoce como transacción toda operación que se haga sobre la base de datos. Las transacciones deben por lo tanto ser controladas de manera que no alteren la integridad de la base de datos. La recuperación de fallas tiene que ver con la capacidad de un sistema DBMS de recuperar la información que se haya perdido durante una falla en el software o en el hardware.

Independencia de los datos.
En las aplicaciones basadas en archivos, el programa de aplicación debe conocer tanto la organización de los datos como las técnicas que el permiten acceder a los datos. En los sistemas DBMS los programas de aplicación no necesitan conocer la organización de los datos en el disco duro. Este totalmente independiente de ello.

Seguridad
La disponibilidad de los datos puede ser restringida a ciertos usuarios. Según los privilegios que posea cada usuario de la base de datos, podrá acceder a mayor información que otros.

Velocidad
Los sistemas DBMS modernos poseen altas velocidades de respuesta y proceso.

Independencia del hardware
La mayoría de los sistemas DBMS están disponibles para ser instalados en múltiples plataformas de hardware.


2.1.1 Estructura de memoria y procesos de la instancia


La memoria se puede estructurar en las siguientes partes:

·   Area Global del sistema (SGA), la cual se comparte entre todos los servidores y los procesos en segundo plano.
·   Áreas globales de programas (PGA), que es privada para cada servidor y proceso en segundo planos; a cada proceso se asigna un PGA.
·   Área de Ordenaciones (Sort Areas).
·   Memoria Virtual
·   Area de codigo de software.


Cada instancia está asociada a una base de datos. Cuando se inicia una base de datos en un servidor (independientemente del tipo de computadora), se le asigna un área de memoria (SGA) y lanza uno o más procesos. A la combinación del SGA y de los procesos es lo que se llama instancia. La memoria y los procesos de una instancia gestionan los datos de la base de datos asociada de forma eficiente y sirven a uno o varios usuarios.
Cuando se inicia una instancia El DBMS monta la base de datos, es decir, asocia dicha instancia a su base de datos correspondiente. En un misma computadora pueden ejecutarse varias instancias simultáneamente, accediendo cada una a su propia base de datos física.
Únicamente el administrador de la base de datos puede iniciar una instancia y abrir una base de datos.

2.1.2 Estructuras físicas de la base de datos


En una base de datos almacenamos información relevante para nuestro negocio u organización y desde el punto de vista físico, la base de datos está conformada por dos tipos de archivos:

·         Archivos de datos: contiene los datos de la base de datos internamente, está compuesto por páginas enumeradas secuencialmente que representa la unidad mínima de almacenamiento. Cada página tiene un tamaño de 8kb de información. Existen diferentes tipos de páginas, a tener en cuenta:

Páginas de datos: es el tipo principal de páginas y son las que almacenan los registros de datos.

Páginas de espacio libre (PFS Page Free Space): almacenan información sobre la ubicación y el tamaño del espacio libre.

Paginas GAM and SGAM: utilizadas para ubicar extensiones.

Páginas de Mapa de Ubicaciones de índices (IAM – Index Allocation Map): contiene información sobre el almacenamiento de páginas de una tabla o índice en particular.

Páginas Índices: Utilizada para almacenar registros de índices.

·         Archivo de Registro de Transacciones: El propósito principal del registro de transacciones es la recuperación de datos a un momento en el tiempo o complementar una restauración de copia de respaldo completa (full backup). El registro de transacciones no contiene páginas, sino entradas con todos los cambios realizados en la base de datos, como son las modificaciones de datos, modificaciones de la base de datos y eventos de copia de seguridad y restauración. El acceso a datos es secuencial, ya que el registro de transacciones se actualiza en el mismo orden cronológico en el que se hacen las modificaciones.

Este archivo no puede ser leído por herramientas de usuario de SQL aunque existen herramientas de terceros que leen este archivo para recuperar los cambios efectuados. Dependiendo de la versión el registro de transacciones se utiliza para otros propósitos como por ejemplo bases de datos espejo (mirror) y transporte remoto de transacciones (log shipping).
Para muchos de los administradores de bases de datos, la imagen anterior representa la parte lógica y la parte física, donde:

Data File: Los datafiles son los archivos físicos en los que se almacenan los objetos que forman parte de un tablespace. Un datafile pertenece solamente a un tablespace y a una instancia de base de datos. Un tablespace puede estar formado por uno o varios datafiles. Cuando se crea un datafile, se debe indicar su nombre, su ubicación o directorio, el tamaño que va a tener y el tablespace al que va a pertenecer. Además, al crearlos, ocupan ya ese espacio aunque se encuentran totalmente vacíos, es decir, Oracle reserva el espacio para poder ir llenándolo poco a poco con posterioridad. Por supuesto, si no hay sitio suficiente para crear un archivo físico del tamaño indicado, se producirá un error y no se creará dicho archivo.

2.1.3 Requerimientos para instalación de la base de datos.


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.

2.1.4 Instalación del software de BD en modo transaccional

Debido al constante crecimiento de datos que generan las empresas hoy en día, se ha vuelto muy necesaria la búsqueda de nuevas plataformas para almacenar y analizar la información, ambientes que consuman menos recursos, que sean más escalables y que provean una alta disponibilidad. La solución consiste en el procesamiento paralelo de los datos de una base de datos.

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 los 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.

2.1.5 Variables de Ambiente y archivos importantes para 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.
Toman su valor inicial generalmente de un archivo .profile, pero hay veces en que el usuario tiene que modificar los valores de alguna variable de ambiente cuando está tratando de instalar o ejecutar un nuevo programa

A continuación se comentan las opciones más utilizadas de la sección mysqld (afectan al funcionamiento del servidor MySQL), se almacenan en el archivo my.cnf (o my.ini)

basedir = ruta: Ruta a la raíz MySQL
console: Muestra los errores por consola independientemente de lo que se configure para log_error.
datadir = ruta: Ruta al directorio de datos.
default-table-type = tipo: Tipo de la Tabla InnoDB o, MyISAM.
flush: Graba en disco todos los comandos SQL que se ejecuten (modo de trabajo, sin transacción).
general-log = valor: Con valor uno, permite que funcione el archivo LOG para almacenar las consultas realizadas.
general-log-file = ruta: Indica la ruta al registro general de consultas.
language: Especifica el idioma de los lenguajes de error, normalmente esots archivos de lenguaje, están bajo /usr/local/share.
log-error = ruta: Permite indicar la ruta al registro de errores.
log = ruta: Indica la ruta al registro de consultas.
long-query-time = n: Segundos a partir de los cuales una consulta que tardes más, se considerará una consulta lenta.
og-bin = ruta: Permite indicar la ruta al registro binario.
pid-file = ruta: Ruta al archivo que almacena el identificador de proceso de MySQL.
port = puerto: Puerto de escucha de MySQL.
skip-grant-tables: Entra al servidor saltándose las tablas de permisos, es decir todo el mundo tiene privilegios absolutos.
skip-networking: El acceso a MySQL se hará solo desde el servidor local.
slow-query-log = 0|1: Indica si se hace LOG de las consultas lentas.
slow-query-log-file = ruta: Ruta al archivo que hace LOG de las consultas lentas.
socket = ruta: Archivo o nombre de socket a usar en las conexiones locales.
standalone: Para Windows, hace que el servidor no pase a ser un servicio.
user = usuario: Indica el nombre de usuario con el que se iniciará sesión en MySQL.
tmpdir = ruta: Ruta al directorio para archivos temporales.

2.1.6 Procedimiento general de instalación de un DBMS

MySQL Enterprise Edition
MySQL Enterprise Edition incluye el conjunto más completo de características avanzadas y herramientas de gestión para alcanzar los más altos niveles de escalabilidad, seguridad, fiabilidad y tiempo de actividad. Reduce el riesgo, costo y complejidad en el desarrollo, implementación y administración de aplicaciones críticas de negocio MySQL.
El MySQL Enterprise incluye las siguientes opciones:
Backup: Realiza copias de seguridad de bases de datos MySQL en línea, de los subconjuntos de tablas InnoDB, y la recuperación mediante puntos de restauración.
Alta Disponibilidad: es proporcionada con soluciones certificadas que incluyen replicación de MySQL.

Escalabilidad: permite alcanzar el rendimiento sostenido y la escalabilidad de cada vez mayor de usuarios, consulta, y las cargas de datos
MySQL Enterprise Security: Proporciona listas para utilizar los módulos de autenticación externos para integrar fácilmente las infraestructuras existentes de seguridad, incluyendo Pluggable Authentication Modules y el directorio activo de Windows
MySQL Enterprise Monitor: supervisa continuamente su base de datos y de forma proactiva le asesora sobre cómo implementar las mejores prácticas de MySQL, incluyendo consejos y alertas de seguridad
MySQL Query Analyzer: Mejora el rendimiento de las aplicaciones mediante el control de rendimiento de las consultas y precisa localización de código SQL que está causando una desaceleración
MySQL Workbench: Cuenta con ofertas de modelado de datos, desarrollo de SQL y herramientas de administración integral para la administración del servidor de configuración del usuario, y mucho más.
El proceso de instalación es muy simple y prácticamente no requiere intervención por parte del usuario.

2.1.7 Procedimiento para Configuración de un DBMS

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.

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.

jueves, 16 de marzo de 2017

Administración de Bases de Datos Unidad 1.

Perspectiva práctica de la administración de bases de datos.

1.1. Administrador de Bases de Datos (DBA)


Un administrador de bases de datos (o DBA) tiene la responsabilidad de mantener y operar las bases de datos que conforman el sistema de información de una compañía.

Debido a la importancia de los datos que están a su cargo, el administrador de bases de datos debe ser experto en TI (tecnología de la información), teniendo particular conocimiento de DBMS (sistemas de administración de bases de datos) y el lenguaje de consulta SQL. También debe tener conocimiento de varios tipos de lenguaje de programación para poder automatizar ciertas tareas.
 Una de sus tareas es la de asegurar la integridad del sistema de información de la compañía. Además, es necesario que posea un buen entendimiento de DBMS para optimizar las consultas, ajustar la configuración de DBMS o para sincronizar en forma precisa las herramientas de control del acceso a las bases de datos.
Es posible que el administrador de bases de datos tenga que brindar asistencia técnica a usuarios de las aplicaciones cliente o equipos de desarrollo para solucionar problemas, dar consejos o ayudar a resolver consultas complicadas.


1.1.1 Funciones de un DBA


Los DBA realizan pruebas de rendimiento, pruebas de impacto, pruebas funcionales, pruebas de código, pruebas de carga de datos, pruebas de implementación y pruebas de integración en proyectos Investigación, desarrollo e innovación. Para la ejecución de pruebas es necesario aplicar las metodologías basadas en Ingeniería del software, sus aplicaciones funcionales y los requerimientos de calidad, añadiendo las líneas base de la ingeniería requerimientos en la inteligencia de negocios y las tecnologías de la información.


1.1.2 Relación del DBA con otras áreas de los Sistemas.


En sistemas muy complejos cliente/servidor y de tres capas, la base de datos es sólo uno de los elementos que determinan la experiencia de los usuarios en línea y los programas desatendidos. El rendimiento es una de las mayores motivaciones de los DBA para coordinarse con los especialistas de otras áreas del sistema fuera de las líneas burocráticas tradicionales. Uno de los deberes menos respetados por el administrador de base de datos es el desarrollo y soporte a pruebas, mientras que algunos otros encargados lo consideran como la responsabilidad más importante de un DBA. Las actividades de soporte incluyen la colecta de datos de producción para llevar a cabo pruebas con ellos; consultar a los programadores respecto al desempeño; y hacer cambios a los diseños de tablas de manera que se puedan proporcionar nuevos tipos de almacenamientos para las funciones de los programas.


1.2. Análisis de los manejadores de bases de datos


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.
Microsoft SQL Server al igual que Oracle DB y MySQL Server son sistemas de gestión o manejadores de base de datos, existen muchos como:

  •  MySQL
  •  PosgreSQL
  •  Microsoft SQL Server
  •  Oracle
  •  Microsoft Access
  •  Microsoft Visual Fox Pro
  •  Firebird
  • mSQL (mini SQL)
  •  IBM DB2
  •  IBM Informix
  •  SQLite
  •  Sybase ASE
  •  Paradox
  •  dBase

1.3. Consideraciones para elegir un buen DBMS



Debido a que en el mercado mundial existen muchos manejadores de bases de datos es importante tomar en cuenta algunas consideraciones de importancia para elegir cual es el que más conviene a nuestros intereses. Por ejemplo:
+ Cual es la disponibilidad de soporte de este gestor de bases de datos
Es factible que encuentre personal capacitado fácilmente para resolver problemas en mi gestor de bases de datos, por ejemplo veamos la capacidad de personas que usan Oracle, SQL Server, PosgreSQL, MySQL, etc., las entidades tienen que ser gestionadas por un Administrador de bases de datos, de igual manera debe considerarse si es posible determinar el costo de un especialista en dicho gestor de base de datos o si el gestor nos brinda soporte en línea o vía remota.
Si las aplicaciones que van a consumir esos datos son de misión critica y se requiere alta disponibilidad y soluciones rápidas, no es recomendable usar un DBMS poco conocido en el mercado y mucho menos que sea nuevo como los gestores non-SQL ya que nadie los conoce y si mi gestor de base de datos sufre una caída, quien, cuándo y cuánto va a costar repararlo ya que a pesar de poseer una muy buena política de backups, puede que el mismo servidor se dañe (hardware) y si no consigo alguien que lo ponga en línea lo mas rápido posible estaré en problemas pues la empresa va a tener una larga caída que se representara en dinero y falta de productividad.
+ Cual es la carga de transacciones que va a soportar esa base de datos
Si voy a necesitar una alta carga de transacciones (mayores a 200 usuarios conectados al mismo tiempo) es necesario que se vaya pensando en algo robusto y bien probado en el mercado servidores como cualquier versión express (SQL Servr, DB2, etc.) no es aceptable, si lo que se desea es algo libre pues PostgreSQL es la respuesta .
+ Que sistema operativo se planea implementar
Está comprobado que SGBD diseñados en opensource (Código abierto) corren mucho más rápido en entornos operativos basados en UNIX que sobre Windows, así que aquí debería de tenerse en cuenta el sistema operativo, si no se ha tomado la decisión entonces elegir el sistema operativo del servidor dependiendo del SGBD, en foros como los de PosgreSQL, por ejemplo, la gente que ha realizado pruebas de este SGBD indican que se tiene un 25% de optimización corriendo sobre LINUX que sobre Windows.
Si no se tiene un sistema operativo en el servidor sería recomendable elegirlo en base al SGBD y esto también tendría consideraciones como la operatividad y la capacidad de administración de un servidor en tal o cual SO y los gastos que implicarían su mantenimiento.
+ En caso de un aplicativo WEB cuales serán las consideraciones
No hay muchas consideraciones que tomar en cuanto al aplicativo ya que si esta hecho sobre PHP, IIS en sus últimas versiones implementa un soporte que es algunas veces superior al que implementa Apache, pero lo óptimo sería que la aplicación se pudiera adecuar a cualquier SGBD tal cual lo hace algunos CMS que pueden instalarse en varios SGBD.
Siempre y por siempre seria la disponibilidad y la carga de trabajo que va a tener el servidor de datos y si es posible la capacidad de alta disponibilidad, aquí entrarían a tratar también términos como Cloud, Private cloud etc.


1.4. Nuevas tecnologías y aplicaciones de los sistemas de bases de datos.


Los sistemas orientados a los datos se caracterizan porque los datos no son de una aplicación sino de una Organización entera que los va a utilizar; se integran las aplicaciones, se diferencian las estructuras lógicas y físicas. El concepto de relación cobra importancia. Originalmente las aplicaciones cubrían necesidades muy específicas de procesamiento, se centraban en una tarea específica. Las bases de datos evitan las inconsistencias que se producían por la utilización de los mismos datos lógicos desde distintos archivos a través de procesos independientes.
El mundo real considera interrelaciones entre datos y restricciones semánticas que deben estar presentes en una base de datos. No solo debe almacenar entidades y atributos, sino que también debe almacenar interrelaciones entre datos.
La redundancia de datos debe ser controlada, pero si se admite cierta redundancia física por motivos de eficiencia.
Pretenden servir a toda la organización.
La independencia de los tratamientos sobre los datos y estos mismos, ha tenido una enorme influencia en la arquitectura de los SGBD.
La definición y descripción del conjunto de datos contenido en la base debe ser única e integrada con los mismos datos.