Esto es más una pregunta conceptual. Está inspirado en el uso de una tabla extremadamente grande donde incluso una simple consulta lleva mucho tiempo (correctamente indexada). Me preguntaba si hay una mejor estructura que dejar que la mesa crezca, continuamente.Cómo estructurar una tabla extremadamente grande
En general me refiero a más de 10,000,000 de registros que crecen todos los días en algo así como 10,000/día. Una mesa como esa alcanzaría 10,000,000 de registros adicionales cada 2,7 años. Digamos que los registros más recientes son los accesos más, pero los más antiguos deben permanecer disponibles. Tengo dos ideas conceptuales para acelerarlo.
1) Mantenga una tabla maestra que contenga todos los datos, indexados por fecha en orden inverso. Cree una vista separada para cada año que contenga solo los datos de ese año. Luego, cuando consultemos, y digamos que se espera que la consulta extraiga solo unos pocos registros de un lapso de tres años, podría usar una unión para combinar las tres vistas y seleccionarlas.
2) La otra opción sería crear una tabla por separado para cada año. Luego, una vez más usando una unión para combinarlos al consultar.
¿Alguien más tiene alguna otra idea o concepto? Sé que este es un problema que Facebook ha enfrentado, entonces, ¿cómo crees que lo manejaron? Dudo que tengan una sola tabla (status_updates) que contenga 100,000,000,000 de registros.
¿Cuáles son las frecuencias relativas de todo este acceso? ¿Con qué frecuencia necesitaría una unión real de datos anuales? E incluso si necesitara una unión, ¿por qué no combinaría los datos * fuera de la base de datos para evitar los gastos generales de la unión? –
¿Puede decirnos el número (y tipos) de campos que tiene la tabla? –