Esta página se ve mucho mejor con un navegador que soporte web los estándares, aunque es accesible desde cualquier navegador.
687474703A2F2F7777772E6573746164697374696361736772617469732E636F6D2F65737461646973746963617320677261746973![]() |
Estadisticas Gratis |
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 debemos añadir una más: debe proporcionar servicios de forma global y, en la medida de lo posible, independientemente de la plataforma. Internet se ha convertido en nuestros días 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. A lo largo del artículo iremos comentando las prestaciones de ambas implementaciones y cómo influye el SGBD en el proceso de las mismas.
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 dato 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 áquellas 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 conexi6n de nuestros 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.
Las consultas y su proceso
El servicio más importante que proporciona un servidor de datos es el del acceso a la información que almacena. El cómo recuperar y actualizar dicha información es un proceso crítico del que depende en mayor grado el éxito de este tipo de sistemas. El lenguaje que se emplea en la actualidad es el SQL bajo el estándar ANSI SQL'92. Esto, como comentamos anteriormente, garantiza que todo conjunto de sentencias empleado para el acceso a una base de datos puede ser empleado para cualquier tipo de servidor de bases de datos que siga este estándar. Lo que independiza la necesidad de información del cómo se encuentre almacenada.
Las herramientas actuales permiten encapsular el código SQL, de tal manera que el usuario no tiene que conocer dicho lenguaje para acceder a la información. Incluso, y gracias a los procedimientos almacenados, es posible encapsular el código SQL dentro de la propia base de datos, lo que da lugar a la petición de información únicamente a través de un conjunto documentado de funciones sencillas. Esto de cara a aplicaciones y usuarios simplifica el acceso a la base de datos, y protege la arquitectura de la misma.
La optimización automática de consultas SQL es una nueva opción que proporcionan los nuevos servidores de datos. Esto permite que sea el propio servidor el que reconozca la mejor manera de recuperar la información (optimización y asignación automática de índices, o aprendizaje/ entrenamiento de consultas) que es lo que se conoce como plan de ejecución de la consulta. Lo que en el caso de introducir una sentencia SQL no optimizada por motivos de rapidez o desconocimiento, permite acelerar al máximo el acceso a los datos.
Esto, junto con las capacidades multiproceso de los servidores, permite que la ejecución de consultas complejas se convierta en una operación rápida y de alto rendimiento.
Este apartado es muy importante de cara a la implementación de aplicaciones OLTP (en las cuales es crítica la velocidad de actualización de la información en línea) y en entornos datawarehouse (en el que las consultas de recuperación de información para la toma de decisiones dependen de consultas muy complejas en proceso que devuelven valores calculados muy concretos).
Por último, indicar en este apartado que será una opción de valor añadido el incorporar servicios de datawarehouse, que permitan la implementación de este tipo de arquitecturas en la empresa.
En el caso de aplicaciones OLTP.es muy importante el asunto de los bloqueos de objetos de datos, pues el sistema gestor debe mantener la integridad de la información que está siendo actualizada por múltiples clientes al mismo tiempo. De no ser así, se podrían obtener situaciones de registros fantasma, información de cálculo erróneo, e información desactualizada. Habrá que estudiar cuál es el sistema que ofrece un grado muy fino de bloqueo, pues cuanto menor sea el nivel de bloqueo (se bloquea sólo lo justo) más usuarios podrán acceder a los recursos al mismo tiempo. Un bloqueo a nivel de columna permite a los usuarios acceder y modificar aquellas columnas que no están siendo actualizadas por otros usuarios, dentro de la misma fila. Un bloqueo a nivel de tabla paralizará temporalmente las operaciones de aquellos usuarios que no tienen el acceso a dicho recurso hasta que el operador termine su operación.
En este apartado, uno de los factores críticos es el del control de las transacciones. Las transacciones son un conjunto de operaciones que se realizan como una unidad de ejecución y que deben terminar con éxito (en cuyo caso se actualiza la información implicada en todos los pasos, se denomina "commit") o en fracaso (en cuyo caso el servidor debe ser capaz de deshacer toda la operación para dejar la base de datos en el último estado consistente, conocido como "rollback"). Cuanto mayor sea el grado de recuperación y control de las transacciones, mayor integridad se obtendrá en la base de datos. Y este control se propaga en cuanto a transacciones distribuidas se refiere, pues el que una transacción caiga en un determinado servidor, debe implicar que todos los servidores implicados deben echar atrás la operación errónea, lo cuál puede resultar una operación compleja y de envergadura. Además, en caso de caída los servidores deben garantizar que todas las transacciones consideradas como válidas son restauradas para garantizar la integridad de la información en el momento del arranque de la máquina y antes de permitir el proceso por parte de los usuarios (y es por ello por lo que los servidores cuentan con el registro de LOG de transacciones).
Plataformas y programación
En este último punto comentaremos la importancia que tienen dos de los parámetros relacionados con las plataformas disponibles para el servidor y el grado de ampliación del mismo tanto de cara a su implementación interna como en su capacidad de proporcionar API de programación a los desarrolladores.
La escalabilidad y portabilidad del servidor será un factor a tener en cuenta de cara a su adquisición o migración desde sistemas ya existentes. Y ya no sólo de cara al motor del servidor sino de cara a las plataformas de las herramientas de los clientes. Cuanto mayor sea el rango de plataformas soportadas, tanto más universal será el acceso al motor, lo que no limita a la empresa en cuanto a parque tecnológico se refiere. En este punto, decir también que cuanto mejor sea el soporte de migración y traspaso de información entre distintos servidores, más se garantizará la integraci6n/migración de la información ya existente, con el mínimo riesgo de pérdida de información y el mínimo coste de implantación y desarrollo.
En cuanto al desarrollo, los servidores de datos deben proporcionar las API necesarias para asegurar que los desarrollos que se lleven a cabo puedan aprovechar los servicios de acceso y gestión de los datos de la manera más eficiente y completa posibles. Y, además, no deben limitar el desarrollo a la plataforma en la que se encuentra el sistema, sino que debe ser capaz de dar soporte a los lenguajes estándar de la Red como pueda ser Java, lo que garantizará una integración total con los recursos de la Red.
El soporte hardware necesario
Lógicamente, sin un buen soporte hardware que proporcione los factores de rendimiento necesarios para cumplir los objetivos de acceso a la información, no podremos obtener las prestaciones establecidas. En cuanto al procesador empiezan a aprovecharse al máximo las arquitecturas SMP (Multiproceso simétrico). Los servidores de datos serán capaces de distribuir la carga del análisis dé las consultas, la ejecución de la programación de tareas y, como no, el control de los accesos de múltiples usuarios al mismo tiempo. Es requisito imprescindible contar con una buena cantidad de memoria, pues una de las mejores maneras que, tienen los servidores de proporcionar los datos de la manera más rápida posible es mantener los sistemas de indexación, cursores y páginas caché en la memoria del servidor. Lo que requiere de una enorme cantidad de espacio libre. Ni que decir tiene que él disco duro es necesario que disponga de almacenamiento de sobra si quiere ser capaz de albergar varias bases de datos que son capaces de almacenar el nivel de información diario (presente y futuro) que requiere el funcionamiento de la empresa y sus reglas de negocio.