Compartir a través de


Directrices para planear servidores de bases de datos federadas

La creación de una federación de servidores de bases de datos incluye el diseño de un conjunto de vistas distribuidas con particiones que reparta los datos entre los servidores. Las particiones funcionan correctamente si las tablas de la base de datos se pueden dividir de forma natural en particiones similares en las que la mayoría de las filas a las que tiene acceso una instrucción SQL pueden colocarse en el mismo servidor miembro. Las tablas se agrupan en unidades relacionadas. Por ejemplo, suponga que la entrada de un pedido hace referencia a las tablas Pedidos, Clientes y Piezas, junto a todas las tablas que registran las relaciones entre clientes, pedidos y piezas. Las particiones funcionan mejor si todas las filas de un clúster lógico se pueden colocar en el mismo servidor miembro.

Particiones simétricas

La creación de particiones resulta más eficaz si puede hacerse simétricamente en todas las tablas de la base de datos de la siguiente manera:

  • Los datos relacionados se colocan en el mismo servidor miembro, de manera que la mayoría de las instrucciones SQL que se dirijan al servidor miembro correcto requieran una cantidad mínima o nula de datos de otros servidores miembro. El objetivo del diseño de una vista distribuida con particiones puede establecerse con la regla del 80/20: diseñar las particiones de manera que la mayoría de las instrucciones SQL se puedan enrutar a un servidor miembro que tenga al menos el 80 por ciento de los datos, y que las consultas distribuidas sean necesarias para un 20 por ciento o menos de los datos. Una buena manera de comprobar si esto se puede conseguir consiste en ver si la partición permite colocar todas las filas en el mismo servidor miembro que todas sus filas de clave externa de referencia. Los diseños de bases de datos que faciliten este objetivo son buenos candidatos para la partición.

  • Los datos se dividen en las particiones de forma uniforme entre los servidores miembro.

    Suponga, por ejemplo, que una empresa ha dividido América del Norte en regiones. Cada empleado trabaja en una región, y los clientes realizan la mayor parte de sus compras en el estado o provincia donde viven. Las tablas de región y empleados tienen particiones para las regiones. Los clientes tienen particiones entre regiones, según su estado o provincia. Aunque algunas consultas requieren datos de varias regiones, los datos necesarios para la mayoría de las consultas se encuentran en el servidor de una región. Las aplicaciones enrutan las instrucciones SQL al servidor miembro que contiene la región deducida del contexto proporcionado por los datos especificados por el usuario.

Particiones asimétricas

Aunque las particiones simétricas son el objetivo ideal, la mayoría de las aplicaciones tienen patrones complejos de acceso a los datos, lo que impide que se realicen estas particiones. Las particiones asimétricas hacen que algunos servidores miembro asuman funciones más completas que otros. Por ejemplo, sólo se pueden crear particiones de algunas de las tablas de una base de datos, y las tablas sin particiones permanecen en el servidor original. Las particiones asimétricas pueden proporcionar un rendimiento parecido a las simétricas, pero ofrecen las siguientes ventajas importantes:

  • Mejoran en gran medida el rendimiento de una base de datos de la que no se pueden realizar particiones simétricas, mediante la partición asimétrica de algunas de sus tablas.

  • Permiten la creación correcta de particiones de un sistema grande existente mediante una serie de mejoras asimétricas repetitivas. Las tablas seleccionadas para la partición en cada paso suelen ser aquéllas que proporcionan el mayor incremento de rendimiento en ese momento.

Con el método asimétrico, el servidor original suele retener algunas tablas que no se ajustaban al esquema de partición. El rendimiento de estas tablas suele ser mejor que en el sistema original, ya que las tablas miembro se mueven a servidores miembro, lo que reduce la carga en el servidor original.

Se pueden crear particiones de muchas bases de datos de varias formas. Las particiones concretas seleccionadas para la implementación deben ser aquéllas que mejor cumplen los requisitos de las diferentes instrucciones SQL ejecutadas por el nivel de servicios corporativos.