# Fundamentos de Bases de Datos/Práctica

Esta es la tercera práctica de la UF3 de base de datos del grupo de Marc Grau y Marc Vaquero.

## Actividad 1

* Indica los motores de almacenamiento que puedes utilizar (cuales están activos)? Muestra la comanda utilizada y el resultado.
SHOW ENGINES;
* Cómo puedo saber el motor de almacenamiento por defecto. Muestra como cambiar este parámetro de manera que las nuevas tablas utilizen el motor MyIsam.
El motor por defecto es el InnoDB, se ve en la imagen anterior que pone "DEFAULT". Para cambiarlo hacemos:
* Explica los pasos para instalar y activar "l'engine MyRocks". "MyRocks" es un motor de almacenamiento para MySQL basado en RocksDB.
Para instalarlo hacemos:
yum install Percona-Server-rocksdb-57.x86_64
Y para activarlo hacemos la siguiente comanda:
* Importa la BD Sakila como tablas MyISAM. Haz los cambios necesarios para que todas las tablas sean de tipo MyISAM. Mira cuales son los archivos físicos que ha creado, cuanto ocupan y cuales son sus extensiones.
Podemos asignar el "engine" que queremos o borrarlo y nos cogerá por defecto el MyISAM ya que lo tenemos así configurado.

## Actividad 2

* Importa la BD Sakila como tablas InnoDB.
* Cuales son los archivos de datos? Dónde se encuentran y que tamaño tienen?
Los archivos de datos son los ibdata.
* Cambia la localización de los archivos del "tablespace" de sistema por defecto a "/discs-mysql/".
Creamos la carpeta:
Y añadimos la siguiente línea al archivo "mysqld.conf":
* Tengamos 2 archivos que correspondan al "tablespace" del sistema, los 2 tienen que tener el mismo tamaño inicial (1MB), el "tablespace" tiene que crecer de 1MB en 1MB, coloca estos archivos en una nueva localización.
No se puede poner 1MB como tamaño inial, mínimo 5MB.
Borramos los redologs:
Y reiniciamos el servicio.

## Actividad 3

* Partiendo del esquema anterior, configura el Percona Server para que cada tabla genere su propio "tablespace" en una carpeta nombrada "tablespaces".
Aunque ya viene activado por defecto, lo comprovamos:
* Indica los cambios que has realizado.
En el caso que no estuviese activado, tenemos que añadir al "mysqld.cnf" la siguiente línea:
innodb_file_per_table = 1
Reiniciamos el servicio, creamos la carpeta "tspaces" y de damos permisos. Añadimos al "mysqld.cnf" la ruta del datadir:
Borramos los redologs, ibdatas y copiamos el contenido de "/var/lib/mysql" a la carpeta "/tspaces/". Reiniciamos el servicio y comprovamos que esté bien:
* Después del cambio, que ha pasado con los archivos que tenían los datos de la BD de Sakila?
Antes:
Después:
Podemos ver que se genera un archivo .ibd para cada tabla en lugar de guardarlo en los ibdata. Cuando está desactivado solo se pueden ver los archivos .frm.

## Actividad 4

* Crea un "tablespace" renombrado "ts1" situado en "/discs-mysql/disc1/" y coloca las tablas actor, address y category de la BD Sakila.
Añadimos la tabla al ts:
* Crea otro "tablespace" renombrado "ts2" situado a "/discs-mysql/disc2/" y coloca ahí las otras tablas.
Y así con todas, algunas no han funcionado porqué no son tablas, son vistas.
* Comprueba que puedes realizar operaciones "DML" a las tablas de los dos "tablespaces".
Ts1:
Ts2:
* Que comandas has utilizado en los ejercicios anteriores?
create tablespace ts_nom add datafile 'ruta_fitxer';
alter table nom_taula tablespace nom_tablespace;

## Actividad 5

* Cómo podemos comprobar (Innodb Log Checkpointing):
- LSN: 1495727 - Último LSN actualizado en disco: 1495727 - Último LSN al que se le ha hecho checkpoint: 1495718
* Cómo podemos ver el número de páginas modificadas? Y el número total de páginas?
- Modificadas: 0 - Total: 390

## Actividad 6

* Prepara un segundo servidor Percona Server donde habrán un conjunto de tablas "FEDERADES" del primer servidor.
IP servidor local(/etc/sysconfig/network-scripts/ifcg-enp0s3):
IP servidor remoto: 192.168.1.2 (Reiniciamos servicio y comprovamos que hace ping). Por último activamos el "federated engine" añadiendo la línea "federated" a la sección [mysqld] y reiniciamos el servicio(Haciendo SHOW ENGINES podemos ver como está activado).
Creamos 2 tablas al servidor remoto dentro de la BD Sakila y insertamos valores:
* OPCIÓN 1: Especificar toda la cadena de connexión:
* OPCIÓN 2: Especificar una conexión a un server que previamente se ha creado mediante "CREATE SERVER"

## Actividad 7

Ejemplo y creación de la tabla CSV y hacemos un "INSERT":
Ahora podemos ver que los datos se guardan en ficheros de texto plano estilo csv: