.NET DataSet реализация под капотом - PullRequest
3 голосов
/ 02 марта 2009

Может ли кто-нибудь дать мне какие-либо ссылки на ресурсы, подробно описывающие структуры и алгоритмы, используемые "под капотом" класса .NET DataSet ?

В настоящее время я работаю на языке, который не имеет реализации общей структуры данных в памяти, такой как класс DataSet. Возможно, мне придется создать его самому (но не настолько обширно!), Но я хотел бы получить лучшее представление о том, как собирать существующие системы, прежде чем я начну взламывать. (Спасибо Дуглас Хофштадтер )

Я читаю реализацию Mono , но любые другие ссылки, статьи или идеи приветствуются.

Ответы [ 5 ]

4 голосов
/ 02 марта 2009

Запустите отражатель и идите прямо к источнику ...

3 голосов
/ 02 марта 2009

Вы можете легально загрузить исходный код для DataSet от Microsoft , который предоставит вам доступ ко всему, включая оригинальные комментарии. Однако, если вы внедряете аналогичную систему / продукт, вам следует внимательно изучить лицензию , чтобы убедиться, что вы вряд ли нарушите ее, посмотрев на исходный код.

1 голос
/ 02 марта 2009

Ключевой структурой данных ADO.Net DataSet является Красно-Черное дерево

Это сложно, но имеет хороший наихудший случай время выполнения своих операций и эффективный на практике: он может искать, вставить и удалить за O (log n), где n - общее количество элементов в дерево. Проще говоря, красно-черный дерево - это двоичное дерево поиска, которое вставляет и удаляет разумно, чтобы убедитесь, что дерево разумно сбалансированный.

1 голос
/ 02 марта 2009

Reflector доступен по адресу http://www.red -gate.com / products / рефлектор / index.htm и позволит вам точно увидеть, как реализован DataSet.

Вы также захотите взглянуть на DataAdapter, особенно DbDataAdapter.Fill, DataTable, особенно DataTable.Load, а также DataRow и DbDataReader. Затем вы можете захотеть взглянуть на некоторые конкретные реализации, такие как SqlDataAdapter, SqlCommand и т. Д.

Обратите внимание, что DataSet является доказательством старой поговорки обо всем, что выглядит как гвоздь. Он был чрезмерно использован в .NET. В частности, не используйте его для передачи данных между веб-сервисом и его клиентами - он плохо взаимодействует.

0 голосов
/ 02 марта 2009

Книга под названием «Программирование. Справочник по ядру ADO.Net 2.0» содержит отличное описание наборов данных, включая многие обсуждаемые проблемы и внутренние структуры данных.

Основная реализация набора данных опирается на красные / черные самобалансирующиеся деревья.

Другая большая оговорка, о которой упоминается в книге, заключается в том, что поиск кода данных через строки не был реализован эффективно, поскольку он использует сравнение строк для поиска в таблице поиска соответствующего столбца. Вы можете получить неплохое увеличение производительности поиска как для таблиц, так и для столбцов, если жестко закодировать число строк. Конечно, это кошмар обслуживания, если вы не напишете инструмент, который сделает это за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...