Domanda

Ho una grande quantità di dati che devo archiviare ed essere in grado di generare report - ognuno dei quali rappresenta un evento su un sito Web (stiamo parlando di oltre 50 al secondo, quindi chiaramente i dati più vecchi dovranno essere aggregati ).

Sto valutando gli approcci per implementarlo, ovviamente deve essere affidabile e dovrebbe essere il più semplice possibile ridimensionare. Dovrebbe anche essere possibile generare relazioni dai dati in modo flessibile ed efficiente.

Spero che alcuni SOer abbiano esperienza di tale software e possano formulare una raccomandazione e / o sottolineare le insidie.

Idealmente, vorrei distribuirlo su EC2.

È stato utile?

Soluzione

Wow. Stai aprendo un argomento enorme.

Alcune cose proprio dalla cima della mia testa ...

  1. pensa attentamente al tuo schema per gli inserti nella parte transazionale e legge nella parte del rapporto, potresti essere meglio tenerli separati se disponi di volumi di dati veramente grandi
  2. osserva attentamente la latenza che puoi tollerare tra i rapporti in tempo reale sulle tue transazioni e i rapporti aggregati sui tuoi dati storici. Forse dovresti avere un processo che viene eseguito periodicamente e aggrega le tue transazioni.
  3. esamina attentamente qualsiasi requisito che ti consenta di riferire attraverso i tuoi dati transazionali e aggregati, sia nello stesso rapporto o come un drill-down dall'uno all'altro
  4. prototipo con alcune query significative e alcuni volumi di dati realistici
  5. procuratevi una vera qualità di produzione, database pronto per l'azienda, ovvero Oracle / MSSQL
  6. pensa a utilizzare il codice / prodotto di qualcun altro per la segnalazione, ad es. Crystal / BO / Cognos

come ho detto, argomento enorme. Mentre penso a più continuerò ad aggiungere alla mia lista.

HTH e buona fortuna

Altri suggerimenti

@ Simon ha fatto molti punti eccellenti, ne aggiungerò alcuni e ne ripeterò / enfatizzerò alcuni altri:

  1. Utilizza il tipo di dati corretto per i timestamp - assicurati che il DBMS abbia la precisione appropriata.
  2. Prendi in considerazione l'accodamento per l'acquisizione di eventi, consentendo a più thread / processi di gestire l'archiviazione effettiva degli eventi.
  3. Separare gli schemi per il proprio magazzino transazionale e di dati
  4. Prendi seriamente in considerazione un ETL periodico dal db transazionale al data warehouse.
  5. Ricorda che probabilmente non avrai 50 transazioni / secondo 24x7x365 - transazioni di picco vs. transazioni medie
  6. Esamina le tabelle di partizionamento nel DBMS. Oracle e MSSQL partiranno entrambi su un valore (come data / ora).
  7. Avere una politica di archiviazione / conservazione dei dati fin dall'inizio. Troppi progetti iniziano a registrare i dati senza piani per rimuoverli / archiviarli.

Sono sorpreso che nessuna delle risposte qui riguardi Hadoop e HDFS - Suggerirei che è perché SO è un programmatore qa e la tua domanda è in realtà una questione di scienza dei dati.

Se hai a che fare con un gran numero di query e tempi di elaborazione elevati, utilizzeresti HDFS (un formato di archiviazione distribuito su EC) per archiviare i tuoi dati ed eseguire query batch (ovvero analisi) sull'hardware delle materie prime.

Dovresti quindi eseguire il provisioning di tutte le istanze EC2 necessarie (centinaia o migliaia a seconda della dimensione dei requisiti di compressione dei dati) ed eseguire la mappa per ridurre le code rispetto ai tuoi dati per produrre report.

Wow .. Questo è un argomento enorme.

Vorrei iniziare con i database. Per prima cosa, ottieni qualcosa di buono se hai una quantità folle di dati. Mi piacciono Oracle e Teradata.

In secondo luogo, esiste una differenza definitiva tra la registrazione di dati transazionali e il reporting / analisi. Metti i tuoi dati transazionali in un'area e poi arrotolali secondo una pianificazione regolare in un'area di reporting (schema).

Credo che tu possa affrontare questi due modi

  • Getta soldi per il problema: acquista i migliori software di classe (database, software di reportistica) e assumi qualche tecnico esperto per aiutarti

  • Adotta l'approccio familiare: costruisci solo ciò di cui hai bisogno in questo momento e fai crescere organicamente il tutto. Inizia con un semplice database e crea un framework per i report web. Ci sono molti strumenti open source di discesa e agenzie economiche che fanno questo lavoro.

Per quanto riguarda l'approccio EC2 .. Non sono sicuro di come si adatterebbe a una strategia di archiviazione dei dati. L'elaborazione è limitata ed è qui che EC2 è forte. Il tuo obiettivo principale è l'archiviazione e il ripristino efficaci.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top