Documente Academic
Documente Profesional
Documente Cultură
Y DE SISTEMAS
ARQUITECTURA DE DATOS II
TRABAJO PARCIAL
INTEGRANTES:
PROFESOR:
BLOQUE:
2011
Contenido
1. INTRODUCCION..........................................................................................4
2. FUNDAMENTO TEORICO ............................................................................5
2.1 IBM DB2................................................................................................5
2.1.1 Introducción....................................................................................5
2.1.2 Reseña histórica..............................................................................6
2.1.3 Compatibilidad................................................................................7
2.1.4 Escalabilidad...................................................................................7
2.1.5 Integridad........................................................................................9
2.1.6 Seguridad........................................................................................9
2.1.7 Características..............................................................................10
2.2 MySQL.................................................................................................11
2.2.1 Introducción..................................................................................11
2.2.2 Reseña Histórica...........................................................................12
2.2.3 Interioridades y portabilidad ........................................................12
2.2.4 Tipos de columnas .......................................................................13
2.2.5 Sentencias y funciones ................................................................13
2.2.6 Seguridad .....................................................................................14
2.2.7 Escalabilidad y límites .................................................................14
2.2.8 Conectividad ................................................................................14
2.2.9 Localización ..................................................................................14
2.2.10 Clientes y herramientas .............................................................15
3. ARQUITECTURA........................................................................................15
3.1 Arquitectura general...........................................................................15
3.2 Arquitectura DB2................................................................................19
3.2.1 Funcionamiento............................................................................21
Client Programs................................................................................22
. Listener..........................................................................................22
Agents..............................................................................................22
db2fmp.............................................................................................23
Threads y Procesos..........................................................................23
3.2.2 Instancia.......................................................................................24
Almacenamiento Físico..........................................................................27
Almacenamiento Logico.........................................................................28
3.2 Arquitectura MySQL............................................................................30
FUNCIONAMIENTO DEL SERVIDOR MySQL..............................................30
Arquitectura lógica de MySQL................................................................31
Motores de almacenamiento..................................................................34
¿Cómo seleccionar el motor de almacenamiento?.................................36
La capa de aplicación MySQL.................................................................37
La capa lógica MySQL............................................................................38
Administración de transacciones......................................................38
Los conectores.......................................................................................40
El gestor de conexiones.........................................................................40
El procesamiento y optimización de consultas.......................................41
La caché de consultas............................................................................41
El Control de Concurrencia.....................................................................42
La gestión de transacciones y recuperación..........................................42
3.3 Sentencias..........................................................................................42
4. COMPARACIONES.....................................................................................44
IBM DB2....................................................................................................44
MySQL.......................................................................................................45
Comandos Principales...............................................................................46
MY SQL MINIMUN REQUIREMENTS.............................................................48
DB2 WINDOWS..........................................................................................49
DB2 EXPRESS C VS MYSQL COMMUNITY...................................................54
Encriptación de red nativa...........................................................55
Auditoria.......................................................................................55
Recursos limitables......................................................................55
Certificación de seguridad............................................................55
CONCLUSIONES............................................................................................57
6. BIBLIOGRAFIA...........................................................................................58
1. INTRODUCCION
2. FUNDAMENTO TEORICO
Se podría decir que este producto de cierta manera pretende ser el servidor
de bases de datos genérico para Windows; no tanto porque la causa de
desarrollo sea la misma, ni siquiera porque el SQL Server, a diferencia de
otros servidores, solo trabaja bajo Windows; sino porque Microsoft promete
integración con todos los productos suyos (por ejemplo MsOffice 2000, ya
que Access 2000 traerá consigo un nuevo MSDE−DATA−Engine, como
alternativa al existente y compatible con SQL Server). También será posible
llamar a SQL Server desde MS-Access.
Se dice también ser la base de datos más utilizada en el mundo, más que
Oracle y que Microsoft SQL, ya que es la que mejor responde a las
exigencias del e−business de hoy; y sabemos que detrás de cada
e−business está siempre una base de datos.
2.1.4 Escalabilidad
Este producto le permite distribuir y acceder a los datos por una red de
sistemas. Los usuarios pueden preguntar, agregar, anular, y poner al día los
datos en las bases de datos locales y remotos.
Todas las bases de datos tienen los archivos de log asociados. Los logs
registran cambios de base de datos. Si una base de datos necesita ser
recuperada a un punto después del último respaldo, los logs son requeridos
para realizar la recuperación. Estos tienen dos tipos de comportamiento en
DB2:
2.1.5 Integridad
Restricción Única: Es una regla que prohíbe que haya valores duplicados
en una o en más columnas en una tabla.
2.1.6 Seguridad
• Con DB2 es posible acceder a los datos usando JDBC, Java y SQL
(tanto el SQL estático, como complementa el SQL dinámico),
mediante Internet.
• Tiene aplicaciones para .NET, CLI, JAVA, PHYTON, PHP, C++, entre
otros lenguajes de programación. También soporta integración en los
ambientes de desarrollo integrado de Eclipse y Visual Studio .NET.
2.2 MySQL
2.2.1 Introducción
Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con
esta licencia, pero para aquellas empresas que quieran incorporarlo en
productos privativos deben comprar a la empresa una licencia específica
que les permita este uso. Está desarrollado en su mayor parte en ANSI C.
El origen del nombre MySQL no se sabe con certeza de donde proviene, por
una lado se dice que en sus librerías han llevado el prefijo “my” durante los
diez últimos años, por otra parte, la hija de uno de los desarrolladores se
llama My. Así que no está claramente definido cual de estas dos causas han
dado lugar al nombre de este conocido gestor de bases de datos.
• Escrito en C y en C++
• Probado con un amplio rango de compiladores diferentes
• Funciona en diferentes plataformas.
• Usa GNU Automake, Autoconf, y Libtool para portabilidad.
• APIs disponibles para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, y
Tcl.
• Uso completo de multi-threaded mediante threads del kernel. Pueden
usarse fácilmente multiple CPUs si están disponibles.
• Proporciona sistemas de almacenamiento transaccionales y no
transaccionales.
• Usa tablas en disco B-tree (MyISAM) muy rápidas con compresión de
índice.
• Relativamente sencillo de añadir otro sistema de almacenamiento.
Esto es útil si desea añadir una interfaz SQL para una base de datos
propia.
• Un sistema de reserva de memoria muy rápido basado en threads.
• Joins muy rápidos usando un multi-join de un paso optimizado.
• Tablas hash en memoria, que son usadas como tablas temporales.
• Las funciones SQL están implementadas usando una librería
altamente optimizada y deben ser tan rápidas como sea posible.
Normalmente no hay reserva de memoria tras toda la inicialización
para consultas.
• El código MySQL se prueba con Purify (un detector de memoria
perdida comercial) así como con Valgrind, una herramienta GPL
• El servidor está disponible como un programa separado para usar en
un entorno de red cliente/servidor. También está disponible como
biblioteca y puede ser incrustado (linkado) en aplicaciones
autónomas. Dichas aplicaciones pueden usarse por sí mismas o en
entornos donde no hay red disponible..
Soporte completo para las cláusulas SQL GROUP BY y ORDER BY. Soporte de
funciones de agrupación (COUNT(), COUNT(DISTINCT ...), AVG(), STD(),
SUM(), MAX(), MIN(), y GROUP_CONCAT()).
Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada
índice puede consistir desde 1 hasta 16 columnas o partes de columnas. El
máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2).Un
índice puede usar prefijos de una columna para los tipos de columna CHAR,
VARCHAR, BLOB, o TEXT.
2.2.8 Conectividad
Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP
en cualquier plataforma. En sistemas Windows de la familia NT (NT,2000,XP,
o 2003), los clientes pueden usar named pipes para la conexión. En
sistemas Unix, los clientes pueden conectar usando ficheros socket Unix.
2.2.9 Localización
MySQL server tiene soporte para comandos SQL para chequear, optimizar, y
reparar tablas. Estos comandos están disponibles a través de la línea de
comandos y el cliente mysqlcheck. MySQL también incluye myisamchk,
una utilidad de línea de comandos muy rápida para efectuar estas
operaciones en tablas MyISAM.
Todos los programas MySQL pueden invocarse con las opciones --help o -?
para obtener asistencia en línea.
3. ARQUITECTURA
1. Los archivos de datos, que almacenan los datos del usuario en la base
de datos
. Listener
Agents
Un tipo adicional del agente, db2agnsc es creado por DB2 para realizar
ciertas operaciones en paralelo. Particularmente, se utilizan en acciones de
la recuperación de base de datos.
Los Idle agents residen en el agent pool. Estos agentes están disponibles
para las peticiones de los agentes del coordinador que funcionan a favor de
programas del cliente, o de los subagentes que funcionan a favor de
agentes existentes del coordinador. El número de agentes disponibles es
dependiente en los maxagents y los num_poolagents de los parámetros de
la configuración del encargado de base de datos.
db2fmp
Threads y Procesos
3.2.2 Instancia
Una instancia en DB2 tiene sus propias bases de datos (las cuales no
pueden ser utilizadas por otras instancias), y todas sus particiones de bases
de datos comparten los mismos directorios del sistema.
Para referenciar una instancia DB2 dada desde una interfaz de línea de
comandos, se usa la variable de ambiente DB2INSTANCE. Esta variable
permite que especifiques a la instancia actual, a la que todos los comandos
se aplicaran. Por ejemplo, si el DB2INSTANCE fue asignado a “prod”, y
después ejecutas el comando CREATE DATABASE “mydb1”, se creará una
base de datos asociada a la instancia “prod”. Si hubieses querido que se
creara la base de datos en la instancia “db2”, entonces se debe cambiar el
valor de la variable DB2INSTANCE a “db2”. Esto es similar al ORACLE_SID
(System Identifier) el cual también es usado cuando los usuarios quieren
cambiar entre instancias. Para eliminar una instancia en DB2, se ejecuta el
comando db2idrop <nombre de la instancia>. Para una instancia en DB2
existen los comandos CREATE, MODIFY, START, STOP y DELETE.
Una instancia puede contener varias bases de datos. Cada base de datos es
una unidad independiente y cerrada a las otras. Cada base de datos tiene
su propio espacio de tabla de catálogos, espacio de tablas temporales, y
espacio de tablas de usuario los cuales son creados por defecto al momento
de crear la base de datos.
Almacenamiento Físico
Contenedores:
Directorio:
Dispositivos:
Ficheros :
En DB2, un tablespace es un objeto lógico usado como una capa entre las
tablas lógicas y los containers físicos. Cuando creas un tablespace, puedes
asociarlo a un buffer pool (database cache) especifico así como a un
container especifico. Esto te da la flexibilidad del manejo de ejecución. Por
ejemplo, si tienes a una tabla llamada "hot", puedes definirla a su propio
tablespace asociado a su propio buffer pool. Esto ayuda a asegurar que la
data para esta tabla es continua en el caché de la memoria.
En DB2, tres tablespaces son creadas automáticamente por defecto al
momento de crear una base de datos cuando se utilizan las opciones de
valor por defecto para el comando CREATE DATABASE. Estas son:
Debido a que las bases de datos en DB2 son unidades independientes, los
tablespaces no son compartidos entre ellos. Considerando de que son
conocidos dentro de solo una base de datos, dos bases de datos diferentes
pueden tener tablespaces del mismo nombre. Los tablespaces en DB2
pueden ser clasificados como SMS (system-managed spaces) o DMS
(database-managed spaces). Los SMS tablespaces son manejados por el
sistema operativo y solo pueden ser directorios. Pueden crecer
automáticamente cuando es necesario, lo que indica que los SMS dan un
buen funcionamiento con una administración mínima. Los DMS tablespaces
son manejados por el DB2, y pueden ser archivos o dispositivos brutos. Este
tipo de tablespace permite el mejor funcionamiento, pero requiere de cierta
administración. Por ejemplo, se necesita especificar antes ded tiempo la
cantidad de espacio que se desea asignar al tablespace, porque su
crecimiento no es automático.
• El SO controla el espacio
Funcionamiento:
HA_CREATE_INFO *create_info)
...
No hay una receta única que permita definir el motor de almacenamiento. La selección
debe hacerse una vez tenemos el modelo lógico de la base de datos y conocemos los
requisitos de rendimiento y no funcionales de la aplicación o aplicaciones que vamos a
construir.
De la tabla anterior solo podemos tener nociones iniciales del tipo de gestor, y dirigirnos
a alguno de ellos para casos concretos, por ejemplo, ndbcluster tiene características
únicas si necesitamos soporte para alta disponibilidad. No obstante, hace falta conocer
más en profundidad las características de cada uno para tomar decisiones, y en
ocasiones es necesario hacer pruebas de rendimiento con varios de ellos para
compararlos y seleccionar el que mejor se ajusta a nuestras necesidades.
Administración de transacciones
Administrador de transacciones
Administración de la Recuperación
Log Manager
Recovery Manager
Administración de almacenamiento
Buffer Manager
Administrador de recursos
El propósito del Administrador de recursos es aceptar las peticiones del
motor de ejecución, los puso en las solicitudes de mesa, y solicitar las tablas
desde el Administrador de búfer. El Administrador de recursos recibe
referencias a los datos dentro de la memoria desde el Administrador de
búfer y devuelve estos datos a las capas superiores.
Ver diccionario detallado
Los conectores
El gestor de conexiones
La caché de consultas
Aunque la idea parece simple, hay que tener en cuenta que la obtención y
liberación de los bloqueos se realiza continuamente, y esto produce una
sobrecarga en el procesamiento dentro del servidor. Además, hay diferentes
políticas de bloqueo, por ejemplo, ¿es mejor bloquear cada tabla completa
afectada o solo las filas de la tabla a las que quiere acceder una consulta?.
Dada la existencia de diferentes técnicas, el control de concurrencia en
MySQL se divide entre el servidor y cada gestor de almacenamiento.
Para complicarlo aún más, puede que una transacción implique más
de una base de datos, y en ocasiones, a más de un servidor
(transacciones distribuidas). MySQL proporciona soporte para todos
estos tipos de transacciones, siempre que los gestores de
almacenamiento utilizados en las bases de datos implicadas también
lo soporten.
3.3 Sentencias
CREATE TABLE en MySQL
index_col_name:
col_name [(length)] [ASC | DESC
ejemplo:
4. COMPARACIONES
IBM DB2
• Capacidad para trabajar con todo tipo de datos, ya sea tanto texto
como imágenes, audio o vídeo o páginas Web, de forma
homogénea, sea cual sea su formato, o incluso dónde residen
físicamente.
• Primera base de datos de la industria capaz de gestionar tanto
datos relacionales convencionales como datos XML en formato
nativo sin necesidad de transformarlos
• Además de la capacidad XML nativa, la versión 9 de IBM DB2
incluye otros dos significativos avances como son la compresión
de almacenamiento avanzada y capacidades mejoradas para la
gestión autónoma de datos
• Diseñada para convertirse en el motor de información de
preferencia para entornos SOA y para lograr el acceso a los datos
tanto si están almacenados en bases de datos convencionales
como en tablas de Oracle o MySQL
• Cuenta con compresión automática de almacenamiento,
denominada “Venos”, que aporta una capacidad de compresión de
almacenamiento similar a la de los grandes servidores
corporativos (mainframes) para entornos Linux, UNIX y Windows.
• Ofrece capacidades de recuperación mucho más completas,
robustas y versátiles que cualquier otro servidor de datos anterior
• IBM ha implementado una nueva función de seguridad para el
administrador que, por primera vez, permite unificar distintos
privilegios bajo un solo usuario, ofreciendo así mayor control sobre
quién tiene acceso a la información
• IBM DB2 9 cuenta con un avanzado sistema de partición de datos
que permite enlazar hasta un máximo de 999 servidores en
clúster, manejando una sola base de datos en paralelo.
• Las limitaciones de almacenamiento en una máquina se
multiplican acorde con el número de servidores en el clúster,
pudiendo así alcanzar hasta 16 Tb por partición multiplicado por
hasta 999 máquinas.
• DB2 9 es la primera base de datos que soporta simultáneamente
los tres sistemas más usados de particionamiento: range
partitioning, multi-dimensional clustering y hashing.
• Además de gran funcionalidad, DB2 9 ofrece mejoras para reducir
significativamente la complejidad y el tiempo que los
desarrolladores necesitan para crear aplicaciones que puedan
acceder tanto a repositorios de datos relacionales como a
repositorios XML.
• La tecnología nativa XML de esta nueva base de datos también da
soporte a XQuery, un potente lenguaje estándar de la industria
que ha sido diseñado especialmente para procesar datos XML. Los
desarrolladores de aplicaciones tendrán la flexibilidad de utilizar
XQuery, XPath, el estándar SQL o los tres simultáneamente para
consultar datos. DB2 9 incluye también soporte para Visual Studio
2005, servicios web y la capacidad para crear aplicaciones y
páginas web sin necesidad de escribir código.
• DB2 Express-C aparte de ser mas ligero es mas rapido asi como
una mejor performance en el uso de mensajes xml( en el blog
utiliza iTunes para utilizlar la funionalidad llamada pureXML de
DB2).
MySQL
• Un amplio subconjunto de ANSI SQL 99, y varias extensiones.
• Soporte a multiplataforma.
• Procedimientos almacenados
• Disparadores (triggers).
• Cursores
• Vistas actualizables.
• Soporte a VARCHAR
• INFORMATION_SCHEMA
• Modo Strict
• Soporte X/Open XA de transacciones distribuidas; transacción en dos
fases como parte de esto, utilizando el motor InnoDB de Oracle.
• Motores de almacenamiento independientes (MyISAM para lecturas
rápidas, InnoDB para transacciones e integridad referencial).
• Transacciones con los motores de almacenamiento InnoDB, BDB Y
Cluster; puntos de recuperación (savepoints) con InnoDB.
• Soporte para SSL.
• Query caching
• Sub-SELECTs (o SELECTs anidados).
• Réplica con un maestro por esclavo, varios esclavos por maestro, sin
soporte automático para múltiples maestros por esclavo.
• indexing y búsqueda de campos de texto completos usando el motor
de almacenamiento MyISAM.
• Embedded database library
• Soporte completo para Unicode.
• Conforme a las reglas ACID usando los motores InnoDB, BDB y
Cluster.
• Shared-nothing clustering through MySQL Cluster.
• Usa GNU Automake, Autoconf, y Libtool para portabilidad
• Uso de multihilos mediante hilos del kernel.
• Usa tablas en disco b-tree para búsquedas rápidas con compresión de
índice
• Tablas hash en memoria temporales
• El código MySQL se prueba con Purify (un detector de memoria
perdida comercial) así como con Valgrind, una herramienta GPL
• Completo soporte para operadores y funciones en cláusulas select y
where.
• Completo soporte para cláusulas group by y order by, soporte de
funciones de agrupación
• Seguridad: ofrece un sistema de contraseñas y privilegios seguro
mediante verificación basada en el host y el tráfico de contraseñas
está cifrado al conectarse a un servidor.
• Soporta gran cantidad de datos. MySQL Server tiene bases de datos
de hasta 50 millones de registros.
• Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2).
Cada índice puede consistir desde 1 hasta 16 columnas o partes de
columnas. El máximo ancho de límite son 1000 bytes (500 antes de
MySQL 4.1.2).
• Los clientes se conectan al servidor MySQL usando sockets TCP/IP en
cualquier plataforma. En sistemas Windows se pueden conectar
usando named pipes y en sistemas Unix usando ficheros socket Unix.
• En MySQL 5.1, los clientes y servidores Windows se pueden conectar
usando memoria compartida.
• MySQL contiene su propio paquete de pruebas de rendimiento
proporcionado con el código fuente de la distribución de MySQL.
Comandos Principales
MySQL DB2
create database create database
drop database drop database
drop table drop table
delete delete
alter table alter table
connect db2 connect
update update
select select
create user create user
insert insert
rename rename
alter database alter database
start db2start
stop db2stop
-- db2icrt
Start activate database
shutdown deactivate database
CREATE DATABASE:
Crea una base de datos
DROP DATABASE:
Elimina una base de datos
DROP TABLE:
Elimina una tabla
DELETE:
Elimina informacion relativa en una tabla.
ALTER TABLE:
Cambia las propiedades de una table existente.
UPDATE:
modifica información en una tabla.
SELECT:
Recupera la informacion de una o más tablas especificando
criterios de selección.
CREATE USER:
Crea un usuario.
INSERT:
Adiciona información a una tabla, vista, etc.
RENAME:
Renombra una tabla, vista, secuencia, etc.
ALTER DATABASE:
Abre una base de datos existente, y/o modificar los archivos
asociados.
Memory 32 MB of RAM
DB2 WINDOWS
DB2 UNIX
DB2 EXPRESS C VS MYSQL COMMUNITY
Encriptaci Protecci Compatib Reglas de Acceso
ó c
n o
m
d p
e l
e
r j
e i
d d
a
n d
a
t d
i e
v
a c
Usable sin Auditoria Recursos Separació Certificació
o
n n
t
d
r
e
a
s s
e e
ñ g
a u
s r
DB2 SI - SI SI - i
d
a
d
MyS
DB2 SI
SI -
SI SISI SI SI SI SI
QL
MyS SI SI SI SI SI
QL
Max DB Max Max Max Max Blob
Size Table rowsize columns /Clobsize
size per row
DB2 512 TB 512 TB 32,677 1012 2 GB
B
• www.lawebdelprogramador.com/cursos/mostrar.php?
id=66&texto=Oracle
• www.ibm.com/db2
• www-306.ibm.com/software/es/demos/db2.shtml
• http://www.swen.uwaterloo.ca/~mrbannon/cs798/assignment_0
1/mysql.pdf
• http://dev.mysql.com/doc/falcon/es/se-falcon-createtable.html
• http://www.xtec.es/~acastan/textos/Administracion%20de
%20MySQL.ht
• http://swik.net/MySQL/MySQL+vs+MS+SQL+Server
• http://bicosyes.com/motores-de-almacenamiento-de-mysql/
• http://www.uaem.mx/posgrado/mcruz/cursos/miic/MySQL.pdf
• http://dev.mysql.com/doc/refman/5.0/es/features.html
• http://dev.mysql.com/doc/refman/5.0/es/table-size.html
• http://www.iessanvicente.com/colaboraciones/motoresMySQL.pd
f
• http://www.treeweb.es/blog-tecnico-mysql-motores-de-
almacenamiento
• http://www.tizag.com/mysqlTutorial/mysqlinsert.php