Académique Documents
Professionnel Documents
Culture Documents
net/publication/312591951
CITATION READS
1 4,063
1 author:
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Jorge Domínguez Chávez on 22 January 2017.
IEASS, Editores
VENEZUELA, 2017
Título original: Introducción a la administración de base de datos
© Jorge Domínguez Chávez, 2017
© IEASS, editores, Maracay, 2017
1ª edición: enero 2017
Deposito Legal
Reservados todos los derechos. No se permite la reproducción total o parcial de esta obra, ni su
incorporación a un sistema informático, ni su transmisión en cualquier forma o por cualquier medio
(electrónico, mecánico, fotocopia, grabación u otros) sin autorización previa y por escrito de los
titulares del copyright. La infracción de dichos derechos puede constituir un delito contra la propiedad
intelectual.
ISBN 978980680001-4
Portada: https://www.canva.com
Tipografías utilizadas: familias Liberation Serif e Impact,
Programas: Scribus, LibreOffice
IEASS, editores
Maracay, Aragua
info@ieasseditores.net.ve – www.ieasseditores.net.ve
VENEZUELA– Printed in Venezuela
¿Por qué una empresa necesita un DBA?
Toda organización que maneja grandes volúmenes de datos requiere un sistema de gestión de base de
datos (DBMS). La persona o grupo de personas encargadas de administrar, supervisar y asegurar el
adecuado uso de los datos dentro de un DBMS son los DBA1. Estos sistemas manejan grandes
volúmenes de datos de una manera eficiente, permitiendo así disponer de una herramienta para la toma
de decisiones de negocios. Por lo tanto, la necesidad de los administradores de bases de datos (DBA) es
hoy mayor que nunca.
Auditoria
Una de las tareas de un DBA es identificar qué usuarios tienen acceso a insertar, actualizar o eliminar
datos, y cuándo. Una auditoría NO sólo podría ser necesaria por un tiempo limitado, para usuarios
específicos o datos específicos. También puede ser requerida 24/7 para todos los datos que se
introduzcan en el DBMS. Regularmente, para realizar las funciones de autorías los DBA tienen que
trabajar en combinación con los auditores internos y externos de la empresa.
Planificación de capacidad
En la mayoría de las organizaciones, el número y tamaño de las bases de datos crece rápidamente. Es la
responsabilidad del DBA gestionar el creciente volumen de datos y diseñar los planes apropiados para
administrarlos. También, incluye la gestión del hardware donde se almacenan los datos.
Administración de cambios
La configuración del servidor de Base de datos, sea SQL Server, Potsgresql, MariaDb o MySQL, el
esquema de base de datos, el código de Transact-SQL, y muchas otras facetas del ecosistema de
aplicaciones cambian con el tiempo. Es responsabilidad del DBA realizar el análisis de impacto antes
de realizar los cambios dentro de una DBMS. Implementar cambios, hacer pruebas piloto y documentar
todos los cambios y procedimientos es parte del trabajo de un DBA.
Desarrollo de aplicaciones
Muchos DBA deben de desarrollar aplicaciones y scripts con el objetivo de automatizar tareas
relacionadas con la inserción, sustracción o borrado de información dentro del gestor de base de datos.
En general, éste debe de colaborar a nivel de integración de sistema con los desarrolladores de
aplicaciones, por lo que a veces se ve en la obligación de desarrollar código para casos específicos.
Si hacemos una instalación de MySQL, veremos que no requiera password para conectar, por tanto
configuramos uno con el siguiente comando:
Enter password:
mysqld is alive
Enter password:
mysqladmin Ver 8.42 Distrib 5.5.28, for Linux on i686
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights re
served.
Enter password:
Uptime: 606704 Threads: 2 Questions: 36003 Slow queries: 0 Opens:
15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.059
Enter password:
+------------------------------------------+-------------+
| Variable_name | Value |
+------------------------------------------+-------------+
| Aborted_clients | 3 |
| Aborted_connects | 3 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
| Bytes_received | 6400357 |
| Bytes_sent | 2610105 |
| Com_admin_commands | 3 |
| Com_assign_to_keycache | 0 |
| Com_alter_db | 0 |
| Com_alter_db_upgrade | 0 |
| Com_alter_event | 0 |
| Com_alter_function | 0 |
| Com_alter_procedure | 0 |
| Com_alter_server | 0 |
| Com_alter_table | 0 |
| Com_alter_tablespace | 0 |
+------------------------------------------+-------------+
Enter password:
+---------------------------------------------------
+----------------------------------------------+
| Variable_name | Value
|
+---------------------------------------------------
+----------------------------------------------+
| auto_increment_increment | 1
|
| auto_increment_offset | 1
|
| autocommit | ON
|
| automatic_sp_privileges | ON
|
| back_log | 50
|
| basedir | /usr
|
| big_tables | OFF
|
| binlog_cache_size | 32768
|
| binlog_direct_non_transactional_updates | OFF
|
| binlog_format | STATEMENT
|
| binlog_stmt_cache_size | 32768
|
| bulk_insert_buffer_size | 8388608
|
| character_set_client | latin1
|
| character_set_connection | latin1
|
| character_set_database | latin1
|
| character_set_filesystem | binary
|
| character_set_results | latin1
|
| character_set_server | latin1
|
| character_set_system | utf8
|
| character_sets_dir | /usr/share/mysql/
charsets/ |
| collation_connection | latin1_swedish_
ci |
+---------------------------------------------------
+----------------------------------------------+
Enter password:
+-------+---------+-----------------+---------+---------+------
+-------+------------------+
| Id | User | Host | db | Command | Time | Stat
e | Info |
+-------+---------+-----------------+---------+---------+------
+-------+------------------+
| 18001 | rsyslog | localhost:38307 | rsyslog | Sleep | 5590 |
| |
| 18020 | root | localhost | | Query | 0 |
| show processlist |
+-------+---------+-----------------+---------+---------+------
+-------+------------------+
9 - Como crear una base de datos
Para crear una base de datos nueva, ejecutamos.
Enter password:
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 18027
Server version: 5.5.28 MySQL Community Server (GPL) by Remi
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights re
served.
Type 'help;' or 'h' for help. Type 'c' to clear the current input sta
tement.
mysql>
Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Enter password:
Enter password:
+----+------+-----------+----+---------+------+-------
+------------------+
| Id | User | Host | db | Command | Time | State | Info
|
+----+------+-----------+----+---------+------+-------
+------------------+
| 5 | root | localhost | | Sleep | 14 | |
|
| 8 | root | localhost | | Query | 0 | | show processl
ist |
+----+------+-----------+----+---------+------+-------
+------------------+
Enter password:
+----+------+-----------+----+---------+------+-------
+------------------+
| Id | User | Host | db | Command | Time | State | Info
|
+----+------+-----------+----+---------+------+-------
+------------------+
| 12 | root | localhost | | Query | 0 | | show processl
ist |
+----+------+-----------+----+---------+------+-------
+------------------+
Enter password:
+----+------+-----------+----+---------+------+-------
+------------------+
| Id | User | Host | db | Command | Time | State | Info
|
+----+------+-----------+----+---------+------+-------
+------------------+
| 8 | root | localhost | | Query | 0 | | show processl
ist |
+----+------+-----------+----+---------+------+-------
+------------------+
Uptime: 3801 Threads: 1 Questions: 15 Slow queries: 0 Opens: 15
Flush tables: 1 Open tables: 8 Queries per second avg: 0.003
mysqladmin Ver 8.42 Distrib 5.5.28, for Linux on i686
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights re
served.
Enter password:
# mysqladmin --help
Problemas
Elaborar un algoritmo para calcular el número de CD necesarios para hacer una copia de seguridad, de
la información almacenada en un disco cuya capacidad se conoce. Considerar que el disco duro está
lleno de información, además expresada en Giga byte. Un CD virgen tiene 700 Mega bytes de
capacidad y una Giga byte es igual a 1,024 mega byte.
Tres problemas con los cuales tiene que tratar un administrador de base de datos son:
El primer problema, ¿cómo determinar el espacio ocupado por la base de datos en el disco duro?
El segundo problema, si tiene uno más discos duros en su servidor y tiene que respaldar la información
almacenada en discos CD o DVD, ¿cuántos discos CD o DVD necesita?
Y tercer problema: ¿cómo determinar la vida útil de un disco duro como medio de almacenamiento?
Según su capacidad disponible en función del tiempo.
Primer problema
Cuando diseña una base de datos y durante su existencia (producción y tareas de mantenimiento), es
necesario realizar una estimación del tamaño que tendrá la base de datos cuando esté llena. Esta
estimación le ayuda a determinar la configuración de hardware que necesita para realizar lo siguiente:
• Conseguir el rendimiento que necesitan las aplicaciones.
• Asegurar la cantidad física adecuada de espacio en disco necesario para almacenar los datos y
los índices.
Asimismo, la estimación del tamaño de la base de datos le ayuda a determinar si el diseño de su base de
datos necesita ajustes. Puede determinar que el tamaño estimado de la base de datos es demasiado
grande para una implementación en su organización, y que se necesita un mayor grado de
normalización. Por el contrario, el tamaño estimado puede ser inferior al esperado, con lo que reduce la
normalización de la base de datos para mejorar el rendimiento de las consultas.
A veces, necesita saber cuánto espacio ocupan las base de datos de un servidor MySQL. Para calcular
qué espacio necesita hacer respaldos (copias de seguridad) durante un período de tiempo, o para
supervisar el crecimiento de las bases de datos (si necesita dimensionar una nueva instalación o
determinar la escalabilidad de un sistema o aplicación).
En MySQL se obtiene esta información con la siguiente consulta:
select table_schema "DATABASE", convert(sum(data_length+index_length)/1048576,decimal(6,2))
"SIZE (MB)" from information_schema.tables where table_schema!="information_schema" group by
table_schema;
¿Qué hace esta consulta?
La tabla "tables" de la base de datos "information_schema" de MySQL tiene información sobre todas
las tablas del sistema, incluyendo el espacio que ocupan (en bytes) tanto sus datos como sus índices (si
es que tiene). Cada fila de esta tabla representa una tabla, la cual incluye información acerca de la base
de datos a la cual pertenece, y el tamaño que ocupa. La idea de la consulta es agrupar (group by)
todas las tablas de una misma base de datos (columna table_schema), obteniendo (select) el
nombre de la base de datos (table_schema) y el tamaño total (sum) que ocupa la suma de los datos
más los índices (data_length+index_length) de cada tabla.
Para expresar las unidades en MB (mega bytes), divide el total por 1048576 (=1024*1024) y para dar
formato trunca el resultado a dos decimales (convert(x,decimal(6,2))).