Escribo lo que será una aplicación de intranet, y una de sus características es más o menos análoga a la votación de contenido, como lo hacen SO, Amazon y muchos otros sitios.Almacenamiento de "votos" en una base de datos
Suponiendo que cada pieza de contenido VOTable tiene un identificador único, y cada usuario (que están autenticados) tiene un identificador único, la forma más fácil parecería ser la de tener una mesa de "útiles" ...
ContentID int
UserID int
VoteValue int
Pero esto crea una fila por voto: con millones de contenido y decenas de miles de usuarios, esa mesa será enorme. ¿Es esta la mejor manera de hacerlo? Quiero decir, si un int toma 4 bytes, cada fila toma 12 bytes. Si un millón de contenido obtiene cien votos, eso equivale a 400 MB más en almacenamiento, ¿no? Parece ... me gusta mucho :). Incluso si VoteValue es una minúscula (que probablemente esté bien) y solo 1 byte, todavía hay un par de cientos de megabytes en la tabla. Quiero decir Sheesh.
¿Hay alguna manera más inteligente? ¿Debería guardar esta tabla de "votos" en una base de datos separada (ignorando los posibles problemas de integridad de datos) para dividirla de los datos "principales" en términos de almacenamiento y rendimiento?
(hago cuenta de que en 400MB mundo de hoy no es una tonelada? -, pero parece como mucho sólo para almacenar votos, sí)