Description des serveurs de bases de données fédérés

En règle générale, pour atteindre les niveaux de performance élevés requis par les plus gros sites Web, un système à plusieurs niveaux équilibre la charge de traitement pour chaque niveau en la répartissant entre plusieurs serveurs. SQL Server répartit la charge de traitement des bases de données à travers un groupe de serveurs en partitionnant les données horizontalement dans une base de données. Ces serveurs sont gérés indépendamment, mais coopèrent pour traiter les requêtes de base de données en provenance des applications ; ce type de groupe coopératif de serveurs s'appelle une fédération.

Un niveau de base de données fédéré peut atteindre des performances très élevées, à condition que l'application envoie chaque instruction SQL au serveur membre dont la plupart des données sont requises par l'instruction. Cela s'appelle la colocation d'instruction SQL avec les données requises par l'instruction. La colocation d'instructions SQL avec les données requises n'est pas une contrainte propre aux serveurs fédérés. Elle est aussi requise dans les systèmes clusters.

Bien qu'une fédération de serveurs présente aux applications la même image qu'un serveur de base de données unique, il existe des différences internes quant à l'implémentation du niveau des services de base de données, comme le montre le tableau suivant.

Niveau du serveur unique

Niveau des serveurs fédérés

Il existe une instance de SQL Server sur le serveur de production.

Il existe une instance de SQL Server sur chaque serveur membre.

Les données de production sont stockées dans une base de données.

Chaque serveur membre dispose d'une base de données de membre. Les données sont réparties à travers les bases de données de membre.

Chaque table représente généralement une entité unique.

Les tables de la base de données d'origine sont partitionnées horizontalement en tables de membre. Il existe une table de membre par base de données de membre, et les vues partitionnées distribuées permettent de faire apparaître cette table comme si une copie complète de la table d'origine se trouvait sur chaque serveur membre.

Toutes les connexions sont effectuées vers le serveur unique, et toutes les instructions SQL sont traitées par la même instance de SQL Server.

Le niveau correspondant à l'application doit pouvoir exécuter une colocation des instructions SQL sur le serveur membre qui contient la plupart des données référencées par l'instruction.