IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Architecture de BDD


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Par défaut Architecture de BDD
    Nous souhaitons mettre en place une base de données SQL SERVER 2005 commune de référence ainsi que N bases de données clientes. Par contre, les tables des bases de données Clientes sont en relation avec celle de la base commune.
    Est ce possible?

    Le but est de mettre la base commune (qui contient des données de référence) sur un serveur séparé car elle sera stable au niveau taille. Les bases de données clientes pourront être n'importe où voire même distantes.

    il est indispensable de garder certaines relations entre les tables des bases de données pour l'intégrité des données.

    Si ce n'est pas possible, est-il possible de contourner le pb?
    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut je n'ai pas de réponse.
    Il est possible de faire référence à une table extérieur à une base de données dans une requête ( ex: SELECT * FROM Database.dbo.Table ).

    Par conséquent, je suppose que l'on puisse créer un trigger entre deux bases de données.

    Mais une relation entre deux tables appartenant à deux bases de données différentes, cela me parait chaud... il faudrait tester.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Par défaut
    C'est bien ce qu'il me semblait.
    je vais creuser quand même.
    Merci.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut solution.
    j'aimerais bien avoir des nouvelles de votre expérimentation.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Par défaut Résultats test
    Suite à quelques tests, une clé étrangère vers un champs d'une table d'une autre base de données n'est pas possible.

    Sql Server erreur:
    Les références de clés étrangères aux bases de données croisées ne sont pas prises en charge. Clé étrangère 'maBase.dbo.maTable'.

    Dans les procédures stockées, c'est possible de faire référence à une autre base de donnée.
    On peut aussi passer par une vue qui rappatrie des données de la base DB1 vers une vue contenue dans la base DB2. On peut ensuite faire des requêtes sur la vue mais toujours pas de contrainte possible avec les vues (logique!).

    Par contre, je ne comprends pas bien le principe de Cross Database.
    Si qqu'un peut m'éclairer.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Par défaut Architecture bis
    J'ai maintenant une autre question:
    Supposons qu'on ait une appli qui se connecte à une base de données. Cette appli est distribuée chez des clients. Prenons le cas assez conséquent de 1000 clients.
    Vaut-il mieux créer une BDD (dans la même instance) par client (1), ou mettre en commun les données de tous les clients dans une même base (2).

    (1) avantage : pour la maintenance d'un client en particulier
    Inconvénient : 1000 clients => 1000 BDD n'est ce pas trop lourd?

    (2) avantage : mise à jour sur une base unique (pour le (1), on peut générer des scripts lancés par l'appli qui viennent mettre à jour la BDD correspondante.)
    inconvénient : si une erreur apparaît dans un index par exemple, les 1000 clients sont bloqués.

    Que choisir?

    Merci.

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut sql serveur & 1000 bases de données.
    Je ne pense pas que le serveur soit etudie pour contenir 1000 bases de données, meme petite. Par contre, il est etudie pour une grosse base de 1000 clients.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 61
    Par défaut
    Salut,

    Pour ma part je suis entrain de creer un trigger qui met a jour une table en fonction d'une autre table située dans une autre base de donnée et ca fonctionne. Donc c'est possible avec des triggers!
    De plus mes bases de données sont situées sur deux serveurs ms server différents.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Par défaut
    Citation Envoyé par ylarvor
    Je ne pense pas que le serveur soit etudie pour contenir 1000 bases de données, meme petite. Par contre, il est etudie pour une grosse base de 1000 clients.

    d'après :
    http://msdn2.microsoft.com/en-us/library/ms143432.aspx
    On peut mettre 32767 bases dans une instance.

    Mon soucis est davantage sur les bonnes pratiques et une architecture correcte. Parce que dans les 2 cas, ça marche mais la phylosophie n'est pas la même. Par contre, je n'ai pas de recul sur quelle façon de faire est la mieux.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Par défaut
    Citation Envoyé par bibi_forever
    Salut,

    Pour ma part je suis entrain de creer un trigger qui met a jour une table en fonction d'une autre table située dans une autre base de donnée et ca fonctionne. Donc c'est possible avec des triggers!
    De plus mes bases de données sont situées sur deux serveurs ms server différents.
    Oui, ça marche mais mon premier problème de fond était sur de l'intégrite référentielle (foreign key) entre tables de différentes bases.
    La question pouvait paraître évidente mais on ne sait jamais.
    Maintenant, je sais que ce n'est pas possible.

    Merci.

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Vaut-il mieux créer une BDD (dans la même instance) par client (1), ou mettre en commun les données de tous les clients dans une même base (2).

    (1) avantage : pour la maintenance d'un client en particulier
    Inconvénient : 1000 clients => 1000 BDD n'est ce pas trop lourd?
    Absurde :
    a) chaque base contient des tables systèmes qui contienne la définition des tables, des colonnes, des procédures,des fonctions... Vous allez donc encombrer le disque et la RAM de choses identiques et redondantes.
    b) lorsque vous allez devoir modifier une table, une procédure une fonctio, il faudra donc mettre à jour 1000 bases !
    je vous souhaite bien du courage et un bon investissement dans l'humain !

    2) avantage : mise à jour sur une base unique (pour le (1), on peut générer des scripts lancés par l'appli qui viennent mettre à jour la BDD correspondante.)
    Evident : ce n'est pas la taille de la base qui a son importance mais le volume des données traitées...

    inconvénient : si une erreur apparaît dans un index par exemple, les 1000 clients sont bloqués.
    de quelle erreur parlez vous ? Je n'ai pas connaissance de l'existance d'erreurs d'index !!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Par défaut
    Ca conforte mon idée de départ.
    Il y a des concepts qui ne me sont pas venus à l'esprit (Taille en RAM, etc...).

    Pour l'erreur d'index, c'était un exemple. Je voulais parler d'erreur en général. Un fichier corrompu n'arrive pas qu'aux autres! Après, c'est une question de maintenance et d'administration, certe.


    En tout cas, merci de votre réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.1] Architecture serveur BDD
    Par fasyr dans le forum Administration
    Réponses: 7
    Dernier message: 08/07/2013, 12h00
  2. Centralisation des BDD : Quelle architecture choisir ?
    Par DjMID dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 11/07/2012, 23h30
  3. demande conseil sur architecture bdd
    Par halop dans le forum Administration
    Réponses: 2
    Dernier message: 16/07/2007, 15h52
  4. [HF9] Architecture BDD Hyperfile développée
    Par moabomotal dans le forum HyperFileSQL
    Réponses: 5
    Dernier message: 03/06/2006, 11h24
  5. [Architecture] BDD et poste client
    Par maminova77 dans le forum Général Java
    Réponses: 2
    Dernier message: 05/03/2006, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo