Bonjour,
Je travaille actuellement sur une grosse base de données (une quarantaine de tables, environ 250 Mo compressée)
Il s'agit de données historiques et prévisionnelles de production en provenance d'usines à destination de nombreux pays.
Les données proviennent de nombreux systèmes d'information différents, j'ai donc beaucoup de tables de raccordement permettant de regrouper tout ça.
Le schéma ci dessous résumé grossièrement son fonctionnement:
Tous les jours, une dizaine de fichiers textes sont importés via un formulaires dans mes tables. Pour améliorer la performance, j'ai décidé de stocker le résultat de ma requête regroupant toutes les données dans la "table 1" : 425 000 lignes, 20 champs.
J'ai aussi besoin d'afficher des regroupements sur ces informations, à une "maille" ou "échelle" moins fine, pour optimiser encore, je stocke les résultats de ces requêtes dans les tables 2, 3, 3bis et 4.
Toutes les informations dont j'ai besoin sont contenues dans ces tables que je dois afficher dans des formulaires.
L'utilisateur doit pouvoir naviguer facilement d'une "maille" à une autre, j'ai donc opté pour des onglets, avec une application des filtres appropriés lors du basculement d'un onglet à un autre.
(Le sous formulaire contenant la table 3 a un sous formulaire 3bis)
En local tout va plutôt bien. Ma requête "Mise à jour" que j'effectue une fois par jour tourne en 3 à 4 minutes, puis ensuite j'accède à toutes les données très rapidement dans les formulaires (2 secondes pour l'ouverture, ensuite c'est fluide et agréable à manipuler).
Le problème est que je dois distribuer ce formulaire en lecture à d'autres utilisateurs.
J'ai donc suivi les tutoriaux rencontrés sur developpez.net, à savoir couper ma base en deux avec d'un côté, les tables sur le réseaux avec les requêtes et formulaire nécessaires à la "mise à jour"
sur le bureau : une base avec les formulaires de consultation, et les tables 1, 2, 3, 3bis, 4 liées.
Or à chaque ouverture du formulaire consultation .... ça rammme. Beaucoup. J'aimerais bien faire en sorte que la base de données charge ces tables une bonne fois pour toute en locale, et qu'elle arrête de rafraichir les données en permanences car celles ci ne changent qu'une fois par jour. Existe t il des paramètres permettant cela ? (qu'est ce que la temporisation OLE/DDE, intervale d'actualisation etc?)
Cet découpage me pose un autre problème : La macro de mise à jour (permettant de regrouper les données brutes et d'alimenter les tables 1, 2, 3, 3bis, 4 ... Elle tournait en 3 minutes en loca. Sur le réseau de l'entreprise ... aïe .. je n'ai jamais eu le courage d'aller jusqu'au bout de son exécution.
N'est il pas possible d'exécuter celle ci sur le serveur ?
Je pense que je vais devoir opter pour une base de données découpée en 3. Une "Mise a Jour" en locale alimentant la base "Données" sur le réseau, et les bases "Consultation" en local.
Qu'en pensez vous ?
Merci d'avance pour votre aide,
Thomas
Partager