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

Développement Web en Java Discussion :

Dilemme sur la gestion des tables


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut Dilemme sur la gestion des tables
    Bonjour !

    Développer un logiciel, c'est aussi faire des choix de conception.
    Avec mon manque d'expérience, je me permet de vous demander votre avis avant de me lancer dans une mauvaise direction...

    Voilà :
    Mon application gère une base de données avec de nombreuses tables et un grand nombre d'enregistrement. (environ 100 000)

    Sur une version précédente de mon application, (en langage Pascal, mono utilisateur sur un ordi), j'avais découpé ces enregistrements en fichiers distincts (un fichier par jour, soit environ 200 enregistrements par fichiers) pour accélérer les fonctions de recherche et éviter d'avoir des fichiers trops lourds à manipuler.
    En Pascal, et sans utiliser une base de donnée SQL, créer un nouveau fichier chaque jour sur son disque dur ne pose pas de problème, c'est rustique, mais facile et efficace.

    Avec JAVA et JPA, de nouveaux problèmes se posent :

    1) Est-il possible de créer "à la volée" c'est à dire de manière dynamique par le logiciel une nouvelle table ? (pour segmenter les enregistrements, mon application devra pouvoir créer une nouvelle table chaque jour...
    Comment faire ?

    2) Si je crée une seule table pour tous les enregistrements, comment va se comporter le système lorsque je vais commencer, au bout de plusieurs mois, à approcher les 50 000 fiches-clients, puis les 100 000 ? (lenteur sur les opérations CRUD, etc...)

    pour info, chaque fiche client fait un peu moins de 1Ko...

    Je n'ai pas trop idée de la puissance actuelle des ordis pour ce genre d'opération, en encore moins sur un web serveur qui tourne avec Glassfish !

    Merci de votre avis !!!

    Jean-Michel

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut
    1) Est-il possible de créer "à la volée" c'est à dire de manière dynamique par le logiciel une nouvelle table ? (pour segmenter les enregistrements, mon application devra pouvoir créer une nouvelle table chaque jour...
    Comment faire ?
    Oui, il te suffit de lancer la requête SQL idoine ("CREATE TABLE...") une recherche google pour avoir la bonne syntaxe et c'est bon. Il faut juste que l'utilisateur avec lequel tu te connectes à ta base ait les droits pour créer des tables. Par contre, c'est une TRES mauvaise pratique

    2) Si je crée une seule table pour tous les enregistrements, comment va se comporter le système lorsque je vais commencer, au bout de plusieurs mois, à approcher les 50 000 fiches-clients, puis les 100 000 ? (lenteur sur les opérations CRUD, etc...)
    Pour accélérer les recherches, tu peux indexer des colonnes de ta table. Ainsi, le temps de recherche augmentera de façon logarithmique en fonction du nombre d'éléments contenus dans la table.
    Au niveau des index, l'important est de savoir que ça accélère grandement les lectures mais ça ralentit les écritures (puisqu'il faut maintenir ces index). Si tu te retrouves à définir plus de 3 index sur une table, c'est que tu dois avoir des problèmes de design.

    Il faut voir aussi à quel moment tu écris dans ta base. Si c'est un batch de nuit, on se fout que ça mette du temps à écrire dans la base...

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Ok, merci des infos !

    Je pense utiliser une solution intermédiaire, à savoir création de 12 tables (une par mois) ce qui va répartir les données dans des fichiers à taille "humaines" tout en évitant la création de tables dynamiques

    Merci !

    Jean-Michel

    Sauf... Si quelqu'un a une autre idée

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut
    J'ai effectivement une autre idée

    Tu dois te renseigner sur les partitions.
    Je n'en ai personnellement jamais utilisé mais c'est particulièrement adapté à ton cas d'utilisation : découper une table en plusieurs parties de même volumétrie. ça évite de faire plusieurs tables ayant la même structure et ça simplifie donc la structure de ta base.

    Je pense qu'il te faut:
    - une table partitionée par mois ou par semaine.
    - un index sur les colonnes utilisées comme critère de recherche.

Discussions similaires

  1. question sur la gestion des css
    Par boustor dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/07/2006, 16h57
  2. Question pas difficile sur la gestion des listes dynamiques
    Par mulbek dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2006, 13h57
  3. Quelques questions sur la gestion des droits
    Par sylsau dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/03/2006, 14h11
  4. Question sur la gestion des fenetres MDI
    Par RémiONERA dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/07/2005, 07h58
  5. Gestion des Tables d'Object
    Par Laurent Dardenne dans le forum SQL
    Réponses: 27
    Dernier message: 17/04/2004, 12h39

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