Question

Quelqu'un peut-il me donner des indications sur des ressources détaillant les structures et les algorithmes utilisés "sous le capot"? de la classe .NET DataSet ?

Je travaille actuellement dans un langage qui n'a pas d'implémentation de structure de données générique en mémoire telle que la classe DataSet. Il se peut que je finisse par devoir en construire un moi-même (mais pas autant!), Mais j'aimerais avoir une meilleure idée de la façon dont les systèmes existants sont mis en place avant que je commence à bidouiller. (Merci Douglas Hofstadter )

Je suis en train de lire le Implémentation mono , mais tout autre lien, article ou idée serait apprécié.

Était-ce utile?

La solution

Lancez le réflecteur et allez directement à la source ...

Autres conseils

Vous pouvez légalement télécharger le code source d'origine de DataSet à partir de Microsoft , ce qui vous donnera accès à tout, y compris les commentaires originaux. Toutefois, si vous implémentez un système / produit similaire, vous devez étudier attentivement la licence afin de vous assurer vous ne risquez pas de le violer en consultant le code source.

Reflector est disponible à l'adresse http://www.red-gate.com /products/reflector/index.htm , et vous permettra de voir exactement comment DataSet est implémenté.

Vous voudrez également examiner DataAdapter, en particulier DbDataAdapter.Fill, DataTable, en particulier DataTable.Load, DataRow et DbDataReader. Vous voudrez peut-être ensuite regarder certaines des implémentations spécifiques telles que SqlDataAdapter, SqlCommand, etc.

Notez que DataSet est la preuve du vieil adage selon lequel tout ressemble à un clou. Il était trop utilisé dans .NET. En particulier, ne l'utilisez pas pour transférer des données entre un service Web et ses clients: l'interopérabilité est mauvaise.

La structure de données principale du DataSet ADO.Net est l’ ?? arbre rouge-noir .

  

Il est complexe mais présente le pire des cas.   temps d'exécution pour ses opérations et est   efficace dans la pratique: il peut chercher,   insérer et supprimer en temps O (log n),   où n est le nombre total d'éléments dans   l'arbre. Dit très simplement, un rouge-noir   arbre est un arbre de recherche binaire qui   insère et enlève intelligemment, à   s'assurer que l'arbre est raisonnable   équilibré.

Le livre intitulé Programming ADO.Net 2.0 core reference présente une excellente description des jeux de données, notamment de nombreux problèmes et des structures de données internes abordés.

La mise en œuvre majeure de l'ensemble de données repose sur des arbres d'équilibrage automatique rouge / noir.

L’autre inconvénient important mentionné dans le livre est que la recherche de code de données via des chaînes n’a pas été mise en œuvre efficacement, car elle utilise la comparaison de chaînes pour rechercher une colonne de recherche dans une table de recherche. Vous pouvez obtenir de très bonnes performances de recherche sur les deux tables et sur les colonnes en codant en dur les numéros de vos lignes. Bien sûr, c’est un cauchemar de maintenance, à moins que vous n’écriviez un outil pour le faire pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top