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

Optimisations SGBD Discussion :

Séparation des données client


Sujet :

Optimisations SGBD

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 15
    Points : 17
    Points
    17
    Par défaut Séparation des données client
    Bonjour,

    Voici le problème :

    Actuellement, nous gérons une base de données avec des tables dont certaines données peuvent être mutualisées à tous nos utilisateurs et d'autres spécifiques à certains utilisateurs.

    Grossièrement :
    Table A = données(client 1) + données(client 2) + données (global à tous les utilisateurs)

    Or, nous devons faire face de plus en plus à des problématiques telles que :
    - l'exportation et l'importation de données (problème d'id gérés avec auto_increment, complexité car nombreuses tables liées,etc.)
    - la synchronisation des données client entre deux bases de données qui évoluent distinctement (problèmes similaires au point précédent)
    - la mise à jour de nos propres données (mutualisées à tous nos clients) dans des bases de données dont le contenu diffère (mais reste tjrs sur un même schéma)

    Pour vous illustrer un problème :
    Nous gérons l'ensemble des données client sur nos serveurs (et donc par Internet).
    50% des utilisateurs d'un client ne peuvent qu'accéder à leur réseau intranet, 50% des autres à l'intranet et internet.
    Cela nous oblige donc à installer nos applications sur leur intranet,
    d'où les soucis évoqués précédemment pour synchroniser leurs données avec leur serveur intranet.

    S'il existe un peu de littérature ou des conseils sur ce genre de problématique, je suis preneur...
    Le gros du problème étant les conflits avec les identifiants uniques de nos lignes en bd.

    ps : pour le moment, j'ai dans l'idée de partir sur une gestion manuelle de ces fameux identifiants uniques auto incrémentés... mais vu le travail, je préfère prendre des précautions

    Merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    De plus experts que moi sauront mieux te répondre mais j'ai déjà vu un sujet similaire il y a pas mal de mois.
    Pour autant que je me souvienne, l'idée était que chaque BDD a ses propres identifiants et la BDD centralisée a en plus des colonnes stockant l'identifiant utilisé par le client et l'identifiant du client.

    Le client 'Dupont' est identifié par le numéro 1 dans la BDD centrale.
    Il utilise ses propres identifiants de 1 à n dans sa BDD.

    La BDD centrale importe les données du client A sous la forme du triplet {id_central, id_client, id_utilise_par_client} => 3672, 1, 1254 = la ligne 3672 d'une table de la BDD centrale qui est relative au client numéro 1 (donc 'Dupont') et à la donnée de la table correspondante chez le client et portant l'identifiant 1254 dans cette table.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Autre possibilité : l'intercalage de clefs. En gros sur n serveurs numérotés pour i allant de 0 à n-1, chaque table à une clef autoincrémenté dont les paramètres sont :
    • i modulo n pour la graine
    • n pour le pas

    Il n'y a ainsi aucun chevauchement de clefs.

    Autre solution : utiliser des bases de données réparties avec un système de communication comme service broker. Mais là il faut revoir toutes votre architecture de données.

    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/ * * * * *

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/10/2008, 22h31
  2. Réponses: 2
    Dernier message: 19/02/2008, 13h09
  3. Séparation des données et de l'interface dans access
    Par lakcil dans le forum Modélisation
    Réponses: 4
    Dernier message: 02/12/2007, 13h05
  4. Réponses: 2
    Dernier message: 25/09/2007, 16h53
  5. Réponses: 6
    Dernier message: 09/03/2007, 13h58

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