1 votes

Comment diviser une BD en deux dans SQL Server 2008 ?

Dans mon projet, j'ai une seule base de données utilisée pour tout. Je veux qu'elle soit divisée en deux bases de données. Les tables statiques ayant des valeurs de consultation seront stockées dans une base de données et l'autre base de données contiendra des tables avec des données dynamiques. Mon problème est de savoir comment utiliser la contrainte de clé étrangère entre ces deux bases de données. Quelqu'un peut-il m'aider et me suggérer une façon de procéder, mieux si on me fournit un exemple pour la même chose.

J'ai pensé utiliser des synonymes pour les tables et ensuite des contraintes sur les synonymes. Mais plus tard, j'ai appris que les synonymes ne pouvaient pas être utilisés pour les contraintes.

J'ai besoin de maintenir les relations entre les tables des deux bases de données car le problème est la mise à jour, avec une nouvelle version je veux juste mettre à jour les tables de consultation et pour la même chose je veux diviser ma base de données.

5voto

Randy Points 3196

Robin :

Si vous souhaitez séparer physiquement les données volatiles et statiques, je vous suggère de vous pencher sur l'option groupes de fichiers caractéristique. (Faites défiler la page jusqu'au milieu de cette page web pour accéder aux informations pertinentes).

Les groupes de fichiers vous permettent de regrouper des tableaux. Cela vous permet de contrôler plus facilement leur emplacement physique (les données souvent utilisées peuvent être placées sur un SSD rapide et les autres données sur des disques durs plus lents, par exemple), de contrôler l'accès en lecture/écriture (un groupe de fichiers peut être marqué en lecture seule) et d'améliorer les schémas de sauvegarde/restauration (un groupe de fichiers peut être sauvegardé ou restauré). Étant donné que toutes les tables se trouvent dans la même base de données, indépendamment du groupe de fichiers, l'intégrité référentielle déclarative (DRI, également connue sous le nom de "clés étrangères") fonctionne toujours.

Si vous insistez pour utiliser des bases de données différentes, vous ne pourrez pas utiliser les clés étrangères et devrez utiliser une autre méthode. Cela signifie que vous devrez écrire vos propres déclencheurs (ou peut-être vos propres procédures). Écrire votre propre code signifie un travail supplémentaire, il y a toujours la possibilité de bogues dans ce code et les déclencheurs sont généralement moins performants que les DRI. L'utilisation de bases de données différentes présente d'autres aspects négatifs, dont les plus évidents sont la sécurité (vous aurez deux fois plus de choses à gérer) et la récupération à un moment donné (il est plus difficile d'obtenir une cohérence entre deux bases de données qu'entre une seule). Ces aspects peuvent ne pas sembler importants aujourd'hui, mais :

  1. Il est plus facile de faire les choses correctement aujourd'hui que de les réparer. plus tard.
  2. Il est préférable d'acquérir de bonnes habitudes.

2voto

TomTom Points 50635

Laissez-moi vous dire que vous êtes désemparé et que vous n'avez aucune idée de ce que vous voulez.

Vous voyez, la taille du serveur sql est un problème - soit en express lorsque vous atteignez la limite stricte de 10gb, soit sur un "vrai" serveur lorsque vous atteignez - aucune idée, peut-être 10000gb ou plus.

Vous ne pouvez rien faire et seulement ajouter de la complexité (les clés étrangères ne fonctionnent pas, il faut les remplacer par des triggers). Si c'est deux bases de données, alors vous ne pouvez rien faire, si c'est deux serveurs, vous ajoutez la latence et une tonne d'autres problèmes.

Je commencerais par supposer que l'exigence que vous présentez ici n'est pas valable. Pourquoi pensez-vous qu'il y a un besoin pour cela ?

J'ai une base de données de près de 1000 Go à la maison et aucun problème de taille.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X