Sto riscrivendo un sito Web che dispone di un database di back-end per contenere i meta-dati che vengono visualizzati all'utente quando inseriscono un codice di testo.
Sfondo :
Il sistema vecchio / esistente memorizzava questi dati in file XML con un file XML di indice principale che puntava il file di dati corretto in base a un GUID. Il modo in cui questo viene attualmente gestito per la pubblicazione in produzione è che tutte le modifiche vengono eseguite in un ambiente di "staging" con i file memorizzati su Cloudfront in una cartella "staging". Quando vogliono apportare modifiche alla produzione, semplicemente copiano il file da "staging" a "production".
Ho aggiornato il sistema per utilizzare un RDB (Postgres localmente e sarà Aurora su AWS per la produzione). Sto usando Java per l'API con annotazioni JPA e Spring Boot. Ho un'app UI di amministrazione Java separata che gestisce i meta-dati e un'applicazione utente separata che è il sito Web in Angular. Il proprietario del prodotto vuole ancora essere in grado di testare le modifiche in ambienti meno recenti prima di pubblicarle sulla produzione.
Domanda :
Stavo cercando di trovare una soluzione per la pubblicazione e stavo pensando che potrei avere solo un env staging e un ambiente di produzione. Un collaboratore ha affermato che forse l'App di gestione temporanea punta in genere all'API di gestione temporanea, ma al momento della pubblicazione, fare in modo che punti l'API di produzione e non disporre di un'app di amministrazione di produzione. Il problema che sto incontrando sono le chiavi primarie. Non è possibile specificare la chiave primaria in JPA e farla generare automaticamente se non esiste. Ho provato diversi modi per farlo e si rompe se provo a inserire 1, 3, 2.
Qualcuno ha qualche consiglio su come gestire questa situazione? Trasferisci dati da un RDB a un altro RDB in un ambiente diverso mantenendo intatte tutte le relazioni.