2012-09-17 14 views
12

Todo, tengo que crear una única base de datos que tenga un esquema básico. Esta base de datos va a ser grande (100 GB más) y se utilizará como almacén de datos. Ahora, la creación de esta base de datos se está realizando actualmente en "un solo golpe" a través de un código C#; extrayendo datos de varias fuentes diferentes. Debido al gran volumen de datos, esta creación está causando algunos problemas. Se ha decidido que en lugar de crear una sola base de datos de una vez; aCombinar bases de datos múltiples en una única base de datos

  1. Cree varias bases de datos más pequeñas que contengan las tablas de datos centrales.
  2. Fusiona las bases de datos más pequeñas en una sola base de datos más grande.
  3. Cree el esquema/agregue las restricciones relevantes.

Mi pregunta es doble.

1. ¿Cuál es la mejor manera de combinar varias bases de datos (con esquemas idénticos/estructuras de tablas)?

2. ¿Existe una forma mejor de crear este almacén de datos (base de datos extremadamente grande)?

Gracias por su tiempo.

+2

¿Por qué la creación de una gran base de datos causa problemas y por qué no crear muchas bases de datos pequeñas causa los mismos problemas? –

+0

Para crear la base de datos 'grande' toma seis horas +. La mayoría de estos datos para formar esta base de datos se extrae de otras bases de datos (a veces a través de una red). Debido a la gran cantidad de datos, podemos quedar bloqueados en la instancia del servidor que crea esta base de datos. Esta es la razón para intentar modificar el procedimiento, por lo que cuando/si hay un abandono no terminamos con una base de datos corrupta. – MoonKnight

Respuesta

7

para su primera pregunta: Ha mencionado esquema idéntico y estructura de tabla, en ese caso, simplemente está moviendo datos desde una tabla DB (es decir, DB más pequeña) a otra (es decir DB más grande). para este tiene que asegurarse de

1) no había duplicado de datos (AT-menos en campo PK)

datos 2) se mueven de un db a otro para el servidor SQL se refieren

Transfer data from one database to another database

4

La respuesta de Sola es buena y funcionará. Aquí hay otra alternativa: no fusionarse en absoluto. Cree una vista de unión completa en la parte superior de las tablas base múltiples que crea su importación. Eso le ahorra mucho movimiento de datos. Tal vista se llama partitioned view.

+0

Soy consciente de las vistas particionadas, sin embargo, la base de datos del almacén de datos debe ser independiente. Esta base de datos se debe proporcionar al cliente como una única entidad de base de datos (posiblemente distribuida en múltiples .ndf, etc.).Necesito poder automatizar el proceso de creación de la base de datos, por lo tanto, el método sugerido por @sola no es uno que pueda utilizar. Gracias por tu tiempo. – MoonKnight

6

SQL-Hub (http://sql-hub.com) le permitirá combinar múltiples bases de datos con el mismo esquema en una única base de datos. Existe una licencia gratuita que le permitirá hacer esto desde la interfaz de usuario, aunque es posible que deba pagar una licencia si desea programar el proceso para que se ejecute automáticamente. Sin embargo, si hay volúmenes muy grandes de datos, podría ser un poco lento para lo que quiere lograr; sin embargo, podría probarlo.

También hay algunos artículos here que analizan otras opciones para este tipo de problema.

Cuestiones relacionadas