MySQL fazer update com histórico

11 respostas
mysql
F

Tenho um jar que fica enviando informações como “uso da cpu, uso do hd, ip” e afins em tempo real para meu servidor em NODE. Ele popula uma tabela, o problema é que muitos pcs executarão esse jar. Como posso fazer para que o MySQL identifique cada conexão com um ID, e caso tiver o mesmo ID, ele atualize apenas aquela entrada na tabela? Assim terei um banco de dados que atualiza em tempo real, e futuramente farei um dashboard e tal

Sobre o histórico: Acho que devo fazer outra tabela que fique registrando todas as entradas né?

11 Respostas

D

Stored procedures podem resolver.
Eu penso que, se você está logando informações, o ideal seria registrar tudo, numa tabela mais ou menos assim

ID | DataHora | TipoEvento | DescricaoEvento

Onde cada coluna é auto explicativa.

F

Darlan, no caso o que a tabela recebe é um JSON. Acho que seria

ID | DataHora | Json

Meu problema é: como fazer com que, por exemplo, o Computador 1 tenha sempre o ID 1, o Computador 2 o ID 2 e assim por diante, já que ele ficara atualizando em tempo real todas as informações

D

Você vai precisar determinar um id para cada equipamento, seja ip, mac address, o que seja.
O custo é o mesmo ou até menor que você, a cada novo registro, ler os dados, alterar o json e regravar, fazendo update.

F

Acho que posso colocar o ID como o IP dele, e assim toda vez que o ID for igual, ele faz o update daquela entrada. É isso?

D

Cara, se os ips são fixos, sim.
Porém, não seria interessante isolar as informações do equipamento em outra tabela e criar uma tabela só de eventos, onde cada evento está associado a um único equipamento e cada equipamento tem N eventos?

Tabela equipamento
ID | IP | Descricao | Blablablabla

Tabela eventos
ID | DataHora | Id_Equipamento | JSON

Pois isso vai impedir que você tenha um JSON enorme.
Lógico, isso depende de N fatores, incluindo, quanto tempo de registro você deseja ter armazenado num JSON e outros detalhes da tua implementação.

MongoDB não é opção?

F

Então, to aprendendo mais sobre banco de dados agora. Se você acha o MongoDB uma boa opção, vou dar uma estudada sobre ele e tudo mais. Esse BD vai enviar, posteriormente, as informações para um dashboard/app. Eu diria que o mais importante são os picos, por exemplo:
"Domingo passado, X máquina bateu 90% de processamento no momento blablaba"
Ele é realmente para monitoramento desses picos, se a máquina ta on e tal, apenas

E agora que você me lembrou bem, os ips não são fixos.

D

Então, dê uma olhada em mongodb e veja sobre modelagem NoSQL, afinal, muda muito, tanto conceitos como aplicação deles, quando falamos de bancos de dados orientados a documentos, como é o caso do mongo.
Se decidir optar pelo MySQL mesmo, sugiro que você siga o modelo que mais te agrada

F

Ao seu ver, cada equipamento teria uma tabela? Acho que não né

D

Não, você teria uma tabela que represente todos os equipamentos, cada qual teria seu ID (pdoe ser o ip ou mac) e outra para eventos de log.
Apenas isso. Duas tabelas.

F

Beleza Darlan! Vou dar uma estudada sobre todos os modelos e ver sobre o MongoDB. Já ouvi muito falar sobre ele mas nunca fui atrás, mas parece que ele vem agradando mta gente

D

Duas coisas me fazem sugerir mongo: o uso de json e você estar rodando um server com node.

Criado 25 de julho de 2018
Ultima resposta 25 de jul. de 2018
Respostas 11
Participantes 2