Servidores de Base de Datos

Servidores de Base de Datos
Información sobre la plantilla
Servidores BD.JPG
Concepto:Ordenador que brinda un servicio de BD a múltiples usuarios conectados a la misma vez.

Servidores de Base de Datos. Son los que se utilizan para la ejecución de gestores de BD y que varios usuarios hagan operaciones sobre ellas al mismo tiempo, situado en un lugares diferentes; se puede acceder a las BD por terminales o equipos con un programa llamado cliente que permita el acceso a ellas.

Historia

Los servidores de bases de datos surgen con motivo de la necesidad de las empresas de manejar grandes y complejos volúmenes de datos, al tiempo que requieren compartir la información con un conjunto de clientes (que pueden ser tanto aplicaciones como usuarios) de una manera segura. Ante este enfoque, un sistema gestor de bases de datos (SGBD, a partir de ahora) deberá ofrecer soluciones de forma fiable, rentable y de alto rendimiento.

A estas tres características, le se debe añadir una más: debe proporcionar servicios de forma global y, en la medida de lo posible, independientemente de la plataforma.

Vigencia

Internet se ha convertido en en la mayor plataforma de comunicaciones jamás vista. Esto hace que las empresas tiendan a presentar su información a través de la Web en forma de contenidos, que después los clientes consultarán para establecer relaciones con dichas empresas.

Una de las funciones que se empieza a exigir a los SGBD, puesto que sobre ellos recae el peso del almacén y proceso de la información, es la de proporcionar herramientas de apoyo a toma de decisiones ("datawarehouse") al tiempo que proporciona una plataforma de transacciones "on-line" (OLTP) que hacen que la información esté siempre actualizada y consistente.

Aunque parece clara la función de un SGBD, en la actualidad cada vez más filosofías y tecnologías tienden a confluir en un mismo punto. Ya se está hablando acerca de las posibilidades de los nuevos SGBD de poder almacenar contenidos multimedia, objetos, documentos complejos... La explosión de nuevos servicios ha hecho que cada vez más aplicaciones dependan de estos servidores de datos, delegando la responsabilidad de la gestión y almacenamiento de la información a aquellos que mejor están preparados para su tratamiento.

Para poder lograr estos objetivos, es un punto muy importante el que los SGBD proporcionen herramientas de administración completas (que simplifiquen la tarea de la configuración, seguridad, creación y gestión de bases de datos al tiempo que proporcionan mecanismos de integración con otros sistemas y políticas de copias de seguridad) y herramientas que permitan su programación (tanto a nivel de diseño como a nivel de reglas y procedimientos que encapsulen la arquitectura de la base de datos, de tal manera que, a través de conectores a datos, las aplicaciones sólo tengan que pedir la información que necesitan sin preocuparse de cómo se encuentra almacenada).

Por último, puesto que los datos deben estar por encima de la plataforma, los SGBD deben proporcionar mecanismos de comunicación con otras plataformas que actúen también como clientes o servidores de datos. Lo que nos lleva al último punto que consideraremos: la posibilidad de la replicación de la información, posibilidad que permitirá que la información pueda estar almacenada en múltiples servidores de datos y accesible desde cualquier punto como si se tratase de un único volumen de información.

Servidores de Bases de Datos MySQL

MySQL es el servidor de bases de datos relacionales más popular, desarrollado y proporcionado por MySQL AB. El servidor de bases de datos MySQL es muy rápido, seguro, y fácil de usar. Si eso es lo que se está buscando, se le debe dar una oportunidad a MySQL.

El servidor MySQL fue desarrollado originalmente para manejar grandes bases de datos mucho más rápido que las soluciones existentes y ha estado siendo usado exitosamente en ambientes de producción sumamente exigentes por varios años. Aunque se encuentra en desarrollo constante, el servidor MySQL ofrece hoy un conjunto rico y útil de funciones. Su conectividad, velocidad, y seguridad hacen de MySQL un servidor bastante apropiado para acceder a bases de datos en Internet.

El software de bases de datos MySQL consiste de un sistema cliente/servidor que se compone de un servidor SQL multihilo, varios programas clientes y bibliotecas, herramientas administrativas, y una gran variedad de interfaces de programación (APIs). Se puede obtener también como una biblioteca multihilo que se puede enlazar dentro de otras aplicaciones para obtener un producto más pequeño, más rápido, y más fácil de manejar.

Instalación

