> Tech > Gestion accélérée des données, pour les tâches intelligentes et les autres

Gestion accélérée des données, pour les tâches intelligentes et les autres

Tech - Par iTPro - Publié le 24 juin 2010
email

Honnêtement, je conçois que certains développeurs aient réellement besoin de récupérer 100 000 lignes sur le client et qu’ils gèrent les données dans un objet DataTable. Microsoft répond à ces attentes en repensant la manière dont ADO.NET construit, stocke, indexe et récupère les objets DataTable et DataSet. Si votre DataTable

Gestion accélérée des données, pour les tâches intelligentes et les autres

reste inférieur à 10 000 lignes, vous ne constaterez pas de changement important sur le plan des performances. En revanche, les développeurs qui créent des DataTable gigantesques bénéficieront d’une amélioration spectaculaire desdites performances, lesquelles peuvent être plus de 80 fois plus rapides (selon les déclarations de Microsoft). Cette amélioration ne doit pas vous inciter à télécharger en mémoire toute la liste des bénéficiaires de l’assurance maladie de la région. Il existe d’autres méthodes plus performantes et plus rapides pour traiter des colonnes importantes de données. Citons par exemple le recours à la nouvelle classe BulkCopy pour importer les lignes dans une table côté serveur et l’utilisation consécutive d’une procédure stockée, voire d’une nouvelle procédure basée sur le CLR pour le traitement des lignes ainsi récupérées.

Il semblerait également que de nombreux développeurs utilisent un objet DataReader pour récupérer les données (car ils ont entendu dire que cette méthode est plus rapide), mais ils se servent ensuite de leur propre code pour les charger dans un DataTable ou un DataSet.

Dans ADO.NET 2.0, les objets DataTable et DataSet exposent désormais la méthode Load pour permettre aux développeurs de charger directement un DataTable à partir d’un DataReader. Vous pouvez aussi exposer un flux DataReader à partir d’un DataTable ou d’un DataSet existant au moyen de la méthode CreateReader. Cela signifie que le DataReader peut renvoyer plusieurs ensembles de lignes accédées via la méthode NextResult.

Mais supposons qu’une personne vous demande d’accélérer l’exécution d’une application lors du déplacement de 10 000 lignes ou plus sur le client. Vous (tout comme moi) pouvez poser incidemment la question : « Pourquoi ? ». Souvent, le maître d’oeuvre souhaite exécuter une opération en bloc, mais ne le sait pas. En général, les demandes de ces clients prennent l’une des deux formes suivantes :

1. Le client vous demande de récupérer un nombre démesuré de lignes d’une table, d’apporter une modification et de renvoyer les lignes. Naturellement, certains clients ne connaissent pas les procédures stockées capables généralement d’effectuer toutes les modifications souhaitées directement sur le serveur, dans un lapse de temps plus court. Je propose à ces personnes un didacticiel sur l’écriture d’opérations UPDATE intelligentes côté serveur. Mais le commun des mortels se sert des outils qu’il connaît.

2. Le client vous demande de récupérer un nombre démesuré de lignes d’une autre base de données et de les transférer vers SQL Server. Parfois, ces personnes veulent exécuter une certaine logique sur les données lors du transfert, mais en général ils veulent simplement importer beaucoup de lignes d’un grand système vers leur succursale. Par le passé, je recommandais à ces personnes d’utiliser DTS ou le programme de copie en bloc (BCP) pour accomplir cette tâche. Dans ADO.NET 2.0, il est facile d’importer des données de n’importe quelle source en utilisant la classe SqlBulkCopy. Vous pouvez copier en bloc les données exposées par n’importe quel fournisseur de données .NET (SqlClient, OLE DB, ODBC ou n’importe quel fournisseur tierce partie) vers SQL Server en vue de leur traitement. Une fois les données sur le serveur, je suggère au client de modifier ou de filtrer les lignes in situ. Alors qu’il fallait des heures, voire des jours pour effectuer cette tâche avec les versions précédentes d’ADO, il suffit de quelques secondes ou minutes à ADO.NET 2.0 pour terminer le travail.

Afin d’illustrer ce dernier point, j’ai écrit récemment une application visant à utiliser le CD d’index MSDN pour trouver un DVD dans ma collection Universal. Malheureusement, il faut plusieurs minutes à l’outil de recherche basé sur Microsoft Internet Explorer et fourni avec le CD d’index pour effectuer une simple recherche. J’ai téléchargé les données d’index MSDN en utilisant la classe SqlBulkCopy pour déplacer les fichiers .rs persistants ADTG (Advanced Data TableGram) classiques ADO du CD d’index vers SQL Server. Après le chargement des fichiers, j’ai créé les index appropriés et ai été en mesure de réduire le délai d’interrogation de plusieurs minutes à moins de 5 secondes. L’opération BCP a déplacé près de 450 000 lignes en moins de 30 secondes. J’ai également essayé d’importer les données XML du CD, mais les résultats ont été exécrables. Pourquoi cela a-t-il pris beaucoup plus de temps ? Cela s’explique peut-être par le fait que XML est un des mécanismes de stockage des données les plus médiocres (mais l’un des plus souples) qui soient.

Une autre fonctionnalité incontournable dans ADO.NET 2.0 est la classe TableAdapter. Le meilleur moyen de la générer consiste à utiliser les nouveaux mécanismes de glisser-déplacer dans l’IDE Visual Studio 2005. La classe TableAdapter est conçue pour exposer la nouvelle fonctionnalité de l’objet DataTable, lequel met désormais en oeuvre nombre des méthodes de DataSet. L’objet DataTable permet de sérialiser un DataTable individuel en utilisant soit la sérialisation XML, soit la sérialisation binaire. Ajoutez à cela de nouveaux mécanismes de liaison et contrôles de navigation dans les ensembles de lignes, et vous disposez d’un outil plus puissant pour créer des applications interactives. ASP.NET bénéficie aussi d’une nouvelle prise en charge d’ADO.NET. Par exemple, vous pouvez mettre à jour automatiquement les DataSet créés et liés au moyen d’une nouvelle technologie de gestion des données en « duplex intégral ».

Téléchargez gratuitement cette ressource

HP Elite Slice G2 : optimisez la collaboration… et votre budget !

HP Elite Slice G2 : optimisez la collaboration… et votre budget !

Téléchargez cette étude Forrester et découvrez comment booster la collaboration tout en dégageant un excellent R.O.I grâce au système de vidéoconférence HP Elite Slice G2 avec Microsoft Teams !

Tech - Par iTPro - Publié le 24 juin 2010