Abbiamo un data warehouse che memorizza i prezzi per i nostri prodotti. Una volta ogni giorno lavorativo, vengono aggiunti nuovi punti dati che rappresentano il prezzo giornaliero per ciascun prodotto. Sul sito web, un utente vede queste informazioni su una pagina caricata. Ci sono attualmente 7 prodotti; l'analisi mostra che la quantità di caricamento della pagina è di circa 100 al giorno.
Il server del sito Web è un server esterno del nostro centro dati. Il server del data warehouse è interno al nostro centro dati e ha altri dati critici (in tabelle diverse) non correlati e non dovrebbe essere accessibile al sito web.
Sono stati considerati i seguenti approcci:
-
Il data warehouse può spingere quotidianamente (SFTP) un file CSV contenente i dati giornalieri sul server web. Il server Web avrebbe un processo in esecuzione su un crontab ogni 15 minuti. Controllerebbe se il file fosse cambiato. In tal caso, aggiornerebbe il suo database con i dati. Quindi, al caricamento della pagina, il server Web interrogherà il suo database per ottenere i dati da visualizzare sulla pagina Web.
Di solito, la spinta sarebbe solo una volta al giorno, ma più di una spinta potrebbe essere possibile per comunicare (poco frequenti) le correzioni dei prezzi. Anche nello scenario di correzione dei prezzi, tutti i dati verrebbero consegnati nel file. Il processo di polling raccoglierà la modifica e sovrascriverà i dati nel database.
-
Il server Web potrebbe richiedere dati dal data warehouse usando JDBC o tecnologia di connessione SQL simile.
Tuttavia, sono stati espressi problemi di sicurezza. La preoccupazione è che, consentendo al server Web di accedere al nostro data warehouse, l'attacco di SQL injection o qualche altro attacco esterno attraverso il sito Web possa compromettere il data warehouse. Misure potrebbero essere messe in atto per ridurre il rischio, ma l'approccio più semplice e più sicuro è stato suggerito semplicemente per non permettere a nessun sistema pubblico di accedere direttamente al data warehouse. In altre parole, il data warehouse può stabilire una comunicazione con altri server (diciamo a SFTP il file), ma nessun server può avviare una connessione con il data warehouse. Queste preoccupazioni sembrano ragionevoli e difficili da mitigare?
-
È possibile creare un servizio Web e il server Web potrebbe chiamare il servizio Web ospitato nel nostro centro dati interno.
-
Un processo ospitato nel nostro centro dati interno potrebbe chiamare il server Web quando sa che il data warehouse ha i dati disponibili. Se sì, come dovrebbe essere fatto? HTTPS con qualche modo per impedire ad altri client non autorizzati di effettuare la stessa chiamata?
Quale dei suddetti approcci è il migliore o esiste un approccio migliore rispetto a quelli sopra elencati? Quali sono i pro e i contro in un approccio?