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.