Cinco consejos para usar tablas de bases de datos grandes en Mendix

Dirigir

En este artículo, quiero compartir algunas lecciones aprendidas al tratar con proyectos con tablas de bases de datos grandes. Primero, definamos el significado de tablas grandes en Mendix.

 

Tablas grandes = más de un millón de filas

En nuestro caso, tenemos 100 millones de filas. Lo más importante es que esta tabla es muy activa. Cada día se insertan casi un millón de filas. Una vez que las tablas del proyecto alcancen este tamaño, debe comenzar a pensar en cosas de las que no tenía que preocuparse antes. Los pequeños cambios (como agregar nuevos atributos booleanos) pueden tener un impacto significativo en el rendimiento de la aplicación. Los siguientes son cinco consejos basados ​​en la experiencia de colegas y amigos de Mendix, bienvenidos a comunicarse.

Consejo 1: use lotes

Esto es obvio, incluso recomendado por Mendix. La ejecución de lotes en transacciones independientes también puede ayudar (consulte Iniciar y finalizar transacciones). Además, no olvide probar el tamaño del lote. En nuestro ejemplo, 100 es el número mágico.

 

Consejo 2: Reemplace UUID con SnowflakeID

El Identificador Único Universal (UUID) es un número de 128 bits que se utiliza para identificar información en el sistema de la calculadora.

https://en.wikipedia.org/wiki/Universally_unique_identifier

Además del ID interno generado por Mendix, el UUID se utiliza a menudo como identificador de objeto. La ventaja de los UUID es que pueden ser generados / enviados por sistemas externos. Estos UUID se pueden utilizar para vincular objetos entre sí o hacer referencia a objetos de sistemas externos.

Desafortunadamente, a diferencia de la mayoría de los esquemas de bases de datos, Mendix no admite tipos especiales de UUID. Por lo tanto, el UUID se almacena como una cadena, lo que no es muy eficiente en términos de memoria. Pero lo que es más importante, indexar y recuperar cadenas es de 2 a 5 veces más lento que el tipo de UUID equivalente (PostgreSQL).

La solución que buscamos es reemplazar UUID con SnowflakeID. Estos son ID únicos similares a los UUID, pero solo 64 bits (en lugar de los 128 bits del UUID). Esto significa que se pueden almacenar en columnas bigint (enteros largos). Esto ha aumentado la velocidad de recuperación de datos en nuestro proyecto en un promedio de 10 veces.

 

Consejo 3: las nuevas entidades + enlaces suaves pueden ser mejores que agregar atributos

Agregar nuevos atributos a tablas grandes puede causar problemas. Especialmente cuando desea establecer nuevas propiedades fuera del proceso principal para actualizar filas en una tabla grande, esto puede causar problemas de bloqueo de la base de datos y degradación del rendimiento. Este peligro puede eliminarse mediante enlaces blandos.

A diferencia de las asociaciones (enlaces duros) compatibles con las restricciones de la base de datos, los enlaces blandos se realizan solo por su nombre y uso.

http://beurive.com/dbview_def_fk.html

 

Tenga en cuenta que los enlaces blandos hacen que la aplicación sea más complicada porque no admiten la recuperación por asociación. Esto afecta especialmente al diseño de la página, que requerirá algo de creatividad y vistas de datos / NPE (objetos no permanentes) adicionales para su construcción. Utilice los enlaces blandos con moderación solo cuando sea necesario.

 

Consejo 4: la enumeración es mejor que la booleana

Los valores booleanos son un tipo de datos especial en Mendix porque son el único tipo de datos sin valores nulos. Esto se convierte en un problema al agregar nuevas columnas booleanas a tablas grandes. Cada fila de la tabla debe inicializarse en verdadero o falso, lo que puede llevar mucho tiempo (horas). La solución es usar enumeraciones en su lugar y hacer coincidir los valores predeterminados con valores nulos.

 

Consejo 5: actualice el esquema de la base de datos en Mendix Cloud

Inevitablemente, tendrás que cambiar el modelo de dominio o actualizar / migrar datos en Mendix. Cuando este cambio afecta a tablas grandes, la actualización de la base de datos puede llevar mucho tiempo. Mendix establece un límite de aproximadamente 10 minutos para el inicio de la aplicación, que incluye actualizaciones del esquema de la base de datos y microflujos después del inicio. Esto significa que si se necesitan más de 10 minutos para actualizar el esquema de la base de datos + iniciar el microflujo, su aplicación no se iniciará o incluso dañará su base de datos.

Por lo tanto, si desea que el proceso de inicio demore más de 10 minutos, comuníquese con el soporte de Mendix y pídales que desactiven temporalmente el tiempo de espera. Luego puede proceder a implementar su aplicación.

Esperamos que disfrute de la lectura de este artículo, que puede ayudarlo a crear excelentes aplicaciones.

¡Hazlo!


Para obtener más información, visite el siguiente enlace:

Sitio web oficial de Mendix: https://www.mendix.com/zh/

Soluciones industriales de Mendix: https://solutions.mendix.com/

Guía de la plataforma Mendix: https://www.mendix.com/evaluation-guide/

Pantalla de animación de Mendix: https://www.mendix.com/demos/

Cuenta pública Mendix

 

¡gracias por leer!

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/Mendix/article/details/114695012
Recomendado
Clasificación