2010-09-30 5 views
1

Nous avons actuellement une base de données OLTP SQL Server 2005 pour notre projet. Nous prévoyons de créer une base de données de rapports distincte (dénormalisée) afin que nous puissions enlever la charge de notre base de données OLTP. Je ne sais pas quelle est la meilleure approche pour synchroniser ces bases de données. Cependant, nous ne recherchons pas un système en temps réel. SSIS est-il une bonne option? Je suis complètement nouveau à SSIS, donc pas sûr de la faisabilité. Veuillez fournir vos entrées.Actualisation d'une base de données de rapports

+0

Outre un "Oui" pour SSIS en général, quelque chose de plus spécifique, vous devrez être plus précis quant à vos exigences/contraintes, etc. – InSane

+0

Merci pour votre commentaire. Comme je l'ai mentionné, je cherchais des pointeurs pour la meilleure approche pour actualiser la base de données de rapports. Je suis à la recherche d'une charge delta (changements depuis le dernier chargement) pour synchroniser les bases de données. Je n'ai pas encore commencé à l'implémenter, donc je n'ai pas de questions spécifiques au SSIS pour le moment. – Fka

Répondre

0

Tout le monde a sa propre opinion de SSIS. Mais je l'ai utilisé pendant des années pour les datamarts et mon environnement actuel qui est une installation BI complète. Personnellement, j'aime ses capacités à déplacer des données et il détient toujours le record du monde pour le déplacement de 1,13 téraoctets en moins de 30 minutes. En ce qui concerne la configuration, nous utilisons l'envoi de journaux à partir de notre base de données transactionnelle pour remplir une deuxième boîte. Utilisez ensuite SSIS pour dé-normaliser et stocker les données. La communauté pour SSIS est également très grande et il y a des tonnes de formation gratuite et des ressources utiles en ligne.

0

Nous construisons notre entrepôt de données à l'aide de SSIS à partir duquel nous exécutons des rapports. C'est une grande courbe d'apprentissage et les erreurs qu'elle génère ne sont pas particulièrement utiles, et ça aide d'être bon en SQL, plutôt que de le traiter comme un 'transfert ligne par ligne' - ce que je veux dire c'est que vous devriez créer des requêtes tâches de commande sql plutôt que d'utiliser beaucoup de tâches de composants et de flux de données SSIS. Comprenez que chaque entrepôt est une différence et vous devez décider comment le faire le mieux possible. This link peut vous donner quelques bonnes idées.

Comment nous mettons en œuvre la nôtre (nous avons un back-end postgres et l'utilisation fournisseur de PIBT, et en utilisant des serveurs liés pourrait rendre votre vie plus facile):

d'abord, vous devez avoir une colonne horodatage dans chaque tableau de sorte que vous pouvez quand il a été changé pour la dernière fois.

Ensuite, écrivez une requête qui sélectionne les données qui ont changé depuis la dernière exécution du paquet (en utilisant une table d'audit, cela vous aidera) et récupérez ces données dans une table de transfert. Nous l'exécutons comme une tâche de flux de données car (en utilisant postgres) nous n'avons pas d'autre choix, bien que vous puissiez utiliser une référence normale à une autre base de données (nom de fichier .schemaname.tablename ou quelque chose comme ça) ou utiliser un requête serveur liée. De toute façon, l'idée est la même. Vous vous retrouvez avec des données qui ont changé depuis votre requête.

Ensuite, nous mettons à jour (sur la base de id) les données qui existent déjà, puis insérons les nouvelles données (à gauche joindre la table pour trouver ce qui n'existe pas déjà dans l'entrepôt actuel).

Maintenant, nous avons une table dénormalisée qui montre dans ce cas des tâches par jour. À partir de là, nous calculons d'autres tables en fonction des valeurs agrégées de celle-ci.

L'espoir qui aide, voici quelques bons liens que je utiles:

Choosing .Net or SSIS

SSIS Talk

Package Configurations

Improving the Performance of the Data Flow

Trnsformations

Custom Logging/Good Blog

Questions connexes