Herencia de tabla por tipo frente a tabla por jerarquía - Blog de Devart

En este artículo, comparamos el rendimiento de los dos tipos heredados más utilizados, la tabla de jerarquía (TPH) y la tabla de tipos (TPT), que son compatibles con LinqConnect desde la versión 2.00. Para una mejor comprensión de este tipo de patrimonio utilizaremos En primer lugar el modelo enfoque, cuando primero se desarrolla un modelo de objeto y luego se genera un esquema de base de datos.

Para desarrollar un modelo de objetos, revelador de esencia se utilizará la herramienta.

Nuestras pruebas se realizan en el siguiente modelo de objeto:

Tenemos una jerarquía de tres clases de esencia: la clase base Artilugio y sus descendientes- Teléfono móvil y netbook.

Después de crear el modelo de objetos, podemos comenzar a generar el esquema de la base de datos. En esta etapa se identifican las principales diferencias entre TPT y TPH que afectan el esquema de la base de datos.
Consideremos el primer tipo de herencia: TPH. Dentro de este tipo, los datos de la jerarquía de clases se almacenan en una sola tabla. Así, luego de generar el esquema en la base de datos, se crea la siguiente tabla:

GadgetIdDiscriminadoEl vendedorFactor de formaSeparación de pantalla
1METROnokiamonobloqueNULO
2nortesonyNULO1024 * 768

El Discriminado la columna se utiliza para determinar el tipo de entidad para las filas de la tabla: METRO - teléfono móvil norte - netbook.

TPH proporciona los siguientes beneficios:

  1. Operaciones CRUD de alto rendimiento porque todos los datos se almacenan en una tabla.
  2. El número mínimo de tablas en la base de datos.

Las desventajas comunes de TPH son:

  1. Redundancia de datos. Algunas columnas para ciertas clases de entidades contienen valores NULL y el número de estas columnas depende del número de clases en la jerarquía.
  2. La primera deficiencia define la segunda. La redundancia de datos conduce a violaciones de la integridad de los datos si los datos se han alterado manualmente.
  3. La dificultad de agregar y quitar nuevos objetos a/desde un modelo de objetos se debe a que necesita agregar o quitar columnas a/desde la tabla de resultados.

Consideremos ahora el legado de TPT. Este tipo de herencia significa que cada clase de entidad en la jerarquía corresponde a una tabla de base de datos. Entonces, después de generar el esquema, obtenemos las siguientes tres tablas:

sobre Artilugio mesa

GadgetIdEl vendedor
1nokia
2sony

sobre Teléfonos móviles mesa

ID de teléfono móvilFactor de forma
1monobloque

sobre netbooks mesa

ID de netbookResolución
21280 * 768

El Artilugio la mesa tiene asociaciones de 1:1 con ambos Teléfonos móviles y netbooks mesas.

Los principales beneficios de heredar TPT:

  1. Se mantiene la integridad de los datos. Todas las tablas del diagrama corresponden la tercera es una forma normal.
  2. Sin redundancia de datos.
  3. Flexibilidad en la modificación del modelo de objetos. Para agregar o eliminar un objeto, agregue o elimine la tabla correspondiente en / desde la base de datos.

Las principales desventajas de heredar TPT:

  1. La velocidad CRUD disminuye a medida que aumenta el número de clases en la jerarquía. Por ejemplo, las consultas SELECT contendrán cláusulas JOIN y su número será igual al número de clases en la jerarquía.
  2. Un gran número de tablas en la base de datos.

Hemos revisado las principales diferencias entre las jerarquías TPT y TPH, y ahora veamos los resultados de las pruebas de rendimiento. Para ambos tipos de jerarquía, calculamos el tiempo de los operadores de inserción/actualización/eliminación y selección. El número total de registros procesados ​​en las pruebas es de 200 mil. También realizamos pruebas similares para el modelo de Entity Framework, cuyos resultados se presentan en los diagramas a continuación.

Como puede ver, las operaciones CRUD se realizan más rápido, incluso si hay una pequeña cantidad de clases en la jerarquía, si se usa el legado de TPH. Tenga en cuenta también que LinqConnect realizó operaciones CRUD más rápido que Entity Framework y, en la mayoría de los casos, incluso el legado de TPT proporciona un mejor rendimiento que TPH en Entity Framework.

Artículos de interés

Subir