Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article se concentre sur l’utilisation de schémas T-SQL définis par l’utilisateur pour développer des solutions dans un pool SQL dédié.
Schémas pour les limites d’application
Les entrepôts de données traditionnels utilisent souvent des bases de données distinctes pour créer des limites d’application en fonction de la charge de travail, du domaine ou de la sécurité.
Par exemple, un entrepôt de données SQL Server traditionnel peut inclure une base de données intermédiaire, une base de données d’entrepôt de données et certaines bases de données de magasin de données. Dans cette topologie, chaque base de données fonctionne comme une charge de travail et une limite de sécurité dans l’architecture.
En revanche, un pool SQL dédié exécute l’intégralité de la charge de travail de l’entrepôt de données au sein d’une base de données. Les jointures entre bases de données ne sont pas autorisées. Le pool SQL dédié s’attend à ce que toutes les tables utilisées par l’entrepôt soient stockées dans la base de données unique.
Remarque
Le pool SQL ne prend pas en charge les requêtes entre bases de données d’un type quelconque. Par conséquent, les implémentations de l’entrepôt de données qui tirent parti de ce modèle devront être révisées.
Recommandations
Voici les recommandations pour consolider les charges de travail, la sécurité, le domaine et les limites fonctionnelles à l’aide de schémas définis par l’utilisateur :
- Utilisez une base de données dans un pool SQL dédié pour exécuter l’intégralité de votre charge de travail d’entrepôt de données.
- Consolidez votre environnement d’entrepôt de données existant pour utiliser une base de données de pool SQL dédiée.
- Tirez parti des schémas définis par l’utilisateur pour fournir la limite précédemment implémentée à l’aide de bases de données.
Si les schémas définis par l’utilisateur n’ont pas été utilisés précédemment, vous disposez d’une page blanche. Utilisez l’ancien nom de base de données comme base pour vos schémas définis par l’utilisateur dans la base de données du pool SQL dédié.
Si des schémas ont déjà été utilisés, vous avez quelques options :
- Supprimez les noms de schéma hérités et démarrez à nouveau.
- Conservez les noms de schéma hérités en préfixant le nom du schéma hérité au nom de la table.
- Vous pouvez conserver le nom de schéma hérité, en implémentant les vues sur la table au sein d’un schéma supplémentaire pour recréer l’ancienne structure du schéma.
Remarque
À première vue, l'option 3 peut sembler être la plus attrayante. Cependant, le diable est dans les détails. Les vues sont lues uniquement dans le pool SQL dédié. Toute modification de données ou de table doit être effectuée sur la table de base. L’option 3 introduit également une couche de vues dans votre système. Peut-être devriez-vous étudier la question plus attentivement si vous utilisez déjà des vues dans votre architecture.
Exemples:
Implémentez des schémas définis par l’utilisateur en fonction des noms de base de données :
CREATE SCHEMA [stg]; -- stg previously database name for staging database
GO
CREATE SCHEMA [edw]; -- edw previously database name for the data warehouse
GO
CREATE TABLE [stg].[customer] -- create staging tables in the stg schema
( CustKey BIGINT NOT NULL
, ...
);
GO
CREATE TABLE [edw].[customer] -- create data warehouse tables in the edw schema
( CustKey BIGINT NOT NULL
, ...
);
Conservez les schémas hérités en les ajoutant au début du nom de la table. Utilisez des schémas pour la limite de charge de travail :
CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- edw defines the data warehouse boundary
GO
CREATE TABLE [stg].[dim_customer] --pre-pend the old schema name to the table and create in the staging boundary
( CustKey BIGINT NOT NULL
, ...
);
GO
CREATE TABLE [edw].[dim_customer] --pre-pend the old schema name to the table and create in the data warehouse boundary
( CustKey BIGINT NOT NULL
, ...
);
Conservez les noms de schéma hérités à l’aide de vues :
CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- stg defines the data warehouse boundary
GO
CREATE SCHEMA [dim]; -- edw defines the legacy schema name boundary
GO
CREATE TABLE [stg].[customer] -- create the base staging tables in the staging boundary
( CustKey BIGINT NOT NULL
, ...
)
GO
CREATE TABLE [edw].[customer] -- create the base data warehouse tables in the data warehouse boundary
( CustKey BIGINT NOT NULL
, ...
)
GO
CREATE VIEW [dim].[customer] -- create a view in the legacy schema name boundary for presentation consistency purposes only
AS
SELECT CustKey
, ...
FROM [edw].customer
;
Remarque
Toute modification de la stratégie de schéma nécessite une révision du modèle de sécurité pour la base de données. Dans de nombreux cas, vous pouvez simplifier le modèle de sécurité en affectant des autorisations au niveau du schéma. Si des autorisations plus granulaires sont requises, vous pouvez utiliser des rôles de base de données.
Étapes suivantes
Pour obtenir des conseils supplémentaires, consultez la vue d’ensemble du développement.