Para instalar MySQL, se debe instalar los siguientes paquetes: mysql-server y mysql-client. Existe un entorno gráfico del programa llamado mysql administrator, dependiente de los anteriores paquetes. Y opcionalmente el paquete mysql-query-browser, que servirá para realizar consultas.

Configuración

Se te pedirá crear la contraseña del administrador cuando se instale el programa. En versiones antiguas no se crea con la instalación. Debemos crearla manualmente, nada más instalar el servidor. Para hacerlo teclea en un Terminal:

$ sudo /usr/bin/mysqladmin -u root password clavenueva

Puedes cambiar el archivo /etc/mysql/my.cnf para configurar las opciones básicas -- archivo de registro, número de puerto, etc. Mira al archivo /etc/mysql/my.cnf para más detalles.

Una vez asignada una contraseña al administrador, puedes conectar con el servidor mySQL de la manera siguiente:

$ mysql -h localhost -u root -p

Donde "localhost" és la dirección de tu host y "root" el nombre de usuario. A continuación introduce el password de la base de datos. Te aparece la siguiente pantala:

Welcome to the MySQL monitor. Commands end with; or \g.

Your MySQL connection id is 20 to server version: 5.0.24a-Debian_9ubuntu2-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Para desconectar,

mysql> QUIT

Bye

Configuración desde un host remoto

Por defecto, MySQL no permite que cualquier usuario puede acceder a las bases de datos usando un conexión TCP. Para que lo permita debes crear un usuario con los permisos correspondientes.

También tendrás que editar el fichero /etc/mysql/my.cnf y modificar la línea: bind-address = 127.0.0.1

Cambiándola por la direccion IP del servidor, o en caso de que se quiera escuchar en todas las IPs: bind-address = 0.0.0.0 o la IP que tengas en tu seridor si tienes IP fija

Después reinicia el servicio.

shell>cd etc/init.d

shell>./mysql restart

Para que todos los demás ordenadores tengan acceso al servidor. Para más seguridad puedes poner solamente una lista de las IPs de los ordenadores que quieres que tengan acceso. Si aún no te puedes conectar desde un ordenador remoto tendrás que editar el fichero /etc/hosts.allow y añadir la línea: mysqld: all

Gestión de usuarios

Crear un usuario

Para la creación de usuarios tendremos que conectarnos al servidor MySQL (ver más arriba) con un usuario que tenga el permiso global CREATE USER o el permiso INSERT para la base de datos mysql.

La sintaxis es la siguiente:

CREATE USER usuario IDENTIFIED BY 'password';

Eliminar un usuario

El usuario que uses en la conexión debe tener el permiso global CREATE USER o el permiso DELETE para la base de datos mysql.

La sintaxis es la siguiente:

DROP USER usuario;

Dar permisos a un usuario

Los permisos pueden darse en varios niveles:

  • Nivel global.
  • Nivel de base de datos.
  • Nivel de tabla.

La sintaxis es:

GRANT tipo_privilegio ON {nombre_tabla | * | *.* | nombre_bd.*} TO usuario;

Así para dar el permiso SELECT al usuario pepe sería:

GRANT SELECT ON *.* TO pepe;

Quitar permisos a un usuario

La sintaxis es:

REVOKE tipo_privilegio ON {nombre_tabla | * | *.* | nombre_bd.*} FROM usuario;

Gestión de las bases de datos

Crear una Base de datos

Para crear una base de datos nueva puedes hacerlo de, al menos, dos formas. Abre un Terminal y ejecuta lo siguiente:

$ mysql -h servidor -u usuario -p

Enter password:

mysql> CREATE DATABASE nombre_de_la_base_de_datos;

quit

También puedes usar la orden mysqladmin:

$ mysqladmin -h servidor -u usuario -p create nombre_de_la_base_de_datos

Eliminar una Base de datos

Para eliminar una base de datos que ya no es necesaria en el sistema también tenemos, al menos, dos métodos. En un ventana de terminal ejecuta:

$ mysql -h servidor -u usuario -p

Enter password:

mysql> DROP DATABASE nombre_de_la_base_de_datos;

quit

También puedes obtener el mismo resultado con el comando mysqladmin:

$ mysqladmin -h servidor -u usuario -p drop nombre_de_la_base_de_datos

Servidor de Base de Datos PostgreSQL

PostgreSQL es un servidor de base de datos relacional orientada a objeto publicado bajo licencia libre BSD, una buena alternativa a MySQL.Instalación ilimitada. Con PostgreSQL, nadie puede demandarlo por violar acuerdos de licencia, puesto que no hay costo asociado a la licencia del software.

