2012-09-17 11 views
12

Tutti, devo creare un singolo database che ha uno schema di base. Questo database sarà di grandi dimensioni (100 GB più) e dovrà essere utilizzato come data warehouse. Ora, la creazione di questo database viene attualmente eseguita in "one-hit" attraverso un codice C#; estrarre dati da un certo numero di fonti diverse. A causa del volume di dati, questa creazione sta causando alcuni problemi. È stato deciso che invece di creare un singolo database in una volta sola; aUnione di più database in un singolo database

  1. Creare diversi database più piccoli contenenti le tabelle di dati principali.
  2. Unisci i database più piccoli in un unico database più grande.
  3. Creare lo schema/aggiungere i vincoli pertinenti.

La mia domanda è duplice.

1. Qual è il modo migliore per unire più database (con schemi/strutture tabella identiche)?

2. Esiste un modo migliore per creare questo data warehouse (database di dimensioni estremamente grandi)?

Grazie per il vostro tempo.

+2

Perché la creazione di un database di grandi dimensioni causa problemi e perché non creare molti database di piccole dimensioni causa gli stessi problemi? –

+0

Per creare il database "grande" sono necessarie sei ore +. La maggior parte di questi dati per formare questo database viene estratta da altri database (a volte attraverso una rete). A causa della quantità di dati che possiamo ottenere si blocca sull'istanza del server che crea questo database. Questa è la ragione per tentare di modulare la procedura, quindi quando/se c'è un drop out non si finisce con un database corrotto. – MoonKnight

risposta

7

per la tua prima domanda: hai menzionato lo schema e la struttura della tabella identici, in tal caso, il suo semplice spostamento dei dati da una tabella DB (i.e DB più piccoli) a un altro (cioè un DB più grande). per questo devono garantire

1) non vi era alcuna duplicato dei dati (al-meno in campo PK)

dati 2) spostarsi da un db ad un altro per il server SQL si riferiscono

Transfer data from one database to another database

4

La risposta di sola è buona e funzionerà. Ecco un'altra alternativa: non unire affatto. Crea una vista unione-tutto in cima alle tabelle di base multiple create dall'importazione. Questo ti risparmia un sacco di movimento dei dati. Tale vista è chiamata partitioned view.

+0

Sono a conoscenza delle viste partizionate, tuttavia, il database del data warehouse deve essere autonomo. Questo database deve essere fornito al client come singola entità di database (possibilmente distribuita su più file .ndf ecc.).Devo essere in grado di automatizzare il processo di creazione del database, quindi il metodo suggerito da @sola non è uno che posso utilizzare. Grazie per il tuo tempo. – MoonKnight

6

SQL-Hub (http://sql-hub.com) consente di unire più database con lo stesso schema in un singolo database. Esiste una licenza gratuita che ti consente di eseguire questa operazione dall'interfaccia utente anche se potresti dover pagare una licenza se desideri pianificare l'esecuzione automatica del processo. Tuttavia, se ci sono grandi volumi di dati, potrebbe rivelarsi un po 'lento per quello che si vuole ottenere - si potrebbe provare comunque.

Ci sono anche alcuni articoli here che guardano alcune altre opzioni per questo tipo di problemi.

Problemi correlati