Pregunta

¿Alguien puede darme información sobre los recursos que detallan las estructuras y los algoritmos utilizados " bajo el capó " de la clase .NET DataSet ?

Actualmente estoy trabajando en un lenguaje que no tiene una implementación de una estructura de datos en memoria genérica como la clase DataSet. Puede que termine teniendo que construir uno (¡pero no tan extenso!), Pero me gustaría tener una mejor idea de cómo se juntan los sistemas existentes antes de empezar a piratear. (Gracias Douglas Hofstadter )

Estoy leyendo a través del implementación Mono , pero se agradecería cualquier otro enlace, artículo o idea.

¿Fue útil?

Solución

Encienda el Reflector y vaya directamente a la fuente ...

Otros consejos

Puede descargar legalmente el código fuente original para DataSet de Microsoft , que le proporcionará Acceso a todo, incluyendo comentarios originales. Sin embargo, si está implementando un sistema / producto similar, debe estudiar detenidamente la licencia para garantizar no es probable que lo rompas mirando el código fuente.

Reflector está disponible en http://www.red-gate.com /products/reflector/index.htm , y le permitirá ver exactamente cómo se implementa DataSet.

También querrá ver DataAdapter, especialmente DbDataAdapter.Fill, DataTable, especialmente DataTable.Load, y DataRow y DbDataReader. Tal vez desee ver algunas de las implementaciones específicas como SqlDataAdapter, SqlCommand, etc.

Tenga en cuenta que DataSet es una prueba del viejo adagio de que todo parece un clavo. Fue sobre-utilizado en .NET. En particular, no lo use para transferir datos entre un servicio web y sus clientes, ya que no interactúa bien.

La estructura de datos clave de ADO.Net DataSet es Árbol rojo-negro

  

Es complejo, pero tiene el peor de los casos.   tiempo de ejecución para sus operaciones y es   eficiente en la práctica: puede buscar,   Insertar y eliminar en tiempo O (log n),   donde n es el número total de elementos en   el árbol. En pocas palabras, un rojo-negro.   árbol es un árbol de búsqueda binaria que   inserta y elimina inteligentemente, para   asegúrese de que el árbol sea razonablemente   equilibrado.

El libro denominado Programación de referencia principal de ADO.Net 2.0 tiene una excelente descripción de los conjuntos de datos, incluidos muchos problemas y estructuras de datos internas discutidas.

La implementación principal del conjunto de datos se basa en árboles de equilibrio automático rojo / negro.

La otra advertencia importante que se menciona en el libro es que la búsqueda de código de datos a través de cadenas no se implementó de manera eficiente, ya que utiliza la comparación de cadenas para buscar la columna correspondiente en la tabla de búsqueda. Podrías obtener aumentos bastante buenos en el rendimiento de búsqueda en ambas tablas y en columnas mediante la codificación en los números de tus filas. Por supuesto, esto es una pesadilla de mantenimiento a menos que escriba una herramienta para hacerlo por usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top