Modelos de negocios más rentables con instalaciones a gran escala. No existe la posibilidad de ser auditado para verificar cumplimiento de licencia en ningún momento.Flexibilidad para hacer investigación y desarrollo sin necesidad de incurrir en costos adicionales de licenciamiento.

Existen varias herramientas gráficas de alta calidad para administrar las bases de datos y para hacer diseño de bases de datos.Muchas organizaciones, incluyendo grandes corporaciones, instituciones gubernamentales y pequeños negocios en línea usan PostgreSQL para manejar sus datos más valiosos y aplicaciones de misión crítica.

Servidores de Bases de Datos relacionales

Antes de comenzar a comentar las características a analizar de los SGBD, el primer paso es el de definir qué es un servidor de bases de datos relacionales y sus cometidos principales.

Un servidor de bases de datos relacionales es un sistema bajo arquitectura cliente/servidor que proporciona servicios de gestión, administración y protección de la información (datos) a través de conexiones de red, gobernadas por unos protocolos definidos y a los que acceden los usuarios, de modo concurrente, a través de aplicaciones clientes (bien sean herramientas del propio sistema como aplicaciones de terceros).

Dichos servidores solucionan los problemas de las empresas al manejar grandes volúmenes de información de una manera estable, fiable, coherente y segura en un entorno heterogéneo de trabajo y de necesidades de información.

La información se almacenará de modo lógico de una manera relacional, como ya se ha visto, en la que un conjunto de almacenamientos que llamaremos tablas (y que se componen de un conjunto de campos que describen su contenido, y a los cuales denominaremos columnas) se relacionan entre sí a través de un conjunto definido de claves.

Una de las responsabilidades del sistema y del diseño de la base de datos, será el que sea posible mostrar aquella información requerida a través de conjuntos de datos planos (que llamaremos cursores), independizando las relaciones establecidas y la arquitectura de la base de datos de la necesidad de información del usuario.

Para proteger la información el sistema contará con mecanismos de control de transacciones basados en reglas que denominaremos disparadores, reglas de definición del tipo de entrada de datos y reglas de validación de las entradas de datos. Mediante complejos sistemas de indexación, estos sistemas serán capaces de ordenar y acelerar las consultas a la información requerida. Cuanto mejor se indexen los datos, más rápidas se realizarán las consultas.

Por último, y como un factor muy importante de cara al diseño de bases de datos, los sistemas deben proporcionar la posibilidad de automatizar operaciones de acceso, filtrado y control de los datos, a través de los procedimientos almacenados.

Todo ello se podrá realizar a través del lenguaje SQL (Structured Query Language, lenguaje estructurado de consulta) que se ha convertido en el estándar de interfaz de estos sistemas para su diseño, desarrollo y consultas de informaci6n. Desarrollado por IBM, se ha convertido en un estándar para el manejo de estos sistemas y queda recogido en la norma ANSI SQL'92, en la cual quedan registradas aquellas sentencias SQL que deben estar presentes en todo sistema gestor de bases de datos.

En este apartado, que es donde los SGBD demuestran sus propios dones, es donde ya nos separamos del estándar, pues cada fabricante añadirá sus propias extensiones al lenguaje para aprovechar, como es lógico, las ventajas de sus propios motores.

De lo indicado en los párrafos anteriores podremos obtener algunos de los parámetros que emplearemos en la comparativa: capacidad del servidor de conexión con el exterior; capacidad de atender peticiones concurrentes de clientes; seguridad del sistema; herramientas de administraci6n disponibles; herramientas de administración y automatización de tareas que reduzcan el TCO ("Total Cost Owner") y, por último, la cantidad de plataformas en la que se puede integrar el sistema.

La seguridad

En todo sistema abierto, debe proporcionarse un potente mecanismo de seguridad que garantice que ningún intruso pueda acceder o corromper la integridad del sistema. Si este concepto ya es crítico en los sistemas operativos actuales, hay que imaginarse cuánto más es de importante este concepto cuando ya no hablamos de recursos del sistema (como puedan ser archivos o correos, más o menos importantes) sino de información crítica para la empresa, en la que se almacenan datos de contabilidad, gestión, personal, o estratégicos de la cual depende para su existencia.

En servidores de bases de datos hablaremos de la seguridad a 4 niveles básicos: seguridad de acceso al sistema, seguridad a nivel de objetos de datos, seguridad a nivel de datos y seguridad en cuanto a protección de los almacenamientos físicos de los datos.

