Avantages de l'utilisation de paquets SSIS par rapport aux procédures stockées?

si je peux répondre aux exigences ETL requises en utilisant des procédures stockées, quels sont les avantages d'utiliser des paquets SSIS à la place? Mon truc D'ETL n'est rien d'important.

j'ai envie d'utiliser une technologie ancienne. J'aime SQL. L'ancienne technologie n'est pas obsolète car les procédures stockées ne disparaîtront pas de sitôt.

27
demandé sur Tony_Henrich 2009-11-21 00:49:10

13 réponses

si votre ETL est principalement E et L, avec très peu de T, et si vous pouvez écrire vos SPs de sorte qu'ils ne comptent pas sur les curseurs, alors aller sur la route SP-only est probablement très bien.

pour les processus plus complexes, en particulier ceux qui impliquent des transformations lourdes, des dimensions qui changent lentement, des recherches de données, etc., les petites industries ont trois avantages.

tout d'abord, il gère la mémoire très efficacement, ce qui peut entraîner de grandes améliorations de la performance par rapport au T-SQL seul.

Deuxièmement, l'interface graphique vous permet de construire de grandes transformations complexes et fiables beaucoup plus facilement que le T-SQL fait à la main.

et troisièmement, SSIS vous permet d'interagir plus facilement avec des sources externes supplémentaires, ce qui peut être très pratique pour des choses comme le nettoyage de données.

32
répondu RickNZ 2009-11-22 02:51:57

j'ai vécu dans le pays des procédures ETL stockées pour un entrepôt de données de Serveur SQL Multi-teraoctets. Cette décision a été prise en 2001 lorsque .NET était de 1,0, donc VB6 était le langage de programmation de rechange, et SSIS n'était pas encore là - c'était DTS. Je peux vous dire qu'il y avait des avantages et des inconvénients, comme n'importe quoi.

Quelques remarques:

  1. si tout le monde dans votre équipe comprend SQL, il est facile de creuser dans les procs stockés. SQL est un fait largement connu compétence qui peut être un avantage si vous avez beaucoup d'écrivains / lecteurs ETL. Vous devez être plus qu'un utilisateur occasionnel de SSIS afin de comprendre ce qu'il fait. Le flux graphique de haut niveau est agréable pour la documentation, mais si quelqu'un a besoin d'entrer dans les tripes, ils ont intérêt à bien connaître SSIS.
  2. SQL est une douleur pour modulariser. Si vous utilisez UDFs, vous allez subir un énorme succès de performance. Vous écrirez du code similaire dans plusieurs endroits et vous vous détesterez de le faire, mais souvent dans Scénarios ETL la performance est roi. SSIS vous aidera à modulariser et à prendre en compte vos tâches.
  3. ne vous attendez pas à pouvoir utiliser facilement le contrôle à la source avec SSIS. SQL-pas de problème. SSIS utilise des fichiers XML terribles qui peuvent être vérifiés dans, mais bonne chance de changer avec les versions précédentes pour voir ce qui a changé et quand.
  4. vous devez penser à vos SPs de manière modulaire, même s'il est difficile de les rendre aussi modulaires que vous le souhaitez. Utilisez des tables de température pour fractionner votre traitement. Mettre index sur ces tables de température avant de les utiliser. N'essayez pas d'en faire trop à la fois. Commentaire de tout.
  5. Si vous utilisez les curseurs, vous le faites mal. N'ayez pas peur d'enchaîner dans une application de console externe que vous avez écrite dans la langue de votre choix pour faire certaines choses que SQL n'était tout simplement pas fait pour.

BTW-après que j'ai quitté cette entreprise, ils ont finalement mis à niveau la base de données de SQL 2000 à 2008 et lentement déménagé de procs stockés à SSIS. Dans ma nouvelle société, Nous possédons SSIS mais après l'avoir utilisé, nous avons tous convenu que notre.ETL personnalisé est mieux adapté à nos besoins. Tout le monde prend leur propre voie. La décision doit trouver un équilibre entre l'entretien et le rendement, l'ensemble des compétences de votre équipe et l'ensemble des compétences du bassin d'emplois dans votre région.

25
répondu mattmc3 2010-07-17 12:29:27

