Estoy trabajando en el diseño de un proyecto de RoR para mi empresa, y nuestro equipo de desarrollo ya se ha enfrentado a un debate sobre el diseño, específicamente la base de datos.
Tenemos un modelo llamado Message
que debe persistir. Es un modelo muy, muy pequeño con solo tres columnas de db además de la identificación, sin embargo, es probable que haya MUCHOS de estos modelos cuando entremos en producción. Estamos viendo hasta 1,000,000 de inserciones por día. Los modelos solo serán buscados por dos claves externas en ellos que se pueden indexar. Además, los modelos nunca tienen que eliminarse, pero tampoco tenemos que conservarlos una vez que tienen unos tres meses.
Entonces, lo que nos preguntamos es si la implementación de esta tabla en Postgres presentará un problema de rendimiento significativo. ¿Alguien tiene experiencia con bases de datos SQL muy grandes para decirnos si esto será un problema o no? Y si es así, ¿con qué alternativa deberíamos ir?
fuente
Respuestas:
Las filas por tabla no serán un problema por sí mismas.
Entonces, aproximadamente, 1 millón de filas al día durante 90 días son 90 millones de filas. No veo ninguna razón por la que Postgres no pueda lidiar con eso, sin conocer todos los detalles de lo que está haciendo.
Dependiendo de su distribución de datos, puede usar una combinación de índices, índices filtrados y particiones de tablas de algún tipo para acelerar las cosas una vez que vea qué problemas de rendimiento puede tener o no. Su problema será el mismo en cualquier otro RDMS que yo conozca. Si solo necesita 3 meses de diseño de datos en un proceso para eliminar los datos, no necesita más. De esa manera, tendrá un volumen constante de datos sobre la mesa. Tiene suerte de saber cuántos datos existirán, pruébelos para su volumen y vea qué obtiene. Probar una tabla con 90 millones de filas puede ser tan fácil como:
https://wiki.postgresql.org/wiki/FAQ
fuente
Otra forma de acelerar significativamente sus consultas en una tabla con> 100 millones de filas es en las horas de inactividad agrupar la tabla en el índice que se usa con más frecuencia en sus consultas. Tenemos una tabla con más de 218 millones de filas y hemos encontrado 30 veces mejoras.
Además, para una tabla muy grande, es una buena idea crear un índice en sus claves externas.
fuente