La seguridad de acceso se implementará de dos maneras posibles: a nivel de sistema operativo, en cuyo caso el SGBD se apoya en la seguridad de entrada al sistema operativo para comprobar la validez del acceso a los datos almacenados; o bien lo que llamaremos modo mixto, en el cual la seguridad de entrada a la información la llevará a cabo el propio servidor de datos a partir de la definición de cuentas de usuario al servidor (su denominación de mixta proviene de la capacidad de los sistemas de incluir como cuentas de acceso o login aquellas propias del sistema operativo, lo que facilita la transición de las cuentas de seguridad).

La segunda será de gran ayuda cuando los clientes que acceden al sistema provienen de sistemas operativos con poca (o ninguna) seguridad o de aplicaciones instaladas que necesiten acceder a los volúmenes de información del sistema. En ambos casos, en los sistemas se contará con roles o papeles con los que contará el usuario al entrar al sistema para la realización de determinadas operaciones de cara al sistema.

La seguridad a nivel de objetos entra ya en el detalle del acceso a nivel de creación y administración de objetos de datos: tablas, vistas, índices, relaciones, reglas...etc. Es decir, las responsabilidades y acciones que puede hacer el usuario en el esquema de la base de datos (el esqueleto a partir del cual el sistema definirá cómo se debe almacenar y relacionar la información). Se podrán especificar de nuevo roles a los usuarios, indicando quién podrá crear, modificar o eliminar cualquier objeto de datos (con lo que se permite establecer una política de delegación de responsabilidades).

La seguridad a nivel de datos entra ya en la capa de la información en si. En la que indicaremos quién puede acceder a qué información para su consulta, actualización, inserción o borrado. Las características de los diversos motores determinarán hasta qué grado de seguridad se llega en este apartado (desde la protección de las columnas de una tabla hasta la tabla en si, creación de vistas...etc.).

Por último, la seguridad a nivel de protección de los almacenamientos físicos de la información. Tendremos dos aproximaciones: la seguridad a nivel de sistema operativo de los archivos de datos del sistema, y las políticas de copia de seguridad y restauración de los datos (tanto con herramientas del sistema operativo como las proporcionadas por el propio servidor de datos) junto con sus posibles aproximaciones (total, incremental y diferencial), además de los soportes hardware compatibles de almacenamiento masivo empleados como destino de las copias.

El soporte de red

Puesto que se está implementando una solución cliente/servidor, es un elemento fundamental para la conexión entre los distintos clientes y el servidor un canal apropiado para la comunicación, que posibilite el intercambio de información. Los servidores de datos deben proporcionar mecanismos de comunicación óptimos, pues de cómo se envíe la información dependerán parámetros tan importantes como la velocidad de acceso a los datos.

Todos los sistemas gestores analizados cuentan con múltiples configuraciones de protocolos, adaptándose a los protocolos existentes y estandarizados de la actualidad: TCP/IP, IPX, Banyan..., aunque el que tiene un auge imparable en este tipo de servicios es el omnipresente TCP/IP, lo que garantiza que la conexión de los servidores estará al alcance de cualquier usuario desde cualquier parte del mundo.

Es importante no sólo el canal de comunicaciones que está disponible para los servidores de datos sino también cómo es transmitida la información. Es lógico pensar que tienen que existir posibilidades de encriptación de la información para prevenir accesos no autorizados así como mecanismos de partición de los datos, para evitar que peticiones masivas de información sobrecarguen el ancho de banda de la red.

Además, será una cuestión de optimización el saber que no toda la información es necesaria al mismo tiempo, y que el servidor debe ser capaz de ir proveyendo la información requerida en el momento justo en el que es necesaria (lo que ahorra ancho de banda y recursos de la máquina) . La configuración de las librerías de red dependerá mucho del tipo de sistema operativo que se encuentre en explotación. Y será un componente a configurar tanto en la máquina servidor como en los puestos cliente. Este apartado también dependerá del tipo de plataforma empleada.

Recalcar que el proceso de configuración de los clientes deberá ser un proceso sencillo, que en la mayoría de los casos sólo implica conocer el nombre del servidor de datos y las cuentas oportunas, siendo el propio sistema operativo el encargado de encontrar los servidores referenciados (bien a través de un nombre DNS, una dirección IP o un nombre de servicio con un puerto de escucha).

Internet y bases de datos distribuidas

