Performance - SQL ou outra abordagem

E ae pessoal.

Estou com um problema aqui e queria discutir com vcs.

Vou fazer uma aplicação tipo servidor-cliente(s) em Java que precisa pegar umas variáveis de um outro computador que simula um enorme processo.

Esse ‘super-servidor’ é um terminal linux e a comunicação dele com meus terminais windows já é feita e atualmente existe um programa em C que escreve um arquivo .txt com as variáveis lidas do socket a cada 1s.

Funciona na moral até hoje, porém, para a nova aplicação eu terei de armazenar 3 minutos aproximadamente de cada variável, o que impossibilita esse esquema de ‘snapshot’ em .txt que o programa em C faz.

O que eu queria discutir com vcs é:

:arrow: É melhor, em termos de performance, eu fazer o C escrever em SQL (ou outro BD) e fazer o Servidor da minha aplicação em Java ler desse banco ou por exemplo manter a escrita do C da maneira que está e armazenar a cada 1s em vetores no java por exemplo (podem chamar de gambiarra se quiserem)?

Ou uma outra abordagem que vcs pensem, não sei bem as possibilidades, mas por exemplo, fazer um enorme .txt, que ao invés de ser apagado quando o C escreve, ele ser expandido com 180 valores para cada variável.

É o tipo de coisa que não aparece sempre e, então, eu nunca tinha me deparado com coisas assim…

O que vcs fariam?

São umas 100 variáveis aproximadamente, das quais uns 35% são strings (‘aberta’, ‘fechada’, ‘partida’, ‘parada’) que vem de booleanos (o programa em C checa 1 ou 0 e escreve a string correspondente) e o resto é em geral números do tipo 256.78 (truncados em 2 casas decimais, mas naturalmente com 4).

Eu confesso não saber o peso disso em memória caso fossem criados vetores no Java.

Mas essa abordagem economizaria re-escrita de código do C, assim como ficaria mais fácil de distribuir, não necessitando de nenhuma instalação extra (apenas o Java mesmo).

Tenho uma certa pressa nessa decisão porque não importa o que seja decidido, vou ter que estudar mais sobre o assunto mesmo :wink:

Valeu!