Post on 04-Oct-2018
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Estructura Unidad 3: Administración básica de bases de datos en el SGBD
1. Objetivos de Unidad y Apartados
2. Apartado 3.1: Estructura básica de un servidor SQL
−Lección 3.1.1: Introducción
−Lección 3.1.2: Arquitectura de un Servidor SQL
−Lección 3.1.3: Gestión de objetos de una instancia
−Lección 3.1.4: Administración de la Seguridad
3. Apartado 3.2: Estructura avanzada de un servidor SQL
−Lección 3.2.1: Gestión del almacenamiento de datos en instancias
−Lección 3.2.2: Gestión de importación y exportación de datos
4. Anexo I : Instalación de Microsoft SQL Server
5. Anexo II: Instalación y configuración de un servidor MySQL
6. Anexo III: Instalación de un administrador para MySQL
7. Resumen
8. Enlaces de Interés
Pág. 1 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
1.- OBJETIVOS DE UNIDAD Y APARTADOS
OBJETIVOS UNIDAD 3
Conocer de forma global los elementos que componen un servidor SQL.
Entender el funcionamiento combinado de los componentes de un servidor SQL.
Ser capaz de administrar la seguridad y el rendimiento de las bases de datos
alojadas en un servidor SQL
Ser capaz de gestionar el almacenamiento de datos de un servidor
Realizar tareas de importación y exportación de bases de datos, esquemas y
objetos
ADMINISTRACIÓN BÁSICA DE BASES DE DATOS EN EL SGBD
OBJETIVOS APARTADO 3.1
Exponer al alumno los elementos básicos que componen un servidor SQL
Entender el funcionamiento combinado de los elementos que componen un
servidor de bases de datos SQL
Ser capaz de entender el funcionamiento de un servidor de bases de datos en
una red TCP/IP
Ser capaz de optimizar el rendimiento del servidor de bases de datos mediante
la definición de diferentes instancias
Ser capaz de administrar la seguridad del servidor de bases de datos
ESTRUCTURA BÁSICA DE UN SERVIDOR SQL
OBJETIVOS APARTADO 3.2
Conocer otros elementos auxiliares para el mantenimiento de servidores de
bases de datos SQL
Entender el funcionamiento del almacenamiento de datos en un servidor de
bases de datos
Conocer diferentes herramientas para optimizar el almacenamiento y acceso a
los datos en un servidor de bases de datos
Conocer las técnicas de importación y exportación de bases de datos, esquemas
y objetos
ESTRUCTURA AVANZADA DE UN SERVIDOR SQL
Pág. 2 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
2.- APARTADO 3.1: ESTRUCTURA BÁSICA DE UN SERVIDOR SQL
2.1.- LECCIÓN 3.1.1: INTRODUCCIÓN
Un servidor SQL es un software para la gestión de bases de datos.
Esta definición incluye tanto la definición y mantenimiento de las bases de datos en el
servidor como la administración de los datos incluidos en cada una de las bases de datos.
La arquitectura de un servidor hace referencia a los elementos básicos comunes a todas las
implementaciones de servidores SQL que en el mercado están disponibles. Dichas
implementaciones permiten cumplir todo o parte de la versión del lenguaje SQL, añadiendo
funciones particulares para la gestión de los distintos componentes
Los bloques que componen la arquitectura de un servidor SQL dependen del lenguaje
usado en su desarrollo. Existen servidores SQL de libre distribución, cuya arquitectura interna es
más accesible, puesto que el código fuente desarrollado está disponible para el público. Un
ejemplo de estos servidores es MySQL, comercializado bajo la licencia GPL
(http://dev.mysql.com).
En los servidores SQL comerciales el código propietario está protegido bajo leyes de
privacidad intelectual y su arquitectura interna es menos accesible a un estudio detallado. Por
ejemplo, el servidor SQL Microsoft SQL Server de Microsoft. (http://www.microsoft.com/sql/).
Normalmente la arquitectura de un servidor SQL se compone de dos partes fundamentales
tratadas más adelante: El motor relacional y el motor de almacenamiento. Además es necesario
que existan métodos estándar de acceso a los datos para que las aplicaciones cliente sean capaces
de comunicar al servidor las consultas y acciones a realizar sobre los datos.
Antes de profundizar con los servidores SQL y su arquitectura, es conveniente conocer las
bases del funcionamiento de redes de comunicación, puesto que los servidores SQL se valen de
ellas para comunicarse.
2.1.1.- Introducción a las redes
Las redes entre ordenadores se desarrollan para cubrir dos grandes
necesidades: Intercambiar información y compartir recursos comunes.
Para ello es necesario disponer:
Pág. 3 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Una infraestructura física (tarjetas de red, hub, router,…) que una los distintos
nodos de la red y que se ocupa de realizar la interconexión física entre ellos.
Software, que son los programas que hacen que varios nodos se entiendan entre
sí y que sepan cómo utilizar los dispositivos físicos utilizados para su
interconexión.
Esta forma de comunicación está estandarizada a través del modelo de referencia OSI, que
ofrece un modelo abstracto del funcionamiento de la red y es independiente de la tecnología
empleada, por lo que puede aplicarse a cualquier situación.
El Modelo OSI de intercomunicación divide el proceso de envío y recepción de información
en siete capas. En cada una de ellas se describe cuál es la función que deben realizar los
protocolos que actúan en cada capa Los siete niveles o capas son:
Nivel 1: Fisico-Hardware
Define las conexiones físicas necesarias para interconectar las nodos de la red y los
estándares que se deben cumplir.
Cable RJ-45, Tarjetas PCI, hubs, router, etc..
Nivel 2: Enlace de datos
Describe el método que han de seguir los nodos de la red para transmitir y recibir las
tramas de datos por el medio físico descrito en el nivel 1
Redes Ethernet, Redes Wi-Fi, etc..
Nivel 3: Nivel de Red
Describe cómo se debe identificar cada nivel uno de los nodos conectados a la red, y cómo
se puede localizar a cada uno de ellos en la red
Nivel 4 y 5: Transporte y Sesión
Los protocolos que actúan en este nivel se ocupan de garantizar el flujo de información
entre dos nodos, controlando las conexiones y verificando la integridad de la información que se
envía y recibe
Protocolo TCP, SPX.
Pág. 4 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Nivel 6: Presentación
Son los servicios que responden a las peticiones de los clientes. Normalmente son
protocolos de alto nivel que se encargan de crear establecer diálogos entre máquinas para prestar
el servicio
Protocolos Cliente-Servidor: POP3, SMTP, (Correo electrónico) HTTP (Servicio
web), etc.
El servidor SQL de bases de datos se encuadra en este nivel, así como los programas
cliente que se utilizan para acceder a él. (Por ejemplo Microsoft SQL Server como servidor y
Microsoft SQL Management Studio)
Nivel 7: Aplicación
Son las aplicaciones que proveen de una interfaz de visualización de datos transmitidos o
recibidos y permiten el envío de comandos y respuestas que permiten la utilización de los servicios
prestados en la red sin conocer el lenguaje propio de cada uno de ellos.
Las interfaces de utilización que se ven cuando iniciamos un servidor Microsoft SQL Server
y un cliente Microsoft SQL Management Studio se encuadran en este nivel de la capa OSI. Estas
aplicaciones crean un entorno para gestionar el servidor a través de los controles de sus
herramientas, evitando en muchos casos conocer o utilizar la instrucción SQL correspondiente.
AplicaciónAplicaciAplicacióónn
PresentaciónPresentaciPresentacióónn
SesiónSesiSesióónn
TransporteTransporteTransporte
RedRedRed
Enlace de datosEnlace de datosEnlace de datos
Físico / HardwareFFíísico / Hardwaresico / Hardware
AplicaciónAplicaciAplicacióónn
PresentaciónPresentaciPresentacióónn
SesiónSesiSesióónn
TransporteTransporteTransporte
RedRedRed
Enlace de datosEnlace de datosEnlace de datos
Físico / HardwareFFíísico / Hardwaresico / Hardware
Correo y exploradores webCorreo y exploradores webCorreo y exploradores web
HTTP,POP3,SMTPHTTP,POP3,SMTPHTTP,POP3,SMTP
TCPTCPTCP
TCPTCPTCP
IPIPIP
EthernetEthernetEthernet
Hardware,cables,conectoresHardware,cables,conectoresHardware,cables,conectores
Correo y exploradores webCorreo y exploradores webCorreo y exploradores web
HTTP,POP3,SMTPHTTP,POP3,SMTPHTTP,POP3,SMTP
TCPTCPTCP
TCPTCPTCP
IPIPIP
EthernetEthernetEthernet
Hardware,cables,conectoresHardware,cables,conectoresHardware,cables,conectores
La comunicación entre los nodos se realiza a través de protocolos de comunicación.
Un protocolo es un conjunto de normas que deben seguir los nodos de una red para garantizar que la comunicación sea
correcta
En cada nivel el protocolo correspondiente encapsula los datos que le envía su predecesor
si está emitiendo información o la desencapsula en el caso de que la información se está
recibiendo.
Pág. 5 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Actualmente la infraestructura de red más utilizada es la llamada red TCP/IP, por ser
estos dos protocolos los que realizan las funciones fundamentales hasta el nivel 5. En los niveles
superiores actúan los propios programas servidor y cliente, como http (Servidor web y navegador
web).
Dentro de esta infraestructura de red la identificación y encaminamiento de paquetes la
realiza el protocolo IP, que permite configurar cada nodo con su identificación (Número IP) y
describe cómo buscar un camino entre nodos de distintas redes, mediante los siguientes
parámetros
o Número IP (Internet Protocol): Identifica exclusivamente una máquina. No
existe en la red una maquina con el mismo número
o Máscara de red: Define la parte de número IP que identifica a la red a la
que pertenece el nodo. Dicha red condiciona el alcance máximo de la
información. La maquina sabe hasta dónde puede llegar su información de
forma directa.
o Puerta enlace: Es la dirección IP de una máquina que comunica varias
redes distintas. Permite a los nodos enviar información más allá de los
límites de la red a la que pertenecen.
o Dns (Domain name server): Permite la traducción de direcciones IP a
nombres de servicios y nodos para facilitar la navegación a los usuarios.
El flujo de información entre nodos se realiza actualmente con el protocolo TCP, UDP e
ICMP. TCP y UDP se utilizan en comunicaciones de datos e ICMP es usado para comprobaciones de
red.
TCP (Transmission Control Protocol): Comprueba que la información que se emite llega
correctamente a su destino y utiliza para ello el establecimiento de comunicaciones entre nodos y
algoritmo de comprobación de errores. Por eso se dice que TCP es un protocolo fiable y orientado
a conexión
Pág. 6 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
UDP (User Datagram Protocol): Es un protocolo no fiable y no orientado a conexión.
Transmite la máxima información en el menor tiempo posible. Se utiliza para transmisiones
de información no crítica para los procesos, por lo que no incluye mecanismos de control de
datos.
Para identificar cada comunicación que se establece entre dos nodos de la red se utilizan
los llamados puertos, que son identificadores numéricos que se asignan a cada fragmento de la
información transmitida. De esta manera se conoce siempre con exactitud a qué comunicación
pertenece cada paquete que llega al nodo destino.
Para cada servicio en la red se asigna un puerto, que es el identificador que se debe
asignar a cada paquete que se dirige al nodo de la red que alberga el servicio. Existen dos tipos de
puerto:
Puertos bien conocidos (Well Known ports) (0-1024): Son los puertos asignados
a servicios estándar.
o Por ejemplo, el servicio web tiene asignado el puerto 80, el servicio ftp
tiene asignado el puerto 21, etc…
Puertos restantes: Son los puertos que quedan libres para que cada
programador asigne uno al servicio que desarrolla, con la única restricción de
que no está ocupado en la red. Van desde el 1025 hasta el 65536.
o Por ejemplo, el servidor SQL Server de Microsoft tiene asignado el puerto
1433, mientras que MySQL tiene asignado el 3306.
Cuando un nodo se comunica con otro siempre se debe indicar la dirección IP de origen y
destino, y el puerto de origen y destino. A la combinación de dirección IP y puerto se le conoce
con el nombre de Socket. La combinación de los dos socket de origen y destino definen una
comunicación única en la red.
Pág. 7 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Un servidor SQL de bases de datos es un servicio más de la red y funciona como cualquier
otro según los principios expuestos. Esto debe tenerse en cuenta a la hora de la instalación y
configuración básica de servidores de bases de datos en la red.
2.1.2.- Instalación de un servidor SQL en una red
Un servidor SQL se instala dentro de una red como u servicio más, con un puerto y una
dirección IP asignada. Los clientes acceden al mismo a través de la infraestructura de la red.
Normalmente un servidor SQL no actúa sólo. Los clientes que acceden a él no son los
usuarios de la red, sino aplicaciones que toman base los datos almacenados para su
funcionamiento. En la actualidad, la mayoría de ellas suelen estar alojadas en servidores web. Nos
detendremos entonces en la instalación y funcionamiento de un servidor de bases de datos junto a
un servidor web.
Pág. 8 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
El proceso desde la petición del cliente hasta la recepción de los datos se realiza en los
siguientes pasos:
El cliente lanza la petición al servidor web solicitando un página web con los
datos
El servidor procesa la página web (asp, php, etc…) donde está definido el acceso
al servidor de bases de datos
El servidor web conecta con el servidor de bases de datos a través de un
conector adecuado (ODBC, OLDB, etc…) y le envía la consulta sobre los datos
El servidor de bases de datos procesa la consulta y devuelve al servidor web los
datos solicitados a través del mismo conector.
El servidor web procesa los datos recibidos y realiza sobre ellos las operaciones
definidas en la página solicitada
El servidor web compone una página web en HTML con los datos recibidos y la
envía al cliente
El cliente muestra la página con los datos solicitados.
Ejemplos:
Intranet privada en la que existe un tablón de anuncios que
los clientes consultan, un foro en Internet, un catálogo de una
tienda on-line…
Es posible que el cliente disponga de una aplicación que funciona en local para acceder al
servidor de bases de datos directamente. En este caso no hace falta un servidor web para acceder
a los datos.
Ejemplos:
Aplicaciones de contabilidad, agendas compartidas…
Pág. 9 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
2.1.3.- Conectividad con el servidor – Bibliotecas de red
Para que sea posible la conexión de una aplicación con el servidor SQL es necesario que el
sistema operativo que contiene al servidor SQL sea capaz de recibir las peticiones y canalizar las
consultas hacia el servidor. Para ello se dispone de un conjunto de programas que funcionan en el
sistema operativo y que realizan la función de conectar el servidor de bases de datos con la
aplicación cliente.
Las librerías de red representan todos los métodos y funciones que el
sistema operativo necesita para integrarse con SQL y viceversa y poder
establecer una comunicación con la aplicación que lo precise.
Este software depende el sistema operativo que contiene al servidor.
Una vez que el cliente ha establecido el canal de comunicación con el servidor SQL se
envían y reciben una serie de mensajes a través del mismo que componen la comunicación. Dichos
mensajes incluyen las instrucciones a realizar en un lenguaje interpretado conocido por ambos
participantes. Éste lenguaje es SQL
Proceso de comunicación de un cliente SQL sobre un servidor SQL Server.
El servidor SQL puede usar estas funciones/librerías para la comunicación con otros
servidores de bases de datos SQL si así fuera preciso. Es decir, este servidor se comportaría como
cliente de otros servidores, o, en algún caso, redirigir las peticiones directamente a otros
servidores.
Las librerías independizan las versiones de la aplicación de la versión de servidor utilizado,
La mayoría de servidores admite lenguajes SQL de versiones anteriores, de forma que aplicaciones
desarrolladas con una versión de SQL puedan actualizarse a las nuevas versiones al mismo tiempo
que se actualizan los servidores. Si la librería que se utiliza es la misma, la aplicación no necesita
ser modificada cuando existe una actualización de servidor, o incluso si el software servidor
cambia (Migración de servidor)
Pág. 10 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Ejemplo:
Una Base de Datos funcionando sobre un servidor Microsoft
SQL Server 2000, puede migrarse (actualizarse) sobre un
Microsoft SQL Server 2005. Si la librería de red utilizada para
su acceso no cambia, la aplicación puede seguir funcionando
sin realizar ningún cambio sobre ella.
Para realizar con éxito esta conexión se debe utilizar un lenguaje de acceso al motor de
bases de datos, como puede ser XML, ADO, OLE DB, ODBC… Éstos son las librerías que se encargan
de dar acceso y transmitir las instrucciones SQL al motor de bases de datos para poder acceder y
manejar los datos de las dichas bases correctamente. El siguiente diagrama muestra un caso de
conectividad de un servidor Microsoft SQL con algunas posibilidades que se contemplan para
permitir la comunicación con otros servidores de bases de datos:
Estos lenguajes se denominan proveedores de accesos a datos y con ellos se consigue el
acceso a las bases de datos y la consulta de sus datos. Algunos de los más importantes son:
ODBC (Open Data Base Connect): es un estándar de industria y un componente
de Microsoft Windows Open Services Architecture. Permite el acceso de
aplicaciones a datos almacenados en cualquier SGBD relacional. Microsoft ofrece
Pág. 11 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
unidades de ODBC en sus Sistemas Operativos que permiten el acceso a los
distintos motores de bases de datos. Para todos los demás es necesario instalarlo
aparte:
o ODBC para SQL Server
o ODBC para Oracle
o ODBC para Microsoft Visual FoxPro®
o ODBC para Access (Jet engine)
o ODBC para DB2 (IBM)…
OLE DB (Object Linking and Embedding for Databases) es otro estándar abierto
diseñado para el acceso a distintas fuentes de datos de manera uniforme. OLE
DB soporta ODBC. Así como ODBC se planificó para acceder a bases de datos
relacionales, OLE DB se diseñó para fuentes de información similares,
relacionales o no
Actualmente el desarrollo de aplicaciones se basa principalmente en OLE DB
puesto que tiene mayores prestaciones que ODBC, manteniendo la
compatibilidad para ODBC.
Para la manipulación de datos obtenidos a través de los distintos proveedores es necesario
contar con objetos que sean accesibles tanto desde la aplicación cliente como desde los
proveedores de datos. Alguno de los más importantes son:
Pág. 12 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
ADO: (ActiveX Data Object) proporciona una interfaz fácil de utilizar para OLE
DB. Proporciona una serie de objetos que permiten recuperar y almacenar datos
a través de OLEDB ú ODBC para su manejo por parte de la aplicación.(Conexión,
recordset, …) e independiza la programación de la fuente de datos.
o Puede acceder a los datos utilizando muy poco código de programación
o Puede conectarse a cualquier proveedor de OLE DB y seguir usando el
mismo modelo de programación
XML (Extensive Markup language): Es un estándar de de definición de
documentos estructurados mediante marcas o etiquetas. Permite el intercambio
de información estructurada entre distintas aplicaciones y fuentes.
Particularmente es muy utilizado en aplicaciones web.
La mayoría de las implementaciones de servidores SQL
permiten la obtención de datos usando los proveedores de
acceso a datos ODBC y OLEDB
Pág. 13 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
2.2.- LECCIÓN 3.1.2: ARQUITECTURA DE UN SERVIDOR SQL
Los dos componentes fundamentales de un servidor SQL son el motor relacional y el motor
de almacenamiento.
El motor relacional permite organizar los datos siguiendo las reglas que definen un sistema
de bases de datos relacional. El motor de almacenamiento gestiona el flujo de datos entre el
servidor y el sistema de archivos elegido para guardar la información.
2.2.3.- Motor relacional – Relational engine
El motor relacional de bases de datos se utiliza para el almacenamiento
y procesado de datos en un formato relacional.
El motor de bases de datos o motor relacional es el componente más importante de
un servidor SQL. Es el encargado de interpretar las instrucciones SQL enviadas y ejecutarlas
de forma correcta sobre las bases de datos almacenadas.
Este componente se divide en tres grupos de subsistemas:
Compilación de las consultas. El optimizador interpreta la petición SQL y la convierte
en un conjunto de Entrada y Salida de información, filtros y cualquier otra lógica de
procedimiento que cumpla la petición con eficacia
Ejecución. Se encarga de realizar las operaciones especificadas en la zona de
compilación
El Administrador SQL: Realiza las siguientes funciones
o Control del flujo de contenido entre las aplicaciones y los datos almacenados en
el servidor
o Control y gestión de las llamadas de las aplicaciones para su acceso a los datos.
Existen dos componentes que dan servicios adicionales que normalmente utiliza el servidor
para su propia gestión
Componente de servicios de catálogos: r. El listado de tablas, restricciones, usuarios,
permisos, relaciones entre datos, etc… Es una base de datos de bases de datos. Los
servicios referentes a catálogos realizan, entre otras, las siguientes funciones
o Realiza la gestión interna de los datos y estructuras de tabla. Por ejemplo,
cuando se crea una tabla en una base de datos ‘ciudades’ a través de la
instrucción CREATE TABLE nombres, se añade al catálogo una entrada en la que
Pág. 14 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
se especifica que la tabla ‘nombres’ pertenece a la base de datos ‘ciudades’,
que la ha creado un usuario específico, la lista de campos, etc. Actúa como un
usuario de la base de datos del sistema.
o Controlan las tablas del sistema, de manera que todas las tablas permanecen
siempre perfectamente identificadas.
o Alrededor de un tercio del mismo funciona en el entorno del motor de
almacenamiento, que es quien se ocupa de gestionar la parte de datos de las
bases de datos que se alojan en el servidor.
UMS (User Mode Scheduler, programador de modos de usuario): Permite programar
la asignación de recursos a distintos procesos simultáneos para repartir la carga entre
el hardware disponible. Se definen distintas prioridades en función de algunos
parámetros, como el perfil del usuario autentificado que lanza un proceso.
Las funciones que realiza el motor de base de datos relacional como un todo son las
siguientes:
Permitir el diseño y creación de bases de datos que contengan los datos
necesarios para las aplicaciones clientes, organizándolos en campos, y éstos a su
vez, agrupados dentro de una estructura de tablas relacionadas
Implementar sistemas de control para la obtención de acceso al servidor y
modificar los datos almacenados.
Diseñar y crear objetos que permitan el control del acceso a las bases de datos y
las acciones que se realizarán sobre ellas.
Análisis y procesado de los mensajes dados por las aplicaciones clientes,
presentando los resultados en forma tabular
Gestionar la comunicación directa con el motor de almacenamiento para:
Pág. 15 de 62
o Controlar el almacenamiento de los distintos objetos que conforman una
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
base de datos
Optimizar el acceso a los datos, permitiendo el diseño y creación de objetos Esquema en bloques de ejemplo de un motor
relacional (Microsoft SQL Server)
o que permitan la reorganización y/o obtención rápida de los datos
2.2.4.- Motor de almacenamiento – Data storage engine
El motor de almacenamiento se encarga de las operaciones de
almacenamiento en el medio elegido (normalmente HDD) de
los distintos componentes de una base de datos. Esto incluye
desde las estructuras básicas, hasta los datos que contienen.
Se encarga también de la extracción de los datos solicitados
Forma parte de la arquitectura global de la base de datos y se encarga de manejar los
datos que persisten en la propia base y llevan a cabo las operaciones de entrada y salida de los
mismos. También es el responsable de determinadas características propias, como puede ser el
bloqueo de datos ante accesos simultáneos.
El motor de almacenamiento depende del servidor elegido. La elección del motor de
almacenamiento determinará el comportamiento y rendimiento de la base de datos. Algunos
sistemas de gestión de bases de datos permiten elegir uno u otro en función de la previsión de
utilización de los datos almacenados.
La elección de un motor u otro se basa principalmente en cuatro parámetros
Tipo de campos: Cada motor de almacenamiento tiene definido tipos de datos
distintos. Normalmente todos los motores disponen de tipos de datos comunes además
de los propios de cada uno de ellos.
Tipos de bloqueo: Define la forma en que los motores de almacenamiento se
comportan ante accesos simultáneos a los mismos registros. Algunos bloquean la tabla
completa, otros sólo el registro…
Índices: Campo de una tabla que se utiliza como identificador del contenido del
registro y que permite agilizar las búsquedas de información. Cada motor de
almacenamiento configura y utiliza los índices de manera distinta, siendo más
efectivos unos que otros en función del tipo de búsquedas que se realizan.
Transacciones: Una transacción es un conjunto de instrucciones SQL que se ejecutan
de forma indivisible, formando una unidad de trabajo. Existen motores de
almacenamientos que respetan la integridad de los datos original si existe un fallo y la
transacción se interrumpe antes de ser finalizada (Motores transacionales) y otros que
Pág. 16 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
no contemplan esta funcionalidad (no transacionales). Éstos últimos efectúan las
operaciones de forma más rápida, pero deben incorporar mecanismos de control en
caso de fallo de alguna instrucción, lo que complica la programación SQL de la
aplicación.
Las funciones que desarrolla un motor de almacenamiento en una base de datos relacional
son fundamentalmente:
Proporcionar herramientas que den soporte al almacenamiento de los datos.
Integrar los sistemas de almacenamiento interno-externo del sistema operativo
donde está implantado el servidor con el propio software servidor SQL , para el
almacenamiento de las estructuras, objetos y datos de la base de datos tanto
para el almacenamiento como para la obtención de los datos
Proporcionar las herramientas que permitan la realización de salvaguardas de
información de los datos almacenados y recuperación de los mismos en caso de
error.
Agilizar la gestión de las bases de datos almacenadas mediante distintas
herramientas:
o Compactación de los datos en la base de datos
o Creación y desarrollo de objetos que optimicen el acceso a los datos
almacenados
o Mantener la integridad de los datos almacenados, evitando que se
almacenen datos inconsistentes o duplicados que merman la velocidad o/y
disponibilidad de los datos
o Creación de herramientas para que varias copias de la misma información
se distribuyan en varias bases de datos obteniéndose una mayor
velocidad/disponibilidad de los datos (ver gráfico)
Pág. 17 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Esquema en bloques de ejemplo de un motor de base de datos distribuyendo información a otros servidores
Pág. 18 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
2.3.- LECCIÓN 3.1.3: GESTIÓN DE OBJETOS DE UNA INSTANCIA
Una instancia de un servidor SQL está formada por cada una
de las veces que el servidor está ejecutándose en la memoria
del ordenador junto a su configuración particular. Permite que
un mismo servidor se comporte como varios, puesto que cada
una de sus instancias está definida de forma diferente
Normalmente las instancias se utilizan para mantener separados distintos servicios dentro
de un servidor de bases de datos. Es posible disponer de una instancia que de soporte a una
aplicación web y otra distinta que de soporte a aplicaciones cliente instaladas en la red. De esta
manera es posible controlar mejor el tráfico que va dirigido a cada una de las bases de datos
instaladas en el servidor.
Dentro de la arquitectura de los servidores SQL las instancias se pueden gestionar como
cualquier otro objeto. Es decir, se permite la creación, modificación y eliminación de las mismas.
Cuando se genera una instancia se hereda del servidor todos los aspectos que son comunes a
todas, heredando las posibles modificaciones que puedan afectar a dichos aspectos. Cuando las
modificaciones se efectúan sobre una instancia en particular éstas no afectan a la configuración
del servidor.
Desde el administrador del servidor es posible modificar la configuración de las instancias
de un servidor. La configuración de la misma incluye:
Configuración de la conexión a la misma: Deben diferenciar a la instancia e
identificarla de forma unívoca a través de la configuración de los protocolos
permitidos, puertos de escucha y nombre de la instancia
Configuración de seguridad: Cada instancia permite la definición de usuarios
diferentes, método de autentificación y política de seguridad para las bases de
datos almacenadas.
Mapa de base de datos: Cada instancia puede disponer de distintas bases de
datos que no son accesibles desde otras instancias. Es posible definir bases de
datos comunes a todas las instancias.
Para crear nuevas instancias es necesario ejecutar la instalación del servidor tantas veces
como sea necesario, indicando en cada caso que se desea crear una nueva instancia. Para
eliminarla, basta con desintalarla del sistema.
La instalación de los servidores y sus instancias se detallan en los anexos de esta unidad
correspondientes cada uno de ellos a los servidores libres más extendidos en la actualidad. El
Pág. 19 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
anexo I detalla la instalación de Microsoft SQL Server y l anexo II la del servidor MySQL. Así mismo
se detalla en el anexo III la instalación y configuración de aplicaciones cliente para acceder y
utilizar el servidor de base de datos elegido.
Ejemplo de utilización de instancias:
Una empresa desea instalar un servidor SQL para cubrir las siguientes
necesidades:
1.- Se desea albergar una base de datos de uso público a través de un servidor
web donde se permite modificar el contenido de la base de datos. (Por ejemplo
con un foro). Esta base de datos se llama ‘publicdb’.
2.- Se desea albergar una base de datos para uso interno de los empleados
donde se almacena la información que utiliza la empresa para prestar sus
servicios. Esta base de datos se llama ‘internaldb’.
Se dispone de un servidor web y un servidor SQL dentro de la red. Los clientes
internos disponen de una aplicación interna que permite el acceso a la base de
datos ‘internaldb’.
Solución a): Un único servidor
Se podría instalar un servidor SQL de bases de datos y diseñar las bases de
datos en él. A través de la asignación de privilegios se pueden definir usuarios
distintos para este servidor y limitar el acceso de unos y otros a sus respectivas
bases de datos.
Esta solución presenta dos grandes inconvenientes:
El servidor al que acceden los usuarios públicos es el mismo donde está alojada
la base de datos interna de las aplicaciones de gestión de la empresa con el
consiguiente riesgo de accesos indebidos.
Pág. 20 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Es muy complicado poder equilibrar la carga de procesamiento asignando más
recursos de procesador a la base de datos que lo requiera puesto que el
proceso que controla ambas bases de datos es el mismo.
Solución b): Varias instancias de servidor
Se podrían instalar dos instancias de servidor SQL. Una para controlar la base
de datos interna ‘internaldb’ llamada internalSQL y otra para gestionar la base
de datos pública ‘publicdb’ que se llamará ‘publicSQL’. De esta forma se
solucionan los dos inconvenientes antes citados:
Para cada una de las instancias es posible definir usuarios distintos e
independientes, con lo que un usuario público nunca podría entrar en la
instancia ‘internalSQL’, puesto que no tiene definido ese usuario. La seguridad
se ve incrementada en gran medida.
Ahora sí es posible asignar más recursos de procesamiento a una de las
instancias, puesto que están controladas por dos procesos distintos. La base de
datos pública puede necesitar más recursos si los accesos desde el exterior son
muy numerosos.
Pág. 21 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
2.3.- LECCIÓN 3.1.4: ADMINISTRACIÓN DE LA SEGURIDAD
La información almacenada en una base de datos puede llegar a tener un gran valor. Los
Sistemas de gestión de bases de datos deben garantizar que la información se encuentra segura
frente a:
Usuarios malintencionados, que intenten acceder a información privilegiada
Ataques que deseen manipular o destruir la información
Posibilidad de error no intencionado en la manipulación de los datos por parte
de usuarios autorizados.
Normalmente, los SGBD disponen de un complejo sistema de permisos a usuarios y grupos
de usuarios, que permiten otorgar diversas categorías de permisos y que persigue controlar tanto
el acceso a los datos como las acciones que se pueden realizar con ellos.
Los mecanismos de seguridad más utilizados habitualmente son:
2.3.1.- Inicios de Sesión
Uno de los mecanismos de seguridad más usados es el control de acceso al servidor
mediante inicios de sesión consistente en la autentificación del usuario a través de,
normalmente, un nombre de usuario y contraseña. El servidor comprueba y valida el inicio de
sesión enviado y comprueba en lo sucesivo, si el cliente puede o no realizar las acciones que está
enviando a través de las instrucciones SQL.
ServidorSQL
ClienteSQL
CANAL COMUNICACIÓN
pepe
usuario
****
contraseñapepe
usuario
****
contraseñaLogin
permitid
o
MensajeSQL
1 2
3
Proceso de comunicación: 1.- Envío de login al servidor. 2.- El Servidor valida información del login enviado. 3.- El
servidor admite y procesa el mensaje SQL.
Los servidores disponen de herramientas que permiten la gestión de las cuentas de usuario.
Dicha gestión comprende las acciones de crear nuevos usuarios, eliminar los existentes y modificar
las cuentas existentes asignando o quitando permisos y privilegios.
Para realizar esta gestión se utilizan dos técnicas:
Pág. 22 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Uso de una aplicación gráfica cliente de administración: Las aplicaciones
cliente de gestión de servidor suelen llevar incorporados módulos de gestión de
cuentas de usuario
Adaptación / Ampliación del lenguaje SQL: A algunos servidores se les añade
en sus librerías nuevas instrucciones que complementan el lenguaje SQL para
permitir la gestión de cuentas de usuarios, así como los permisos y privilegios
asociados a cada una de ellas.
2.3.2.- Privilegios
Además de permitir el acceso a un servidor de bases de datos las cuentas de acceso
permiten controlar la capacidad de realizar ciertas acciones dentro de la base de datos. Las
acciones que un usuario puede realizar dentro de la administración de un servidor o en las bases
de datos a las que tenga acceso se conocen con el nombre de privilegios.
Los privilegios permiten controlar que parte del lenguaje SQL
se puede procesar dentro del servidor SQL al validar una
cuenta de usuario.
Cuando se envía una cuenta de usuario a un servidor, éste la valida. Si es correcta permite
el acceso al mismo. A continuación se comprueban los privilegios de la cuenta para:
Permitir al acceso sólo a los datos que el usuario pueda ver. Se comprueba el
catálogo de bases de datos sobre las que el usuario tenga privilegios.
Permitir la ejecución de determinadas instrucciones SQL que realizan las
acciones sobre los datos que el usuario pueda realizar mediante el procesado de
cada mensaje que el cliente envía al servidor en un entorno de ejecución
controlado.
Uso de Privilegios: 1.- El servidor comprueba los privilegios de la cuenta. 2.- El mensaje se procesa de acuerdo a las
acciones permitidas por los privilegios.
Pág. 23 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
La seguridad en cuanto a cuentas de usuario y privilegios se
almacena en tablas propias del servidor SQL. El acceso o
gestión de dichas tablas se realiza por medio de privilegios
llamados privilegios administrativos
Los privilegios administrativos se asignan a los administradores del servidor y permite que
éstos puedan gestionar cuentas de usuario, seguridad del servidor y bases de datos albergadas. En
realidad los privilegios administrativos permiten la gestión de las bases de datos internas del
servidor.
En general, los privilegios se asignan del siguiente modo:
Un usuario que crea una tabla o cualquier otro objeto de la base de datos es el
propietario y se le garantizan automáticamente todos los privilegios aplicables a
dicho objeto, con la posibilidad de darles también a otros usuarios dichos
privilegios (privilegio de concesión).
Un usuario que tenga un privilegio y posea además sobre él el privilegio de
concesión puede asignarle tal privilegio a otro usuario y pasarle también el
privilegio de concesión.
Los privilegios los concede quien tiene el permiso (es decir el propietario del
objeto y quien tiene el privilegio de concesión) mediante la instrucción GRANT,
y los revoca mediante la orden REVOKE.
La sintaxis de la orden GRANT es la siguiente para asignar a un usuario o grupo de usuarios
la lista de privilegios indicada sobre el objeto especificado:
GRANT lista_privilegios ON objeto TO lista_usuarios [ WITH GRANT OPTION ]
Los privilegios asignables más usuales son los siguientes:
USAGE: Permite usar un objeto de la base de datos.
SELECT: Permite acceder a todas las columnas de la tabla o vista especificada.
INSERT [ (nombre_columna) ]: Permite la inserción de valores en la tabla o
vista especificada. Si se especifica la opción nombre_columna, el privilegio se
limita a la columna indicada. Sin el nombre_columna se incluyen todas las
Pág. 24 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
columnas de la tabla, incluidas las que se puedan agregar después de la
concesión del privilegio.
UPDATE [ (nombre_columna) ]: Permite la modificación de los datos en la
tabla o vista especificada. Si se especifica el parámetro nombre_columna el
privilegio se limita a las columnas indicadas. Si no es así el privilegio se aplica
sobre todas las columnas de la tabla, incluidas las que se agreguen después de la
concesión del permiso.
DELETE: Permite eliminar líneas de una tabla o de una vista.
El objeto al que se refiere el privilegio es generalmente una tabla o una vista. La sintaxis
para su especificación es en ese caso ‘[TABLE] nombre_tabla’. Si el objeto es otro la sintaxis será
‘tipo_objeto nombre_objeto’ donde tipo_objeto puede ser DOMAIN, CHARACTER SET, COLLATION
o TRANSLATION. En el caso de objetos que no sean tablas o vistas, el único privilegio aplicable es
el de USAGE.
La lista_usuarios es una lista de identificativos de usuarios o grupos de usuarios a los que
se les concede el privilegio indicado. Si se utiliza la clave PUBLIC, se indicará a que todos los
usuarios y los grupos conocidos en el sistema se les concede el permiso
Si se especifica la opción [WITH GRANT OPTION], el servidor asignará además del permiso
en cuestión, el privilegio de concesión, que permite a los usuarios conceder los privilegios que se
les han asignado a otros usuarios.
Ejemplo: Para asignar al usuario ‘Pepe’ los privilegios de acceso, agregar datos y
modificar la columna nombre de una tabla personas y permitir además que estos
permisos los pueda conceder a otros usuarios sería necesario enviar al servidor la
instrucción
GRANT SELECT, INSERT, UPDATE(nombre) ON persona TO pepe WITH GRANT OPTION
Para eliminar los privilegios a una cuenta de usuario se utiliza la instrucción REVOKE con la
siguiente sintaxis:
REVOKE [GRANT OPTION FOR] lista_privilegios ON objeto FROM lista_usuarios
{RESTRIC | CASCADE}
Donde lista_privilegios, objeto y lista_usuarios tienen el mismo significado que las
correspondientes opciones de GRANT. La opción GRANT OPTION FOR elimina el privilegio de
concesión.
Pág. 25 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Si se especifica la cláusula RESTRICT, la orden REVOKE puede fallar si el usuario al que se
le han revocado los privilegios se los ha concedido posteriormente a otros. Si está presente la
cláusula CASCADE, la instrucción se completará siempre con éxito y se revocarán también los
privilegios de esos usuarios y de todos aquellos a quienes a su vez se les han concedido. Se
destruirán, además, los objetos de la base de datos construidos gracias a dichos permisos.
2.3.3.- Roles: Agrupación de privilegios y Asignación a cuentas de usuario
A la hora de gestionar la seguridad de un servidor de bases de datos se suelen asignan los
mismos privilegios a distintos usuarios dependiendo de la capacidad que éstos deban tener para
ejecutar instrucciones SQL en el servidor. Se generan así grupos de usuarios a los que se les asigna
grupos de privilegios comunes.
Ejemplo: Una política de seguridad a aplicar en un servidor de bases de datos público
puede consistir en que a la mayoría de los usuarios públicos se les asignará un control
total de las bases de datos que hayan sido creados por ellos, mientras que a otro
conjunto se les asignará privilegios de administración de todas las bases de datos. Por
último existirá un conjunto con un número limitado de usuarios que dispondrá de
privilegios de administración del servidor.
Los roles consisten en agrupaciones de privilegios bajo un nombre que permiten la
asignación fácil y rápida a las distintas cuentas de usuario. Permiten definir un conjunto de
permisos que definen el comportamiento del usuario incluido en el rol dentro del servidor
Dependiendo del tipo de privilegios que se agrupan nos encontramos:
Roles de servidor: Los roles de servidor incluyen privilegios para la gestión de
la seguridad de las bases de datos y la administración del servidor como
creación de usuarios, definición de privilegios, gestión de roles, gestión de bases
de datos, etc. Están definidos por los administradores de los servidores de bases
de datos y afecta globalmente a todos los objetos del servidor.
Roles de base de datos: Incluyen los privilegios de gestión de las distintas bases
de datos como crear estructuras en la base de datos, crear objetos para el uso
optimizado de la base de datos, etc. Afecta exclusivamente a una base de datos
y está dirigido a los usuarios que manejan dicha base. Algunos de los roles de
bases de datos incluidos por defecto en los servidores de bases de datos son:
Pág. 26 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Rol B.D. Descripción
db_owner Tiene todos los permisos de la base de datos
db_accessadmin Puede agregar o eliminar Id. de usuario
db_securityadmin Puede administrar todos los permisos, la propiedad de los objetos, las funciones y la pertenencia a ellas
db_ddladmin Puede utilizar TODAS las instrucciones DDL, menos las instrucciones GRANT, REVOKE o DENY
db_backupoperator Puede utilizar las instrucciones DBCC, CHECKPOINT y BACKUP
db_datareader Puede seleccionar todos los datos de cualquier tabla de usuario de la base de datos
db_datawriter Puede modificar todos los datos de cualquier tabla de usuario de la base de datos
db_denydatareader No puede seleccionar ningún dato de cualquier tabla de usuario de la base de datos
db_denydatawriter No puede modificar ningún dato de cualquier tabla de usuario de la base de datos
Roles de aplicación: Incluyen los privilegios que se asignan a los usuarios de la
base de datos, normalmente una aplicación. Normalmente hacen referencia a la
gestión de los datos incluidos en la base de datos permitiendo consultar, agregar
o actualizar los datos de la base de datos. Normalmente no hay predefinidos y
es necesario crearlos y asignarlos a los distintos inicios de sesión. Afectan sólo a
una base de datos.
Además es posible definir roles particulares para objetos de una base de datos
determinada, que sólo afectan a dichos objetos creados en la base seleccionada y asignarlos
a distintos inicios de sesión.
Ejemplo de aplicación de diferentes roles
El administrador puede crear una base de datos nueva porque tiene asignado un rol de
servidor, mientras que un usuario puede crear una tabla dentro de esa base de datos
puesto que tiene asignado un rol de base de datos. Así mismo una aplicación puede
agregar o eliminar datos en las tablas, pero no puede crear nuevas tablas en la base de
datos, puesto que tiene asignado un rol de aplicación.
Aún utilizando los roles para los usuarios, es posible definir permisos de forma explícita
utilizando las instrucciones GRANT y REVOKE vistas anteriormente. En el caso de que un permiso
Pág. 27 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
explícito esté en contradicción con uno perteneciente al rol que tiene asignado el usuario, siempre
se aplicará el más restrictivo, de forma que se garantiza siempre la seguridad.
Ejemplo: Si un usuario pertenece a un rol donde tiene asignado el privilegio para
eliminar columnas en una tabla, y explícitamente se le revocado, el usuario no podrá
eliminar las columnas.
3.1.3.4.- Procedimientos almacenados
Un procedimiento almacenado es una agrupación de instrucciones SQL
dentro del servidor al que se le asigna un nombre
Cada vez que se llama al procedimiento almacenado por el nombre asignado se ejecutan
las instrucciones que comprende.
Las características más importantes de los procedimientos almacenados son:
Al Permitir agrupar sentencias SQL dentro del propio servidor SQL se
automatizan determinadas tareas evitando tener que llamar a todas las
instrucciones cada vez que es necesario ejecutarlas
Permiten el uso de variables, parámetros y bucles que de otra forma sería más
complicado o imposible de implementar.
Cuando un procedimiento es llamado por primera vez se compila. El
procedimiento compilado se guarda en memoria para optimizar el rendimiento,
puesto que las siguientes veces que sea llamado no será necesario compilarlo.
La devolución de los datos se vuelve más efectiva y rápida.
Al usar procedimientos almacenados, es posible utilizar la asignación de privilegios para
permitir su ejecución. De esta forma es posible controlar más la ejecución de sentencias SQL,
puesto que se puede denegar la ejecución de cualquier instrucción y permitir la ejecución de los
procedimientos almacenados. Esta técnica eleva el nivel de seguridad aplicado.
Pág. 28 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Procedimiento almacenado en
Servidor
Análisis sintáctico
Análisis sintáctico
CreaciónPlan de ejecucióncompilado en la cachéde procedimientos
Siguientes ejecuciones
OptimizaciónOptimización
ResoluciónResolución
Plan
de
ejec
ució
nPl
an d
e ej
ecuc
ión
Primera ejecución
Se realizatodo
el Proceso
Se ejecutadesde
la caché
CompilaciónCompilación
Ejecución de Procedimientos almacenados: Una vez creado el procedimiento, se almacena en el servidor. Al ejecutarse
por primera vez, más lentamente, el servidor elabora un plan de ejecución que le permite aprende a resolver la
ejecución del procedimiento. El resultado del plan de ejecución se almacena en caché. Las siguiente ejecuciones
solo leen lo aprendido, acelerando la ejecución, y devolviendo los datos más eficientemente.
Sólo los servidores SQL más avanzados tecnológicamente
admiten los procedimientos almacenados y roles
Pág. 29 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
3.- APARTADO 3.2: ESTRUCTURA AVANZADA DE UN SERVIDOR SQL
3.1.- LECCIÓN 3.2.1: GESTIÓN DEL ALMACENAMIENTO DE DATOS EN
INSTANCIAS
3.1.1.- El motor de almacenamiento
El motor de almacenamiento se encarga de las operaciones de almacenamiento en el
medio elegido (normalmente HDD) de los distintos componentes de una base de datos. Esto
incluye desde las estructuras básicas, hasta los datos que contienen. Se encarga también de la
extracción de los datos solicitados cuando son solicitados por las aplicaciones clientes
Las principales responsabilidades del motor de almacenamiento incluyen:
• Ofrecer características que faciliten el uso en la administración de los
componentes de almacenamiento
• Administrar los búferes de datos y todas las E/S en los archivos físicos
• Controlar la concurrencia, administración de transacciones, bloqueos y registro
• Administrar los archivos y las páginas físicas utilizadas para almacenar datos
• Recuperar desde errores graves del sistema
3.1.2.- Almacenamiento de los datos
A la hora de gestionar el almacenamiento de datos en un servidor de bases de datos SQL se
utilizan una estructura que dependiendo del punto de vista se puede clasificar en:
Estructura lógica: El servidor de base de datos almacena los datos
organizándolos en tablas, registros y campos. Es la estructura de la base de
datos diseñada por el administrador.
Estructura física: El almacenamiento de la estructura lógica se realiza en forma
de ficheros dentro del sistema operativo del servidor SQL, formando la
estructura física. Para ello el servidor SQL utiliza los dispositivos físicos de
almacenamiento de datos, normalmente discos duros.
La mayoría de servidores SQL utilizan tres tipos de archivos para almacenar una base de
datos, en una estructura física: archivos principales, archivos secundarios y registros de
transacciones.
Pág. 30 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
La base de datos debe tener un archivo de datos principal y,
como mínimo, un archivo de registro de transacciones.
Opcionalmente puede crearse uno o varios archivos de datos secundarios así como archivos
de registro de transacciones adicionales.
Archivos principales: Estos archivos contienen la información de inicio de la
base de datos. Se utilizan también para almacenar datos. Cada base de datos
tiene un archivo principal que se define al crearla
Archivos secundarios: Estos archivos contienen todos los datos que no caben en
el archivo de datos principal. No es necesario que las bases de datos tengan
archivos de datos secundarios si el archivo principal es lo suficientemente
grande como para contener todos los datos. Algunas bases de datos pueden ser
muy grandes y necesitar varios archivos de datos secundarios o utilizar archivos
secundarios en unidades de disco distintas, de modo que los datos estén
distribuidos en varios discos.
Registros de transacciones: Estos archivos contienen la información de registro
que se utiliza para recuperar la base de datos. Cada base de datos debe tener al
menos un archivo de registro de transacciones, aunque puede tener más de uno.
Ejemplo de creación de base de datos mostrándose la información de los ficheros que la componen.
A la hora de crear una base de datos es necesario definir dónde se ubicarán los archivos
principal y de registro de transacciones, indicando además al servidor su tamaño original y si se va
a permitir un crecimiento del mismo. Es posible limitar así el espacio que ocupará cada base de
datos creada, gestionando el espacio total disponible entre todas las bases de datos.
Pág. 31 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
3.1.3.- Indexación de los datos – Index
Un índice es una estructura de datos que permite acceder a diferentes
filas de una misma tabla a través de un campo (o campos clave).
A la hora de almacenar los datos en una tabla, el servidor SQL divide la misma en páginas
de datos a las que podemos acceder rápidamente a través de un índice. Esta idea es la que se
aplica en el mundo de las bases de datos, la información está guardada en una tabla (el libro) que
tiene muchas hojas de datos (las páginas del libro), con un índice en el que se puede buscar la
información que se desea recuperar. De esta forma se optimiza la búsqueda y localización de la
información almacenada en la estructura lógica de la base de datos.
Al realizar una búsqueda se consulta primero el índice y se obtiene dónde está ubicada la
información que se busca dentro de la tabla. El acceso se realiza de forma directa, mientras que si
no se dispone de índices sería necesario recorrer toda la tabla hasta localizar el valor buscado.
Un índice es una estructura de disco asociada con una tabla que contiene claves generadas
a partir de una o varias columnas de la tabla. Dichas claves están almacenadas en una estructura
que permite que el servidor SQL busque de forma rápida y eficiente la fila o filas asociadas a los
valores de cada clave
El lenguaje SQL permite la creación de índices para las tablas basados en uno o varios de
los campos. Es necesario ser cuidadoso con la elección de los índices, puesto que si se definen
muchos índices las operaciones de inserción y borrado de datos pueden ralentizarse demasiado al
ser necesario actualizar también los índices.
Normalmente se definirán índices basados en campos que se utilicen únicamente como
identificadores de registros y basados en campos sobre los que se realicen la mayoría de las
búsquedas, es decir, aquéllos que más aparezca en las cláusulas WHERE de las instrucciones SQL.
3Aranda
4Vela
2Toledo
5Martínez
1García
6Castro
3Aranda
4Vela
2Toledo
5Martínez
1García
6Castro
6
5
4
3
2
1
Daniel
Ana
Manuel
Patricia
Luís
José 76432853XGarcía
62184134PCastro
43158638TMartínez
95184132LVela
05632461KAranda
98431835FToledo
6
5
4
3
2
1
Daniel
Ana
Manuel
Patricia
Luís
José 76432853XGarcía
62184134PCastro
43158638TMartínez
95184132LVela
05632461KAranda
98431835FToledo
ÍndiceÍndice
Ejemplo de indexación de una tabla.
Pág. 32 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Para crear un índice se utiliza la instrucción SQL CREATE INDEX con la siguiente
sintaxis:
CREATE [UNIQUE] INDEX <nombre_indice> ON <nombre_tabla> (<nombre_campo> [ASC | DESC] {,<nombre_campo> [ASC | DESC]}));
Donde:
UNIQUE especifica que el valor utilizado como índice no se puede repetir
Nombre_índice, nombre_tabla y nombre_campo especifican los nombres de los
objetos involucrados en la creación del índice
ASC | DESC indica si el índice se va a ordenar de forma ascendente o
descendente
Es posible basar un índice en más campos separándolos por comas e indicando el
orden que van a seguir para cada campo.
Para eliminar un índice se utiliza la instrucción DROP INDEX nombre_indice
Al definir una clave principal en una tabla se define también un índice basado en ese
campo.
3.1.3.1.- Índices agrupados - Clustered
Un índice agrupado es similar a una guía de teléfonos. El conjunto que está ordenado es el
registro completo por el valor de uno de sus campos, de forma que se facilita su localización
siguiendo el orden establecido. En este tipo de índices los registros de la tabla se ordenan
físicamente.
Algunas características de los índices agrupados son:
Ordenan y almacenan las filas de los datos de la tabla de acuerdo con los
valores de la clave del índice.
Sólo puede haber un índice agrupado por cada tabla, porque las filas de datos
sólo pueden estar ordenadas de una forma.
La única ocasión en la que las filas de datos de una tabla están ordenadas es
cuando la tabla contiene un índice agrupado. Cuando una tabla tiene un índice
agrupado, la tabla se denomina tabla agrupada. Si la tabla no tiene un índice
agrupado se denomina montón de datos
Pág. 33 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Los índices agrupados se guardan junto a la misma tabla, puesto que están
incluidos en una de sus columnas.
3.1.3.2.- Índices no agrupados – NonClustered
Un índice no agrupado es como el índice de un libro. Se guarda en un lugar diferente a la
tabla y los punteros indican la ubicación de la información buscada dentro de la tabla.
Algunas características de los índices no agrupados son:
Los índices no agrupados tienen una estructura separada de las filas de datos, es
decir, se guardan en lugares diferentes. Normalmente es otra tabla de uso
interno que se guarda en archivos diferentes.
Un índice no agrupado contiene los valores de clave de índice no agrupado y
cada entrada de valor de clave tiene un puntero a la fila de datos en la tabla
que contiene el valor clave.
El puntero de una fila de índice no agrupado hacia una fila de datos se denomina
localizador de fila.
La estructura del localizador de filas depende de si las páginas de datos están
almacenadas en un montón o en una tabla agrupada. Si están en un montón, el
localizador de filas es un puntero hacia la fila. Si están en una tabla agrupada,
el localizador de fila es la clave de índice agrupada.
3.1.4.- Integridad de los datos
Todo servidor SQL debe como norma de funcionamiento evitar o exigir que se cumplan
ciertas normas a la hora de introducir los datos de una fila que eviten la información defectuosa o
errónea.
El conjunto de normas que deben cumplir los dominios de los campos
presentes en las tablas se denominan normas de integridad.
Los tipos de datos que poseen los campos definen los posibles valores que pueden
almacenar en una fila. En sí mismo es una norma de integridad, la primera que se puede imponer.
Por ejemplo, si se define un campo como numérico, de entrada el servidor no permitirá almacenar
valores textuales.
El administrador debe aplicar otras normas para asegurar la integridad de los datos. Por
ejemplo, en un campo edad no se deberían permitir valores negativos. Para implementar estas
Pág. 34 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
normas de integridad el lenguaje SQL y dependiendo de la implementación del servidor dispone de
las siguientes herramientas:
DEFAULT-Valor predeterminado: Define un valor que es almacenado en una
campo cuando no se indica ningún otro valor. Normalmente es utilizado cuando
un campo se define como obligatorio y se permite desde aplicación no indicar
ningún valor.
RULE/CHECK-Reglas de validación: Define los valores validos a almacenar en
una columna o un tipo de dato.
PRIMARY KEY-Clave Primaria: Define que el valor a almacenar en una columna
o campo sea valor único y no nulo.
FOREIGN KEY-Clave Foránea: Define que el valor a almacenar en una columna
o campo contiene un valor que hace referencia a una fila de otra tabla. Si se
intenta modificar o eliminar un campo referenciado en otras tablas, se produce
un error de integridad referencial y el servidor no lo permitirá.
UNIQUE-Valor Único: Define un índice único sobre una columna o sobre una
combinación de columnas. Un índice único es un índice que no permite valores
duplicados.
Pág. 35 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
3.2.- LECCIÓN 3.2.2: GESTIÓN DE IMPORTACIÓN Y EXPORTACIÓN DE
DATOS
3.2.1.- Importación y exportación masiva de datos
La importación y exportación masiva de datos permite la transferencia eficaz de datos
entre servidores de bases de datos y orígenes de datos heterogéneos. La exportación masiva se
refiere a la copia de datos de una tabla de la base de datos en un archivo de datos externo o en
otro servidor de bases de datos y la importación masiva significa cargar datos de un archivo de
datos u otro servidor a una tabla de la base de datos. Por ejemplo, puede exportar datos de una
aplicación de Microsoft Excel a un archivo de datos y, después, importarlos masivamente en una
tabla de la base de datos
La capacidad de trasladar datos entre una tabla del servidor
SQL y un archivo es un requisito básico de la administración
de bases de datos.
La mayoría de servidores SQL disponen de herramientas propias de importación y
exportación de datos en masa.
Es esencial para la transferencia eficaz de datos entre servidores SQL
La exportación-exportación masiva se refiere a la copia-carga de datos de
una tabla del servidor SQL en-desde un archivo de datos.
XML es el formato más comúnmente usado por los servidores
SQL para realizar la importación-exportación masiva de
información
Normalmente, la importación – exportación masiva de datos será necesaria cuando se
precise una actualización de los servidores de datos SQL. La actualización del software servidor es
un proceso complejo que requiere de los procesos de importación-exportación de datos, y debe
ser riguroso en su planificación para evitar la pérdida de información
Pág. 36 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Herramienta de importación-exportación masiva de datos usada en servidores Microsoft SQL Server 2000. En
esta pantalla del asistente se elige el destino, en este caso, un servidor SQL, dando la información de cuenta de usuario-
contraseña y base de datos donde volcar la información
3.2.1.1.- Código XML para el movimiento masivo de información
El lenguaje que podría denominarse “estandar” (debido a la multitud de sistemas que lo
implementan) para la mayoría de servidores SQL es el XML (eXtensible Markup Language)
XML proviene de un lenguaje inventado por IBM en los años
setenta, llamado GML (General Markup Language), que surgió
por la necesidad que tenía la empresa de almacenar grandes
cantidades de información.
Algunas ventajas de utilizar XML como herramienta para la importación y exportación
masiva de datos son:
Extensible: Una vez diseñado y puesto en producción, permite la adición de
nuevas etiquetas de manera que es compatible con diseños anteriores.
El analizador es un componente estándar: no es necesario crear uno, se
permite el empleo de uno de tantos disponibles. De esta manera se evitan
errores de programación y se acelera el desarrollo de la aplicación.
Pág. 37 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Pág. 38 de 62
Multiplataforma: Pueden crearse aplicaciones usando el lenguaje XML que
trabajen con diferentes implementaciones de servidor SQL, siempre que
soporten XML
Ejemplo de código XML. Este ejemplo muestra una estructura simple del código de marcas XML
3.2.1.2.- Lenguaje SQL para el movimiento masivo de información
Algunas de las implementaciones de servidores SQL incluyen código SQL para el
movimiento masivo de información hacia-desde el servidor.
La instrucción BULK INSERT Copia un archivo de datos a una tabla o vista de base de datos
en un formato especificado por el usuario.
Algunas consideraciones a tener en cuenta para evitar la pérdida de datos son:
Se debe definir bien el formato en el que están los datos del fichero de datos, es
decir, se debe indicar los caracteres que se utilizan para delimitar el valor de
cada campo ó el número de caracteres asignados a cada uno de ellos
Puede usarse XML para definir como están organizados los datos del archivo de
datos, de forma que luego la importación a la base de datos se realice desde el
archivo xml generado. Los datos se vuelcan primero desde el archivo externo al
archivo XML que contiene la definición de los mismos.
<?xml version="1.0" "ISO-8859-1" encoding= ?> <Edit_Mensaje> <Mensaje> <Remitente> <Nombre>Nombre del remitente</Nombre> <Mail> Correo del remitente </Mail> </Remitente> <Destinatario> <Nombre>Nombre del destinatario</Nombre> <Mail> Correo del destinatario</Mail> </Destinatario> <Texto> <Parrafo>
Este es mi documento con una estructura muy sencilla no contiene atributos ni entidades....
</Parrafo> </Texto> </Mensaje> </Edit_Mensaje>
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
BULK INSERT base_de_datos.dbo.[nombre_tabla]
FROM 'unidad:\fichero_datos.txt'
WITH (
FIELDTERMINATOR = '|',
ROWTERMINATOR = '|\n'
)
BULK INSERT base_de_datos.dbo.[nombre_tabla]
FROM 'unidad:\fichero_datos.txt'
WITH (
FORMATFILE='C:\formato.xml'
)
Ejemplo instrucción BULK. Dos ejemplos que muestran la sintaxis SQL para la utilización de la instrucción BULK INSERT:
(A.- Usando opciones que indican el formato de los datos), (B.- Usando opciones XML que indica el formato de los datos)
Normalmente los servidores de bases de datos actuales inlcuyen herramientas que
permiten definir de forma sencilla el proceso de importación y exportación masiva de datos.
Pág. 39 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
4.- ANEXO I: INSTALACIÓN DE MICROSOFT SQL SERVER
Microsoft SQL Server es un sistema de gestión de bases de datos relacionales (SGBD)
basado en una modificación del estándar de SQL llamado Transact-SQL, capaz de poner a
disposición de muchos usuarios grandes cantidades de datos de manera simultánea.
Microsoft SQL Server constituye la alternativa de Microsoft a otros potentes sistemas
gestores de bases de datos como son Oracle, Sybase ASE, PostgreSQL o MySQL.
Algunas características de este sistema de gestión de bases de datos son:
Soporte de transacciones. (Motor de base de datos transaccional)
Escalabilidad, estabilidad y seguridad.
Soporta procedimientos almacenados.
Incluye también un potente entorno gráfico de administración, que permite el
uso de comandos DDL y DML gráficamente.
Permite trabajar en modo cliente-servidor, donde la información y datos se
alojan en el servidor y los terminales o clientes de la red sólo acceden a la
información.
Además permite administrar información de otros servidores de datos.
A la hora de instalar un software servidor se necesitará también un software cliente que
permita acceder al servicio para configurarlo y administrarlo. Además se deberá considerar la
necesidad de instalar paquetes adicionales de herramientas que amplíen la funcionalidad del
servicio.
En el caso de Microsoft SQL Server las versiones elegidas son:
Prerrequisitos: El software servidor necesita para su funcionamiento de ciertas
librerías instaladas en sistema, incluidas en el paquete Microsoft .Net
Framework 2.0. Estas librerías se encuentran en la página web de Microsoft para
su descarga en la dirección (Archivo dotnetfx.exe):
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en
Software servidor: Microsoft dispone de múltiples versiones de SQL Server que
se diferencian en la cantidad de funciones adicionales disponibles para la
gestión de las bases de datos. En la fecha de redacción de este documento la
más reciente es Microsoft SQL Server 2005, aunque existe una versión beta de
Microsoft SQL Server 2008. Dentro de las opciones disponible la más
recomendable es Microsoft SQL Server 2005 Express Edition, por ser una versión
Pág. 40 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
de distribución gratuita y con la funcionalidad suficiente para el aprendizaje del
lenguaje SQL.
Software cliente: Microsoft dispone de un software cliente para la
administración del servidor SQL, Microsoft SQL Server Management Studio
Express. Dispone de un entorno gráfico para lanzar comandos DDL y DML, así
como un analizador de consultas. Es el más recomendable por su integración y
facilidad de utilización. Es posible su descarga gratuita desde la página web de
Microsoft
El sistema operativo que va a albergar el servidor debe cumplir con los siguientes
requerimientos mínimos:
Sistemas operativos compatibles
o Windows 2000 Service Pack 4
o Windows Server 2003 Service Pack 1
o Windows XP Service Pack 2
Requerimientos mínimos de Hardware
o Procesador: PIII a 600 MHz
o RAM : 192MB
o Disco duro : 525 MB
4.1.- INSTALACIÓN DEL SERVIDOR SQL SERVER EXPRESS 2005
La instalación del servidor no entraña ninguna dificultad puesto que prácticamente se
mantienen todas las opciones por defecto que el instalador presenta. Es posible modificar esta
configuración a posteriori desde la administración del servidor si fuera necesario.
El asistente de instalación va recopilando los parámetros necesarios para el correcto
funcionamiento posterior del servidor.
4.2.- INSTALACIÓN DEL CLIENTE MICROSOFT SQL SERVER
MANAGEMENT STUDIO EXPRESS
Esta instalación no requiere prácticamente la participación del usuario. Como se verá más
adelante, será necesario configurar el servidor para hacer posible las conexiones desde el cliente.
En ese momento se dispondrá del servidor y cliente completamente funcional para comenzar a
definir las bases de datos y sus recursos.
Pág. 41 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Pág. 42 de 62
4.3.- CONFIGURACIÓN MÍNIMA DEL SERVIDOR
Es necesario realizar ciertas configuraciones previas a la utilización del servidor instalado.
Para ello se instala de forma automática junto al servidor una aplicación llamada Microsoft SQL
Server Configuration Manager. Las más importantes son:
4.3.1.- Configuración de conexiones remotas
Por razones de seguridad Microsoft SQL Server se instala por defecto únicamente para
admitir conexiones locales desde el propio servidor. No permite la conexión remota de clientes, y,
por lo tanto, no permite el acceso a los datos de forma remota. Es necesario activar y configurar
el servicio para que acepte esas conexiones a
través de, normalmente, TCP/IP. Desde la
aplicación de configuración se accede a las
propiedades del protocolo utilizado para la
transimisión de datos.
Una vez activado el protocolo de
comunicación con sus parámetros
correspondientes se debe activar el Explorador
de SQL Server para que se permita la
navegación por los recursos del servidor a
través de las conexiones remotas de clientes.
En caso necesario se deben configurar
los servicios de la red de forma que se
permitan las conexiones al servidor. Por
defecto, el servidor SQL de Microsoft utiliza el
puerto 1433 y 1434 para aceptar las conexiones
de los clientes, aunque se pueden modificar
por seguridad. Normalmente se asignarán de
forma estática, deshabilitando la opción de
puerto dinámico en la configuración del
protocolo TCP/IP. Los dispositivos de la red
como firewalls o routers deben permitir las
conexiones a los puertos seleccionados.
Después de aplicar un cambio de configuración sobre el servidor es necesario reiniciar el
servicio para que se haga efectivo.
Ahora es posible conectar con el servidor desde una aplicación cliente como SQL
Management Studio para empezar a utilizarlo.
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
A la hora de conectar es necesario indicar correctamente los parámetros de conexión. Los
más importantes son :
4.3.1.1.- Nombre de servidor
Normalmente el nombre de servidor está compuesto por la pareja
servidor\nombreinstancia, siendo servidor el nombre de la máquina que lo alberga y
nombreinstancia el nombre asignado a la instancia del servidor que se desea conectar
Una instancia no es más que el conjunto de características y comportamientos dados al
servicio SQL instalado en el Sistema Operativo
Los objetos de una instancia son todas aquellas
configuraciones necesarias para dar a los clientes del servicio
la conectividad deseada; es decir, cuales son los protocolos
de conexión permitidos, como deben conectarse, etc.
Para instalar nuevas instancias del servidor será necesario ejecutar de nuevo la instalación
y definir un nuevo nombre de instancia. Posteriormente se deberá efectuar la configuración
mínima de la instancia para permitir el acceso remoto de la misma forma que se ha indicado en la
instancia por defecto llamada SQLEXPRESS.
Pág. 43 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Ejemplo de herramienta de configuración de los objetos de conectividad de la instancia MSSQLSERVER de un
servidor Microsoft SQL Server.
4.3.1.2.- Método Autenticación
Hace referencia al modo de comprobación de los usuarios que se conectan al servidor. Al
instalar el servidor se instala por defecto un usuario administrador con nombre sa y un login o
método de entrada con este usuario basado en nombre de usuario y contraseña. Para definir un
método de entrada se debe asignar un login y un password
Se denomina login al método de entrada utilizado para acceder a nuestro servidor,
compuesto de un nombre de usuario y una contraseña. En la instalación se define para el usuario
super administrador (sa) y en la creación de nuevos usuarios para su propio acceso. Es posible
utilizar usuarios definidos en el sistema como autentificación de entrada en el servidor. Para el
uso de la autenticación Windows se deberá crear previamente un usuario dentro del sistema que
compartan las contraseñas para que el usuario en cuestión pueda acceder tanto a los recursos del
sistema operativo como a la instancia del SQL y a los servicios que éste último utiliza.
El password de cada usuario es la contraseña que se asigna a cada usuario para completar
el login y acceder al servidor SQL. Es importante resaltar que el super administrador (Usuario sa)
es un administrador total del servidor y es conveniente asignar una contraseña a este usuario para
evitar entradas indeseadas en el mismo.
Una vez creada la instancia correctamente y tras
haber comprobado su correcto funcionamiento se debe
aplicar unas medidas básicas de seguridad consistentes en
evitar que las aplicaciones cliente sean incapaces de explorar
las instancias que existen en un servidor. Esta operación se
puede realizar desde el configurador de Microsoft SQL Server.
Pág. 44 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
5.- ANEXO II: INSTALACIÓN Y CONFIGURACIÓN DEL SERVIDOR MYSQL
5.1.- INTRODUCCIÓN:
MySQL es un servidor de bases de datos open source basado en el lenguaje SQL lenguaje
estándar de comunicación para la gestión de bases de datos.
Permite la conexión simultánea de usuarios a través del puerto TCP-3306
El acceso a las BD del servidor está controlado por medio de autenticación de cuentas de
usuarios, donde cada cuenta dispone de privilegios.
Las características más importantes de este servidor son:
Es de libre distribución, por lo que es gratuita su instalación y utilización.
Permite la instalación de distintos motores de bases de datos en función de los
requerimientos de utilización
Permite el acceso simultáneo a las bases de datos a través de puertos TCP
El acceso a las bases de datos del servidor está controlado por medio de
autentificación de cuentas de usuario
Permite la definición de políticas de seguridad y privilegios a cada cuenta de
acceso al servidor
Puede ser utilizado por aplicaciones basadas en servidor como Aplicaciones web
o por clientes dentro de la misma red
Instalación típica de un servidor MySQL
Pág. 45 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
5.2.- INSTALACIÓN:
Para instalar el servidor MySQL es necesario disponer de los archivos de
instalación. Éstos archivos se pueden descargar gratuitamente desde la página
web oficial del servidor http://www.mysql.org, donde es posible encontrar el
software para distintas arquitecturas y sistemas operativos. En el caso general se buscará la
versión completa para sistemas operativos Microsoft Windows en arquitecturas x86. Se recomienda
descargar el ejecutable .exe ó .msi, puesto que incorpora un asistente de instalación.
Una vez descomprimido el archivo se inicia la
instalación al ejecutar el archivo setup.exe.
Inmediatamente aparece un asistente que recopilará los
datos suficientes para realizar la instalación en el
sistema. Los parámetros más importantes son:
5.2.3.- Tipo de instalación
Típica : instalación con valores
predeterminado
Completa : instalación con todas las
opciones
Custom: Instalación personalizada. Permite
seleccionar más valores que no se instalarán
por defecto como en las anteriores
Si se elige ésta última opción el asistente preguntará
Componentes para instalar: Servidor MySQL, programas cliente, documentación
y ayuda y herramientas de desarrollo
Ruta para instalar los archivos del servidor
Pág. 46 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Pág. 47 de 62
Al finalizar el proceso de instalación se
lanza el proceso de configuración del servidor a través de un . El servidor no será funcional hasta
que no se realice la configuración inicial
5.2.4.- Configuración inicial:
La configuración inicial se realiza a través de un asistente que recoge los parámetros de
funcionamiento del servidor para ajustar la instalación del servidor. Los parámetros más
importantes son:
Tipo de configuración:
o Detallada : configuración de todos los
parámetros
o Standard : configuración predeterminada
del servidor
Tipo de Servidor: Utilización principal que se le dará al servidor. Incide directamente
en la utilización de recursos del sistema por parte del servidor.
o Developer: Servidor de desarrollo.
Rendimiento bajo ya que usará pocos
recursos de la memoria.
o Server: SQL con Servidor Web.
Rendimiento Medio con un uso
razonable de la memoria.
o Dedicated: Dedicado Rendimiento
Alto. MySQL utilizará toda la memoria
disponible en el sistema.
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Pág. 48 de 62
Uso de las bases de datos. Determina cómo se va a realizar el acceso a las bases de
datos. Incide en el flujo de datos
o Multifuncional Database: Bases de datos
de propósito general. Se tratará de
optimizar el flujo de datos y la rapidez de
ejecución en las consultas
o Transactional Database Only: Gran
cantidad de información. Se tratará de
optimizar el flujo de datos. Normalmente
se aplican sobre un servidor dedicado
o Non-Transactional Database Only: Se tratará de optimizar la rapidez de
ejecución en las consultas por encima del
flujo de datos.
Directorio de almacenamiento de las Bases de
Datos. Carpeta del disco del servidor donde se
almacenará la información de las bases de datos
creadas en el servidor.
Número de conexiones que se permiten
o OLAP: 20 conexiones
o OLTP: 500 conexiones, Servidor dedicado
o Manual: indicarlo manualmente
Conexión TCP/IP:
MySQL e indicar el puerto a utilizar. El puerto predeterminado es el 3306
Permite habilitar la conexión TCP/IP para el acceso al servidor
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Juego de caracteres: Permite definir el conjunto de caracteres válidos para utilizar a
la hora de almacenar la información. Permite las
siguientes opciones
o Standard: idioma por defecto, inglés e
idiomas europeos
o Best: Soporte multilenguaje. Permite
almacenar datos de cualquier idioma
o Manual: Elegir idioma de forma manual
Modo de inicio del servicio: Permite indicar cómo se debe iniciar el servidor MySQL en
Windows.
o Install as Windows Service: lanzar el
servidor MySQL automáticamente como
servicio de Windows cada vez que se
arranque el sistema.
o Include BIN directory in Windows
PATH: Para lanzar el servidor MySQL
manualmente es posible incluir la ruta
de los ejecutables del servidor en el
path de Windows para no tener que navegar por las carpetas del sistema de
archivos y poder llamarlo desde cualquier carpeta
Método de acceso: Permite configurar la
contraseña del administrador del servidor.
o Modify Security Settings. Permite
especificar una cuenta de acceso “root”
con la contraseña que indiquemos
o Enable root Access: permite el acceso del
administrador de forma remota desde otro
nodo de la red
o Create an anonymous account: Permite habilitar un acceso anónimo sin
contraseña
Pág. 49 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Una vez el Asistente tiene toda la información procede a la configuración del Servidor
Tras todos estos pasos, el servidor está listo para usarse, a falta de un inicio de sesión, que
es básico e indispensable para trabajar contra el servidor. Este inicio de sesión o login está
asociado a unos determinados permisos, que determinan que tareas está autorizado a realizar ese
usuario y qué tareas no puede hacer dentro del servidor. Entre ellas aparecen el acceso,
modificación y consulta de datos, además de realizar tareas administrativas y de control de las
bases de datos.
El servidor MySQL gestiona internamente las cuentas de acceso y los privilegios. Se realiza
a través de la cuenta que se configuró en el momento de la instalación, conocida como “root”, la
cual gestiona la administración de las cuentas dentro del propio servidor.
Dentro del servidor, aparece una base de datos ya creada por defecto llamada también
mysql, cuya finalidad es almacenar los datos de las cuentas y los privilegios
En cada acceso (login) se compara la información dada por el usuario con la tabla user
(de la base de datos mysql) para ver si existe coincidencia con el nombre de usuario,
host y contraseña
Si es así, se autoriza el acceso
La instalación de más instancias del servidor se realiza repitiendo el proceso de instalación
del servidor y especificando los parámetros de configuración descritos para cada una de las
instancias.
Pág. 50 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
6.- ANEXO III: INSTALACIÓN DE UN ADMINISTRADOR PARA MYSQL
Los gestores administrativos de MySQL son aplicaciones que proveen de una interfaz
gráfica más amigable que la línea de comandos para enviar instrucciones SQL y recibir los
resultados de ejecución de dichas instrucciones. Existen gestores de MySQL para la mayoría de los
sistemas operativos. Existe también la posibilidad de elegir un gestor MySQL basado en una
aplicación web, opción muy extendida. Entre los más utilizados están:
PhpMyAdmin: Es un gestor de MySQL basado en una
plataforma web. Utiliza HTML como interfaz de
usuario y PHP como lenguaje de programación que
accede al servidor, envía comandos y recibe las
respuestas del servidor. Necesita de un servidor
web para ser utilizado, normalmente Apache o
Internet Information Services con soporte para el
lenguaje PHP.
MySQL GUI Tools: Es un gestor de MySQL para Windows. Incluye las herramientas más
demandadas a la hora de administrar un servidor de bases de datos, que son
o MySQL Administrator: Administrador de MySQL
o MySQL Query Browser: Analizador y gestor de consultas que se envían al servidor
o MySQL Migration Toolkit: Herramienta que facilita la migración de bases de datos
desde o hacia MySQL
Otros administradores para Windows:
o WinSQL (ODBC) :
http://www.synametrics.com/synametricswebapp
/winsql.jsp
o EMS SQL Manager :
http://www.sqlmanager.net/en/products/mysql/
manager/download
o SQLYOG: http://webylog.com/en/downloads.php
o XAMPP: http://www.apachefriends.org/en/xampp-windows.html#644
Como ejemplo de instalación de cada tipo de gestor se detallará la instalación de MySQL
GUI Tools y PhpMyAdmin
e instalación de cada tipo de gestor se detallará la instalación de MySQL
GUI Tools y PhpMyAdmin
Pág. 51 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Pág. 52 de 62
6.1.- MYSQL GUI TOOLS
El paquete de instalación de MySQL GUI tools está
integrado dentro del paquete que se desacarga para la
instalación del servidor. Si no es así, se pueden descargar de
la página web oficial de MySQL, http://www.mysql.org. Las
MySQL GUI Tools incluyen tres herramientas, que se utilizan
para la gestión del servidor de manera gráfica.
Una vez descomprimido y ejecutado se lanzará un asistente con el objeto de recoger los
datos necesarios para la instalación de la aplicación.
Aceptación del contrato de licencia libre
Tipo de instalación: personalizada o estándar
Componentes a instalar
Ruta de instalación de los archivos
Una vez terminada la instalación los componentes elegidos están listos para funcionar
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
6.2.- PHPMYADMIN
PhpMyAdmin es el gestor de bases de datos para MySQL basado en plataforma web más
utilizado en la actualidad. Debido a la especial arquitectura de la aplicación la instalación de
PhpMyAdmin necesita de una serie de requisitos iniciales:
Servidor Web con soporte para lenguaje PHP: Los más extendidos son Internet
Information Server para Windows y Apache con versiones disponibles para Windows y
Linux.
Librerías de acceso a MySQL :Necesarias para que PHP sea capaz de llamar a las
funciones que acceden al servidor y comunicarse con él.
Es necesario disponer de los archivos de instalación de los requisitos iniciales y de la
propia aplicación. En las siguientes direcciones web es posible encontrarlos:
Internet Information Server: Disponible junto al sistema operativo. Los archivos
necesarios para su instalación se incluyen con el sistema operativo.
Apache: Servidor web con licencia open source, que permite descargarlo desde
su página oficial sin coste alguno: http://www.apache.org
Intérprete de lenguaje PHP: Lenguaje con licencia Open source, por lo que es
posible su descarga gratuita desde su página web oficial: http://www.php.net
phpMyAdmin: Aplicación que también dispone de licencia open source, por lo
que desde su página web oficial http://www.phpmyadmin.net es posible su
descarga sin coste alguno.
6.2.3.- Instalación prerrequisitos:
Los prerrequisitos para poder utilizar la aplicación phpmyadmin son un servidor web con
intérprete de lenguaje php y librerías necesarias para acceder al servidor de bases de datos. Se
detalla la instalación de Internet Information Services y el intérprete PHP para este servidor.
6.2.3.1.- Internet Information Server
Internet Information Server es el servidor web de Microsoft y sólo se puede instalar en el
sistema operativo Windows. Se instala como un complemento del sistema y se ejecuta como un
servicio del sistema operativo
Es necesario dirigirse al “Panel de control” de control del sistema e indicar , “Agregar o
quitar programas”. Una vez en el gestor de software se indicará “Agregar o quitar componentes de
Windows”
Pág. 53 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Indicar la instalación de “Servicios de internet Information System” y finalizar el
asistente. El servidor web ya está funcionando en el sistema con los parámetros del sitio web
predeterminado.
6.2.3.2.- Instalación Intérprete Php:
Un intérprete de un lenguaje de programación es una librería que permite que el sistema
sea capaz de entender las instrucciones que un programador lanza en ese lenguaje. PhpMyAdmin
utiliza php como lenguaje de programación, por lo que es necesario dotar al servidor web de un
intérprete que reconozca y sepa qué hacer cuando se llama a cada una de las instrucciones que
forman la aplicación.
PHP se puede instalar en la mayoría de los servidores
web puesto que es uno de los lenguajes más extendidos en la
programación de aplicaciones basadas en servidores web.
Una vez descargado el archivo y ejecutado, se presentará un
asistente que recogerá los datos necesarios para poder
realizar la correcta instalación del intérprete..
En este caso, el asistente es muy sencillo y lo único que solicita es la aceptaci´pn del
contrato, la ruta de instalación y el servidor que se está utilizando.
Pág. 54 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Pág. 55 de 62
Además el instalador preguntará los componentes adicionales a instalar, que son: Además el instalador preguntará los componentes adicionales a instalar, que son:
Extensiones: Extensiones:
o MySQL o MySQL
o Multibyte String o Multibyte String
o Mcrypt o Mcrypt
Extras: Extras:
o Instalación del manual del intérprete. o Instalación del manual del intérprete.
o Instalador PEAR. Instalador para modulos PEAR o Instalador PEAR. Instalador para modulos PEAR
6.2.3.3.- Instalación PhpMyAdmin: 6.2.3.3.- Instalación PhpMyAdmin:
PhpMyAdmin es una aplicación web desarrollada en lenguaje PHP para
la administración de servidores MySQL, con la cual podemos gestionar
cualquier servidor MySQL. Permite tanto la administración de las bases de
datos de un servidor como la creación de su propia estructura de tablas y relaciones, así como
crear una barrera de seguridad para evitar accesos al servidor, ya que tras la instalación, sólo se
accede al servidor MySQL a través del propio PhpMyAdmin.
A partir de esta instalación, quien lo use:
No precisa de grandes recursos de hardware: Sólo es necesario un S.O. con un
navegador y acceso al servidor Web.
No necesita realizar una instalación previa
No requiere un control de las versiones: Todos aquellos que se conecten al servidor
Web usan la misma aplicación y versión, puesto que es el servidor web quien accede al
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
servidor MySQL. Permite políticas de seguridad más estrictas, ya que es posible limitar
los accesos al servidor únicamente a los realizados desde el servidor web.
Alta disponibilidad mientras el servidor permanezca encendido, incluso para
permitir accesos desde fuera de la red local.
Para instalar la aplicación se deberá disponer de un servidor web y un servidor MySQL. La
configuración típica es la descrita en el anexo anterior, donde dentro de la red existe un servidor
web que accede a un servidor MySQL. El servidor Web y MySQL no requiere estar instalado en la
misma maquina
El servidor Web deberá disponer de un directorio virtual donde se alojarán las páginas php
del gestor. MySQL deberá tener creado una cuenta de acceso administrativo que será la que se
utilice para permitir al gestor acceder a él.
Instalación de phpMyAdmin
Los archivos de instalación se deberán descargar desde
la página web oficial de la aplicación. Los formatos
disponibles son
Archivos comprimidos en formato zip : Versión
para instalar en sistemas Microsoft Windows
Archivos comprimidos en formato tar.bz2,
tar.gz: Versión para instalar en sistemas Linux,
siendo válida cualquier distribución.
Realizar la instalación consiste únicamente en
descomprimir el paquete descargado en el directorio donde
está alojado el sitio web predeterminado del servidor Web,
conocido como el raíz del sitio web, o en el directorio
virtual definido a tal efecto.
Una vez descomprimido ya se pude utilizar la
aplicación, a falta de realizar una mínima configuración
inicial. Para ello basta con llamar a la página de inicio del
sitio web index.php desde un navegador de internet:
http://nombreservidor/phpmyadmin/index.php
Como aún no se ha realizado ninguna configuración el
sistema devolverá un error de acceso. El servidor no permite
el acceso con la cuenta por defecto configurada en
phpMyAdmin y remite un error a la aplicación.
Pág. 56 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Configuración mínima de phpMyAdmin
Para configurar phpMyadmin será necesario definir al menos los siguientes parámetros
Método de autentificación
Login
Ubicación del servidor MySQL
Todos los parámetros de configuración de la aplicación se encuentran incluidos en el
fichero config.inc.php. Será necesario, por tanto, editar dicho archivo y modificar los parámetros
necesarios. La aplicación dispone de archivos de configuración de ejemplo para las configuraciones
más usuales, por lo que lo más cómodo es utilizar uno de éstos y renombrarlo como
config.inc.php. Estos ficheros se encuentran en la raíz de la aplicación y sus nombres son:
Config.sample.inc.php
Libraries/config.default.php
Los parámetros a modificar en el archivo de configuración serán:
$cfg[’auth_type’]=‘cookie’. Método de autentificación mediante cookies
o Se creará una cookie en el navegador del usuario de la aplicación con la
información de autenticación. Es el tipo de autenticación que se utilizará para el
acceso al servidor puesto que es más seguro. El gestor no se basa en
autentificación web, sino que el usuario se autentifica ante el gestor.
$cfg['Servers'][$i]['host']=‘localhost’. Ubicación del servidor MySQL
o El valor del parámetro puede ser el nombre del servidor MySQL o su dirección IP.
Si el servidor está ubicado en el mismo host que el servidor web es posible
utilizar el nombre genérico ‘localhost’
$cfg['blowfish_secret']=‘loq#ese@’.
Codificación de la cookie
o Se debe codificar la cookie que contiene
el login por razones de seguridad. Para
ello se utiliza un algoritmo de
encriptación basado en una palabra
secreta, que es la que se incluye como
valor del parámetro.
Pág. 57 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
PhpMyAdmin es usado tanto para administrar el Servidor MySQL como para gestionar las
bases de datos que contiene.
Dependiendo de la validación se muestra:
Contenidos para un usuario administrador
Contenidos para un usuario de base de datos
Una vez introducido correctamente nuestro nombre de usuario y contraseña, se accede a
la interfaz de la aplicación. Se procederá a la administración del servidor a través de un conjunto
de páginas web que forman la aplicación de gestión.
Pág. 58 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
7.- RESUMEN
RESUMEN DE LA UNIDAD Un servidor SQL es un software para la gestión de bases de datos, entendiendo
como tal tanto la estructura lógica y física de la misma como los datos que
posteriormente se almacenan.
Los servidores SQL se integran dentro de la infraestructura de red como un
servicio más de la misma. Utilizan normalmente protocolos TCP/IP para sus
comunicaciones y siguen la arquitectura cliente – servidor para establecer las
conexiones.
El conjunto de métodos-funciones o librerías que el sistema operativo necesita
para integrarse con SQL y viceversa para establecer una comunicación con la
aplicación que así lo precise forman las llamadas bibliotecas de red. Permiten el
envío y recepción de datos y dotan de objetos para manejar la información
enviada por parte de las aplicaciones que los solicitan.
Entre los componentes de un servidor SQL destacan:
o Motor relacional: Es el encargado de interpretar las instrucciones SQL
enviadas y ejecutarlas de forma correcta sobre las bases de datos
almacenadas
o Motor de almacenamiento: Se encarga de las operaciones de
almacenamiento en el medio elegido (normalmente HDD) de los distintos
componentes de una base de datos. Esto incluye desde las estructuras
básicas, hasta los datos que contienen. Se encarga también de la
extracción de los datos solicitados
Una instancia de un servidor SQL está formada por cada una de las veces que el
servidor está ejecutándose en la memoria del ordenador junto a su
configuración particular. Permite que un mismo servidor se comporte como
varios, puesto que cada una de sus instancias está definida de forma diferente.
Las técnicas fundamentales para administrar la seguridad en un servidor SQL
son:
o Inicios de sesión: Definición de usuarios para acceder al servicio
o Privilegios: Controlan qué instrucciones SQL puede ejecutar cada uno de
los inicios de sesión definidos
Pág. 59 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
o Procedimientos almacenados: Son conjuntos de instrucciones SQL
agrupadas bajo un nombre. Se incluyen en la definición de privilegios para
cada inicio de sesión
Una base de datos albergada en un servidor puede tener asignados en el sistema
de almacenamiento tres tipos de archivo
o Archivos principales: Ubicación de los datos guardados
o Archivos secundarios: contienen todos los datos que no caben en el archivo
de datos principal.
o Registro de transacciones: Contienen la información de registro que se
utiliza para recuperar la base de datos
Un índice es una estructura de datos que permite acceder a diferentes filas de
una misma tabla a través de un campo (o campos clave) y sirve para optimizar la
localización y extracción de datos de una base de datos.
El conjunto de normas que deben cumplir los dominios de los campos presentes
en las tablas se denominan normas de integridad y sirven para garantizar que los
datos incluidos en la base de datos son correctos desde el punto de vista
funcional y sintáctico
La importación/exportación masiva de datos permite el movimiento de datos
hacia/desde el servidor hacia/desde archivos externos. Las dos técnicas más
importantes son:
o El lenguaje XML para la definición e importación de los datos
o El lenguaje SQL que permite realizar el movimiento mediante una
instrucción
Pág. 60 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
8.- ENLACES DE INTERÉS
A continuación le mostramos algunas páginas Web que pueden resultarle útiles para la
comprensión de esta Unidad:
Arquitectura Servidor SQL Oracle Información sobre el servidor SQL de Oracle.
Arquitectura Servidor MySQL Manual de referencia de la versión 5.0 de MySQL.
Administrar Servidores Microsoft SQL Server 2000 Manual de referencia para la administración de servidores SQL 2000 de Microsoft. Pagina no
oficial
Artículos técnicos SQL Server Artículos técnicos referidos al servidor de bases de datos implantado por Microsoft, útiles para
conocer en profundidad el funcionamiento interno de distintos elementos del servidor
Información sobre el Motor de Base de Datos de Microsoft SQL Server Información detallada de las características y de los elementos que componen el motor de bases
de datos de Microsoft SQL Server en su versión 2005.
Guía breve de tecnologías XML Información adicional del lenguaje usado por algunos servidores SQL de última generación para la
comunicación de datos con aplicaciones clientes
Proveedores de acceso a bases de datos Expone de forma teórica los distintos proveedores de acceso a datos, gracias a los cuales se
accede a servidores de bases de datos
Estructuras de datos Esta página ayuda a adquirir cierta destreza en el manejo de estructuras de datos. Para conseguir
este objetivo, se presenta un tutorial de estructuras de datos, a partir del cual podrá extraer las
primeras conclusiones.
Pág. 61 de 62
Programador de base de datos relacionales– Unidad 3
Administración básica de bases de datos en el SGBD
Pág. 62 de 62
Tutorial SQL Aprende a utilizar el estándar utilizado para la consulta de bases de datos. Seleccionar, crear,
modificar y borrar registros. Optimizar prestaciones con indices, procedimientos almacenados.
Importación-Exportación de datos Información sobre el proceso de importación-exportación de datos de bases de datos en
servidores SQL de Microsoft.