Puesto que todo tiende a unificarse con Internet, los servidores de datos también deben proporcionar servicios de datos a la Red. Los servicios disponibles incorporan generación y alimentación de páginas Web a partir de consultas prediseñadas en la base de datos.

Dichas consultas mantendrán alimentadas las páginas Web, las cuales estarán siempre actualizadas con la última información. Cuanto mayor sea el grado de integración con la Web, mejor podrá ser la presentación de información crítica de la empresa en las páginas.

Los servidores de datos deben proporcionar mecanismos de actualización automática de las páginas, de manera que se asegure que cualquier cambio efectuado en la base de datos se haga efectivo en la correspondiente página Web. De esta manera, la integridad de la informaci6n también estará implementada a nivel de servicios de la Red.

Lógicamente, también hay que pensar que esto no es viable de cara a actualizaciones masivas de datos, lo que implica una sobrecarga del servidor (pues no sólo actualiza datos sino también páginas Web). Por ello, generalmente deberemos contar con opciones que permitan realizar actualizaciones manuales o programadas en el tiempo (lo que reducirá significativamente el coste de actualización de las páginas).

No sólo es importante el nivel de integración con el Web, sino que también es importante el grado de interacción del usuario con la misma.Generalmente las páginas Web proporcionan mecanismos de selección de información personalizada, lo cual permite que los usuarios accedan sólo a aquella información que precisan. Para ello, es importante que exista un soporte de interacción que se obtiene a través de código Java. Por lo tanto, cuanto mejor sea el soporte Java, más se asegura la interacción y se amplía el rango de servicios que puede proporcionar el servidor de datos.

Una de las mejoras realizadas como consecuencia de la integración con la Red Global, es la de la posibilidad de permitir la compartición y distribución de la información a lo largo de los servidores situados en cualquier parte del mundo.

Esto permitirá a las empresas disponer de su información sea cuál sea el lugar del mundo en el que se encuentre el departamento que la procesa. E, incluso, permitirá a las empresas poder integrar sus bases de datos con sus proveedores o clientes, de manera que podrán colaborar a nivel de servicios y recursos de información, ganando en rapidez y fiabilidad.

Para ello, los servidores de datos deberán proporcionar los servicios de intercambio de información, reglas de sincronización y todo un conjunto de parámetros necesarios para que esta revolución en cuanto a acceso global a la información sea posible.

Herramientas de administración

Avanzando un grado más en las capas de servicios que debe proporcionar un servidor de datos, nos encontramos con las herramientas que proporciona tanto al usuario administrador como al cliente consumidor de los datos.

De cara al administrador, las herramientas deben proporcionarle un entorno amigable y sencillo de manejar, que le permita orientarse a su trabajo y no preocuparse con detalles de más bajo nivel, al tiempo que le permite realizar sus tareas de la manera más rápida y simplificada posible. Indicar que cuanto mayor sea el nivel de automatización de las tareas, menor será el tiempo que tenga que dedicar a tareas generalmente repetitivas. Y cuanto mayor sea el número de opciones configurables, mejor servicio se podrá obtener de dichas tareas.

La comodidad de acceso a las herramientas es otro parámetro a tener en cuenta. Cuanta más información tengamos a nuestro alcance, menor será el tiempo empleado en acceder a la información necesaria para la administración del servidor.

No será extraño acceder a las opciones de configuración y gestión a través de consolas que permitan la integración de "snap-ins" o que, al menos, sirvan de pasarela entre las múltiples utilidades disponibles.

Dichas herramientas, además, deben permitir la administración remota del servidor o servidores que estén a cargo del administrador. De nuevo, insistir en el grado de programación y automatización de tareas, ya que este mecanismo proveerá de la creación de planes automáticos de realización de tareas repetitivas de administración, lo que garantiza un alto grado de seguridad, optimización, ahorro de tiempo y esfuerzo.

Como un componente fundamental de un servidor de datos, es el de Optimización de la Base de datos y de las consultas. Cuanto más efectiva sea la optimización del sistema, mayor velocidad adquirirán las consultas y mejor rendimiento se obtendrá del servidor.

Muchas veces la velocidad no se encuentra en una máquina sobrada de recursos, sino en aprovechar al máximo los recursos de los que disponemos. Por lo tanto, cuanto mejor sea el soporte de optimización para el administrador, mejor se podrá configurar el sistema, lo que asegurará siempre un rendimiento máximo adaptado a las necesidades de la empresa.

Fuentes