Este documento presenta una charla sobre cómo optimizar las capas de acceso a datos en aplicaciones .NET. Se discuten diferentes tipos de acceso a datos, patrones y arquitecturas como ORM. También se analizan las librerías y métodos clave involucrados en el acceso a datos y se ofrecen consejos para el profiling y optimización de aplicaciones .NET. La charla concluye instando a los desarrolladores a identificar áreas de mejora mediante el análisis de profiling.
8. #dotNetSpain2016
Tipología de
acceso
Por conjuntos Por cursores
Patrones de
bajo nivel
Dinámico
Adhoc
Parametrizable
Estático
Stored
procedures
Arquitecturas
Modelo
conectividad
Conectada
Desconectada
Modelo de
desarrollo
Manual
ORM
9. #dotNetSpain2016
Fundamentos
• Tiempo de desarrollo
• Diferencia de roles
• Desarrollador vs. DBA
• Independencia de la
aplicación
• Uso de modelo de
datos
• Abstracción de servidor
de base de datos
Másmotivos
• Rechazo a T-SQL
• Manejo de cadenas
para acceso a datos
• Errores en tiempo de
ejecución vs.
Compilación
• Uso de lenguajes más
familiares
• Es más “cool”
10.
11.
12. #dotNetSpain2016
Librería Método ¿Qué hace?
Query.PlanCompiler.Pl
anCompiler
Compile(cqt.DbCommandTree ctree, …….) Compila query hacia SQL Server. Coste de
compilación. Aquí generalmente es donde
debemos poner esfuerzos en optimizar linq
Objects.Elinq.Compile
dELinqQueryState
GetExecutionPlan(MergeOption? forMergeOption) Obtener plan de ejecución ya compilado
previamente
Objects.Elinq.ELinqQu
eryState
GetExecutionPlan(MergeOption? forMergeOption) Obtener plan de ejecución todavía no compilado
Objects.ObjectQuery
<T>
GetResults(MergeOption? forMergeOption) Obtiene datos. Incluye datos GetExecutionPlan,
Compile y el coste de materializar incluido. Es el
coste total
17. #dotNetSpain2016
• Evita procesados fila a fila
Capas de acceso
a datos
• La estructura de datos importa, no es
todo BBDD
Complejidad
algorítmica
• Centra el tiro a donde esté el
problema
Profiling de una
aplicación .NET
• Ya no estamos en los 90. Hasta tu
móvil tiene 8 núcleos
Consideraciones
de concurrencia
18. No olvides realizar la encuesta
¡Gracias!
#dotNetSpain2016
Enrique Catalá Bañuls
Mentor SolidQ (www.solidq.com)
ecatala@solidq.com | @enriquecatala
http://aka.ms/DOTNETT6S4