Espandendo ciò che James ha detto, i database delle applicazioni live tenderanno a essere costruiti per la velocità e per rigide regole aziendali per garantire l'integrità dei dati. È possibile conservare solo una piccola quantità dei dati totali in questi database in qualsiasi momento specifico (ad esempio gli ultimi 2 giorni di attività dei clienti) e l'attenzione è rivolta alla risposta rapida e all'integrità aziendale.
Un data warehouse è generalmente costruito per dimensioni, con molta meno attenzione alla velocità e / o all'integrità dei dati. In genere si tenta di archiviare tutto, l'idea è che non si sa di cosa si avrà bisogno quando lo si archivia. Questi sistemi non sono costruiti per la velocità, poiché la velocità su un sistema di quelle dimensioni sarebbe poco pratica senza investire milioni di unità di memoria e unità a stato solido. In quanto tali, non sono mai accessibili dalle applicazioni live dei clienti (perché sono così grandi che rallenterebbero queste applicazioni).
Invece sono costruiti per query che richiedono l'accesso a grandi quantità di dati per ottenere la risposta corretta. Una query su un data warehouse può richiedere da pochi secondi a pochi giorni, a seconda della complessità. Quando lavoravo in una banca, facevamo un sacco di domande per i progettisti di lungo periodo, per decidere quali clienti scegliere come target per la promozione del risparmio o per trovare il posto ideale dove mettere un nuovo sportello automatico. Una query di esempio su un data warehouse sarebbe qualcosa come dammi l'indirizzo di casa di ogni cliente con un conto corrente che ha effettuato l'accesso a uno di questi 10 bancomat tra il 2000 e il 2004 più di 3 volte a settimana per ritirare più di $ 10 . Questa query verrebbe eseguita letteralmente su miliardi di record (milioni di clienti, miliardi di interazioni ATM, ecc.) E potrebbe richiedere ore per essere eseguita.
Come costruisci il tuo database e quale software utilizzerai dipenderà in gran parte dal tipo di dati che stai raccogliendo.
Ad esempio se stai raccogliendo i log dalle tue applicazioni, allora ci sono software specializzati per una vasta raccolta di log, come Splunk e ElasticSearch
Se raccogli un host di dati diversi che non si allineano tutti in un modo curato, qualcosa come un cluster Hadoop . Hadoop funziona su semplici file di testo suddividendo i file su molte macchine e poi eseguendo piccoli programmi sui file di testo per raccogliere le informazioni desiderate. Hadoop è open source, ma ci sono molte aziende che hanno creato prodotti commercialmente supportati su Hadoop.
Ovviamente un data warehouse può semplicemente essere un grande database, come MySQL, PostgreSQL o Oracle. Questo potrebbe essere l'ideale se hai già tutti i tuoi dati formattati in tabelle relazionali. In questo caso copi semplicemente i tuoi dati nel tuo data warehouse. MySQL , Oracle e PostgreSQL tutti hanno caratteristiche specifiche su misura per l'esecuzione dei database come data warehouse in cui l'enfasi è sulla velocità. Un database commerciale specializzato nel data warehousing è Teradata .