je suis en train de me débarrasser de nos paquets SSIS et d'utiliser des procédures stockées. Pour nous, les procs stockés sont extrêmement meilleurs: 1) Ils sont beaucoup plus faciles à entretenir, nous n'avons pas besoin de bids, nous n'avons pas besoin de créer des projets et d'importer des paquets dans bids, donc moins d'étapes pour faire des changements simples stocké proc. 2) Tous nos paquets actuels tronquent les données d'une table, puis repeuplent plusieurs autres tables sur le même serveur avec des correspondances directes. Très facile à insérer / sélectionner SQL to écrire. 3) Ils courent beaucoup plus vite. Nous n'avons pas de curseurs, pas de structures en boucle, juste du SQL droit. 4) nous n'avons pas à passer tout notre temps à faire un clic droit et à travailler dans des petites fenêtres d'enchères en essayant de suivre le flux de la logique. Nous connaissons tous la TSQL de base et c'est suffisant pour nos tâches.

6
répondu Rob Kraft 2013-10-19 20:15:35

je dirais que cela dépend de ce que vous faites. Toutefois, d'après mon expérience, la marge d'amélioration avec les progiciels de SSIS est énorme. Nous avons vu des améliorations de 10 fois dans notre environnement d'entrepôt de données lorsque nous avons pris certaines des procédures de frappes lourdes stockées et les avons mises dans des paquets SSIS. L'utilisation de la mémoire de SSIS (dans cette situation de toute façon) a fait toute la différence.

je tiens à rappeler qu'il est important de savoir ce que vous faites. Par exemple, un SQL la déclaration sera généralement plus performante qu'un flux de données SSIS lorsque la transformation des données est table-à-table sur le même serveur.

le meilleur pari pour choisir un SP ou deux et les créer dans SSIS et les tester tous les deux.

semble comme la réponse pour toutes les questions SQL commencer par, cela dépend...

5
répondu Irwin M. Fletcher 2009-11-20 21:54:12

j'ai vu quelques gains de performance tremblants de l'utilisation de SSIS, il est particulièrement bon si vous avez stocké des procédures qui utilisent des serveurs liés car cela utilise plus de puissance de traitement et les serveurs liés ont tendance à tirer sur l'ensemble de la table dans la mémoire avant de limiter les lignes nécessaires à une jointure. Nous avions une procédure stockée qui prenait plus de 7 heures à exécuter, j'ai décomposé cela en données de chaque serveur, puis mis en place une source de données locale pour chacun dans SSIS permettant le traitement d'avoir lieu localement pour chaque source de données telle qu'elle est appliquée à via un serveur lié, le travail prend maintenant 6 minutes à exécuter, je dirais que c'est un gain énorme.

Caralyn

2
répondu Caralyn 2011-05-25 10:57:19

Nous sommes avec la méthode combinée pour obtenir le meilleur de deux mondes: Nous utilisons SSIS pour obtenir des données de sources externes et les charger en parallèle dans la base de données de Staging Ensuite, nous utilisons des paquets SSIS pour orchestrer les pipelines et déclencher le flux SPs approprié à l'intérieur du contrôle.

toute logique de transformation est désactivée en SPs car les flux de données sont difficiles à gérer/modifier et ne donnent aucun avantage significatif: 1) Il est plus facile de modifier et de dépanner SP qu'un paquet 2) Il n'y a pas de moyen facile de réutiliser les composants dans les SSI, sauf pour l'appel de paquets externes 3) SVN diff of SP works, diff of SIS package is awful :)

de plus, nous utilisons les SSI pour exécuter les SPs en parallèle afin d'augmenter la performance globale.

2
répondu user1099734 2011-12-15 11:36:08

Je ne vois pas de limites techniques évidentes. La procédure stockée peut être plus difficile à suivre qu'un paquet SSIS pour des opérations complexes ETL - mais cela ne sera pas le cas pour tous les scénarios. J'ai aussi constaté que les paquets (SSIS et DTS) sont plus facilement reconnus comme des "jobs" - les procédures stockées qui sont exécutées par des jobs programmés sont souvent négligées par les développeurs parce qu'ils ne peuvent pas voir les jobs programmés.

