Progettazione dello schema del database del log di stato in esecuzione sul server

1

Sto lavorando con 4 istanze di AWS EC2 (server). Ogni istanza ha ID istanza e Nome istanza. L'ID istanza è unico. Ognuno di loro ha più server di applicazioni, come su di essi è in esecuzione server PUMA e un altro è in esecuzione NGINX e così via. Voglio memorizzare lo stato di esecuzione delle istanze e dei relativi server delle applicazioni in un database.

Come, se Instance A è in esecuzione o meno, posso passare continuamente alla porta esposta al secondo e memorizzarla nel database. Lo sto scannerizzando ogni minuto. Ci saranno 3 colonne a cui posso pensare in questo momento,

Instance ID    Running Status   Time

Instance A        Running        10:10:04
Instance A        Running        10:11:04
Instance A        Running        10:12:04

Successivamente, voglio memorizzare lo stato se Application Server all'interno dell'istanza A è in esecuzione o meno. Ci saranno 3 colonne a cui posso pensare in questo momento,

Diciamo che PUMA e NGINX sono in esecuzione in Instance A

Istanza A: -

Application Name   Running Status   Time

PUMA                  Running       10:10:20
NGINX                 Running       10:10:30
PUMA                  Running       10:11:21
NGINX                 Running       10:11:30

Sto usando Postgresql. Quale sarà la progettazione dello schema consigliata? Devo creare una tabella per ogni istanza e come mapperò le applicazioni con quella particolare istanza? Se prendo Instance ID come chiave primaria, non è possibile duplicare i valori in quella colonna.

    
posta codeclue 08.01.2018 - 11:45
fonte

1 risposta

1

Qualunque cosa tu faccia, non dovresti certamente creare una nuova tabella per ogni istanza.

La soluzione più semplice sarebbe semplicemente non usare l'ID istanza come chiave primaria e invece avere una chiave primaria autogenerata e un indice sull'ID dell'istanza:

ID    Instance    Status     Time

1     A           Running    10:10:04
2     A           Running    10:11:04
3     A           Running    10:12:04
4     B           Running    10:10:04
5     B           Running    10:11:04
6     B           Running    10:12:04

E usa una tabella delle applicazioni separata che fa lo stesso:

ID    Instance    Application   Status     Time

1     A           PUMA          Running    10:10:20
2     A           NGINX         Running    10:10:30
3     A           PUMA          Running    10:11:21
4     A           NGINX         Running    10:11:30
5     B           PUMA          Running    10:10:20
6     B           NGINX         Running    10:10:30
7     B           PUMA          Running    10:11:21
8     B           NGINX         Running    10:11:30

Etc ...

    
risposta data 08.01.2018 - 14:23
fonte

Leggi altre domande sui tag