Eu tenho uma tabela que representa os valores de métricas arquivo de origem em todo revisões de projeto, como o seguinte:
Revision FileA FileB FileC FileD FileE ...
1 45 3 12 123 124
2 45 3 12 123 124
3 45 3 12 123 124
4 48 3 12 123 124
5 48 3 12 123 124
6 48 3 12 123 124
7 48 15 12 123 124
(A visão relacional dos dados acima é diferente Cada linha contém as seguintes colunas:.. Revisão, FileID, Valor Os arquivos e as suas revisões a partir do qual os dados são calculados são armazenados em repositórios Subversion, por isso estamos tentando representar o repositório de estrutura em um esquema relacional).
Não pode ser de até 23750 arquivos em 10000 revisões (este é o caso para o ImageMagick programa de desenho). Como você pode ver, a maioria dos valores são os mesmos entre revisões sucessivas, para que os dados úteis da tabela é bastante escassa. Eu estou procurando uma maneira de armazenar os dados que
- evita a replicação e utiliza eficientemente o espaço (actualmente a representação não-esparso requer 260 GB (dados índice +) para a menos de 10% dos dados que deseja armazenar)
- me permite recuperar de forma eficiente os valores para uma revisão específica utilizando uma consulta SQL (sem loop explicitamente através de revisões ou arquivos)
- me permite recuperar de forma eficiente a revisão para um valor de métrica específica.
Idealmente, a solução não deve depender de um determinado RDBMS e deve ser compatível com hibernação . Se isso não for possível, eu posso viver com o uso de Hibernate, MySQL ou funcionalidades específicas do PostgreSQL.













