Buscar este blog

lunes, 12 de junio de 2023

Checklist DBA - 15 sugerencias que considerar al planificar las bases de datos en cualquier proyecto.

 

Si formás parte de la etapa inicial de cualquier proyecto que incluya el uso de bases de datos, esta publicación es de tu interés.

Por medio de la misma tendrás un listado de consideraciones y sugerencias relacionadas con Bases de Datos que debés tener en cuenta para que tus bases de datos cumplan su función de modo efectivo seguro y perfomante.

 

 

Identificar las necesidades del negocio

Estar seguros de comprender las necesidades y requisitos específicos del negocio para asegurarse de que la base de datos cumpla con ellos.

 

Seleccionar la plataforma de base de datos adecuada

Seleccionar la plataforma de base de datos adecuada.

Funcionalidad, escalabilidad, seguridad y costo son ítems para ponderar previo a esta selección.

 

Diseñar la arquitectura de la base de datos

Crear un diseño lógico y físico de la base de datos, incluyendo la estructura de tablas, relaciones, claves primarias y secundarias, y otros elementos necesarios.

Se deberán aplicar principios de normalización para evitar redundancia de datos y mantener la integridad de la información.

Para lograr objetos de base de datos bien definidos y performantes, es mandatorio relevar y analizar toda la data que vaya a formar parte de nuestro sistema, solicitando al cliente, de ser posible, un modelo real de cada dato, flujogramas y DER (si existiesen estos dos últimos).

Sólo una vez analizada en detalle la información recolectada, estaremos en condiciones de crear los objetos de bases de datos óptimos en su estructura, definición, relación, normalización, y tipo de dato apropiado.

 

Considerar el rendimiento y la performance

Diseñar la base de datos teniendo en cuenta el rendimiento, optimizando consultas, índices y configuraciones para garantizar una buena respuesta y escalabilidad

 

Establecer estándares de codificación y nomenclatura

Establecer estándares de codificación y nomenclatura para mantener la consistencia y facilitar el mantenimiento de la base de datos a largo plazo.

 

Definir la versión y edición del motor de base de datos

Sql server 2019 es hoy en día la versión homologada por GYF sugerida por ser la más sólida y avanzada del motor de base de datos de Microsoft.

Otras versiones alternativas son SQL 2017 y SQL 2016, si bien debe tenerse en cuenta que el soporte de Microsoft se extiende sólo por 10 años. En relación a la edición a utilizar yo recomiendo como mínimo la “Standard”

 

Documentar la base de datos

Crear documentación detallada sobre la estructura de la base de datos, diagramas ER, diccionario de datos y cualquier otra información relevante.

 

Establecer un plan de migración de datos existentes

Si hay datos existentes que deben ser migrados a la nueva base de datos, planificar y ejecutar el proceso de migración de datos de manera efectiva y precisa.

 

Solicitar el servidor de base de datos teniendo en cuenta:

De modo óptimo es aconsejable solicitar al cliente un servidor “dedicado”, (de uso exclusivo), para nuestra aplicación.

Si no es posible contar con un servidor dedicado, solicitar una instancia exclusiva del motor de base de datos con el objetivo de disponer del uso único del procesador, la ram y demás componentes asignados al mismo.

Si debemos compartir servidor y/o instancia de motor de base de datos, hemos de tener en cuenta que los componentes críticos de los cuales dependerán una parte importante de la performance de nuestros aplicativos serán, esencialmente, la memoria y los discos.

La memoria RAM a solicitar será de entre 64 gb y 128 gb para instancias de servidores de base de datos compartidos, variando estos valores a 32 gb y 64 gb para instancias dedicadas.

En lo que hace a disco sugerimos requerir al menos 3 unidades adicionales a la unidad ROOT (“C:”), con el objetivo de distribuir convenientemente la lectoescritura sobre los archivos de datos, log y TempDb.  

Es muy importante adicionalmente contar con el detalle del tipo y velocidad de transferencia de los discos productivos ofrecidos por el cliente, sumando al mismo el detalle del procesador. Estos datos deberán ser validados por nuestro Líder IT.

 

Considerar la capacidad de crecimiento

Prever el crecimiento futuro de la base de datos y asegurarse que la estructura y configuración sean escalables para soportar nuevas necesidades.

Se aconseja relevar la información que permita estimar la cantidad de espacio que habrán de utilizar nuestras bases de datos en un espacio de tiempo no menor a dos años.

Para ello deberá ponderarse la suma del peso de los registros de las tablas principales del sistema multiplicada por la cantidad de registros diarios previstos y luego extrapolar esa cifra a 24 meses.

 

Planificar una estrategia de pasaje a histórico de datos

La planificación de la estrategia de pasaje a histórico de la data correspondiente a las estructuras transaccionales principales debería ser ejecutada en esta etapa. De este modo se garantizará la sustentabilidad operativa del sistema y su buena performance conforme al paso de los años.

Si bien hay distintas estrategias para la tarea, el particionamiento de las tablas principales transaccionales del sistema debiera ser considerado como la estrategia de mejor resultado y facilidad de implementación.

 

Disponer de un ambiente dedicado a consultas

El diseño de las bases de datos debería contemplar desde su génesis objetos, (base de datos, tablas, vistas, sps), exclusivamente dedicados a proveer a las consultas del sistema.

Así objetos transaccionales no debieran ser origen de consultas o listados asegurando en consecuencia la correcta operatividad transaccional y la buena performance de las consultas y listados del sistema.

 

Establecer un plan de mantenimiento regular

La performance de un sistema suele ser el talón de Aquiles de este y el issue que más horas de soporte correctivo requiere.

Para asegurar un sistema performante más allá del paso del tiempo, es vital exigir al cliente la implementación de una rutina de mantenimiento de índice y estadísticas.

La inevitable degradación de ambos componentes relacionados estrechamente con la performance de nuestros procesos puede ser reducida al mínimo con la implementación temprana de las mencionadas rutinas.

 

Definir políticas claras de seguridad

Se deben establecer y consensuar con el cliente las políticas de seguridad para proteger la base de datos y los datos almacenados en ella, incluyendo el acceso a usuarios, roles y permisos.

 

Planificar una estrategia de respaldo y recuperación de datos

Se deberá definir y consensuar con el cliente un plan de respaldo regular de la base de datos y un proceso de recuperación en caso de fallos o pérdida de datos.