cela dit, j'ai vu ETL interprétée par les procédures stockées et les paquets DTS/SSIS et aussi longtemps que la procédure stockée n'est pas un grand désordre de code enchevêtré il semble approprié. Je n'ai pas vu une méthode donner de meilleurs résultats ou des résultats plus fiables qu'une autre (mais je n'ai pas vu des procédures stockées faisant de L'ETL complexe).

1
répondu Mayo 2009-11-20 21:53:02

j'ai essayé certaines fonctionnalités dans les SSIS et je n'étais pas satisfait de toutes. J'ai déclaré avec le flux de données machin chose et je n'étais pas vraiment heureux avec la performance que j'ai vu. Ce que j'ai fini par faire était de développer un paquet SSIS qui avait un flux de contrôle de tâche sql chacun d'entre eux a exécuté un proc stocké.

ceci a fait en sorte que SQL server fasse la plupart de L'E, T, et le L. je pense que lorsque vous utilisez le composant dataflow les données se déplacent réellement du serveur sql à la machine exécutant le paquet qui le rend pas très efficace.

cela dit, je pense que j'aurais essayé d'optimiser le flux de données (ça faisait longtemps que je n'avais pas travaillé dessus) si j'avais dû interagir avec des applications/ bases de données / systèmes DW tierces.

1
répondu ps. 2009-11-20 22:20:44

SSIS manque de fonctionnalités de base, il n'a pas de paquet de type Informatica qui permet au développement avec une instruction SQL de s'exécuter contre des fichiers texte bruts et SQL server manque cruellement d'erreur DML comme Oracle. J'ai vraiment pensé quand Microsoft a annoncé l'ajout de la Déclaration de fusion que, bien sûr, ils mettraient en œuvre le seau d'erreurs qui est l'un de ses traits les plus importants, bien deviner encore. Le traitement des erreurs au niveau de la ligne est important et si vous utilisez un SQL déclaration pour ajouter des lots de données si un enregistrement échoue que le lot entier est retranché.

1
répondu jon 2011-01-15 15:39:31
  1. la performance sera plus rapide que la sp normale. Il n'est pas nécessaire de créer une table de température complexe, un curseur, une indexation pour extraire des données.

  2. la manipulation incrémentielle n'est possible que dans les petites entreprises.

  3. nous pouvons créer un fichier de configuration de paquet et le déployer sur n'importe quel serveur. L'utilisateur peut fournir les détails du serveur et les informations de connexion.

  4. Graphique interface utilisateur.

  5. journalisation, la gestion des erreurs est la meilleure dans les petites industries.

0
répondu Ashis Das 2010-10-01 07:41:53

aux petits projets, si vous avez des compétences sql solides, et une compréhension des exigences de l'entreprise, allez-y!

Sinon, si vous allez faire face à l'extraction de données complexes, lourdes tâches de transformation. SSIS ou un autre outil ETL suffira.

cheers

0
répondu Jayron Soares 2013-12-17 14:43:49

pour les transferts de données entre des serveurs SQL utiliser SSIS au-dessus de SPs Vous pouvez facilement faire face à une amélioration de facteur 10 comme mentionné ci-dessus Nous sommes passés de 6 à 7 heures de transfert à un délai plus gérable en intégrant le SP dans un paquet SSIS

Sur une note de côté: SSIS est fondamentalement un tas de fichiers XML qui peut être manipuler/utilisés de différentes façons (par exemple pour la documentation)

0
répondu plykkegaard 2017-01-31 09:08:05

je travaille avec SQL Server depuis la version 6.5 - ça fait longtemps! Et d'après mon expérience, la plupart D'ETL est assez simple pour que T-SQL fonctionne parfaitement bien et non seulement fonctionne, mais fonctionne très bien - rapide, fiable, simple programmation structurée. Je crois que tout ce qui peut être fait dans les SIS peut être fait en T-SQL par quelqu'un qui sait ce qu'il fait.

la plupart des gens qui sont lourds Pro-SSIS, encore une fois dans mon expérience, sont des développeurs inexpérimentés qui ont grandi avec outils et ne savent pas vraiment programmer.

0
répondu Todd McDaniel 2017-03-01 14:44:30