Tenho pensado em soluções alternativas para acelerar a recuperação de dados do meu banco de dados. Atualmente, tenho um banco de dados relativamente grande, cerca de 1 bilhão de linhas e crescendo. Esperamos que o banco de dados cresça linearmente com cerca de 1,5 bilhão de linhas (300 GB) por ano. Meu banco de dados é PostGreSQL no FreeBSD.
O banco de dados contém dados do sensor de histórico que consistem simplesmente em um registro de data e hora, um valor numérico e 1 chave estrangeira para um sensor. Os dados nunca serão atualizados, apenas gravados e não são acessados com muita frequência.
Com essa quantidade de dados, não é possível manter tudo na memória, mas ainda quero uma recuperação rápida de dados, se possível. Atualmente, estamos pesquisando em quase 6ms por tempo de pesquisa de linha da tabela porque está tão espalhado pelo disco rígido que cada pesquisa tem tempo máximo de busca.
Tenho feito alguns testes em pequena escala com o armazenamento de dados em disco e isso parece MUITO mais rápido. Estamos analisando 1,8 s por dia do banco de dados versus 0,2 ms recuperando-o do disco (incluindo conversões de valor). Isso é quase 10.000x mais rápido.
O que leva à minha pergunta: existe algum motivo específico para não armazenar os dados do histórico como arquivos simples no disco se eu não me importar com a consistência da chave estrangeira?
Acho que você respondeu sua própria pergunta.
Se não houver necessidade de consistência de chave estrangeira e você estiver apenas lendo novamente esses dados, a diferença nos tempos de pesquisa será um argumento convincente para armazenar os dados do histórico como texto simples, em vez de em um banco de dados.