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

Persistance des données Java Discussion :

ORM et division en tables multiples


Sujet :

Persistance des données Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut ORM et division en tables multiples
    Bonjour,

    Actuellement je travaille sur un projet où pour des raisons de performances nous avons été obligés de scinder une table d'environ 90 millions de lignes/350Go en plusieurs sous tables identiques, indicées par un identifiant numérique (p.ex. table1, table2...). Pour le moment ce projet est réalisé avec JDBC, mais les requêtes SQL deviennent trop nombreuses pour pouvoir être facilement maintenues. D'où notre souhait de passer à un ORM.

    Mon gros problème: les systèmes d'annotations et de configuration XML ne permettent pas de prendre en compte des entitées créés dynamiquement (p.ex une nouvelle entitée Table2 qui serait mappée sur table2, qui serait créée lorsque table1 serait "pleine"). J'ai bien trouvé la fonctionnalité de configuration dynamique d'EclipseLink 2.1 mais je n'en suis pas totalement satisfait.

    Je suis relativement débutant en termes d'ORM et je n'ai utilisé JPA que pour des projets simples. Donc question aux experts: quel ORM utiliser préférentiellement et comment procéder ? J'ai vu que c'était aussi possible avec DataNucleus mais je n'ai pas trouvé comment.

    Un grand merci pour vos conseils.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par bdp67fr Voir le message
    Bonjour,

    Actuellement je travaille sur un projet où pour des raisons de performances nous avons été obligés de scinder une table d'environ 90 millions de lignes/350Go en plusieurs sous tables identiques, indicées par un identifiant numérique (p.ex. table1, table2...). Pour le moment ce projet est réalisé avec JDBC, mais les requêtes SQL deviennent trop nombreuses pour pouvoir être facilement maintenues. D'où notre souhait de passer à un ORM.

    Mon gros problème: les systèmes d'annotations et de configuration XML ne permettent pas de prendre en compte des entitées créés dynamiquement (p.ex une nouvelle entitée Table2 qui serait mappée sur table2, qui serait créée lorsque table1 serait "pleine"). J'ai bien trouvé la fonctionnalité de configuration dynamique d'EclipseLink 2.1 mais je n'en suis pas totalement satisfait.

    Je suis relativement débutant en termes d'ORM et je n'ai utilisé JPA que pour des projets simples. Donc question aux experts: quel ORM utiliser préférentiellement et comment procéder ? J'ai vu que c'était aussi possible avec DataNucleus mais je n'ai pas trouvé comment.

    Un grand merci pour vos conseils.
    350 Go pour 90 M lignes : 350000 Mo / 90 M = 3982 M = 3.9 Go par ligne ?

    si vous êtes certain de vos chiffres, il y a sans doute à creuser : qu'est-ce que vous stockez dans vos lignes pour avoir un tel poids : des images ?

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    350 Go pour 90 M lignes : 350000 Mo / 90 M = 3982 M = 3.9 Go par ligne ?

    si vous êtes certain de vos chiffres, il y a sans doute à creuser : qu'est-ce que vous stockez dans vos lignes pour avoir un tel poids : des images ?
    En fait en approximant ça fait 350.10^6 Ko / 90.10^6 = 3.9 Ko par ligne...
    Tout en sachant qu'il a y un blob par ligne

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par bdp67fr Voir le message
    En fait en approximant ça fait 350.10^6 Ko / 90.10^6 = 3.9 Ko par ligne...
    Tout en sachant qu'il a y un blob par ligne
    oops… mauvais jour…

    pour revenir au sujet, je doute qu'un ORM puisse vous aider si vous allez dans le sens d'un partionnement manuel, par contre un outil comme Spring Batch pourrait être plus adapté ou directement du partionnement au niveau du RDBMS qui serait alors transparent au niveau de l'ORM.

    Mails il faut avoir plus d'infos au niveau du profil d'utilisation de cette table,
    et peut-être qu'une solution NoSQL serait plus adaptée (genre BigTable…).

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    oops… mauvais jour…

    pour revenir au sujet, je doute qu'un ORM puisse vous aider si vous allez dans le sens d'un partionnement manuel, par contre un outil comme Spring Batch pourrait être plus adapté ou directement du partionnement au niveau du RDBMS qui serait alors transparent au niveau de l'ORM.

    Mails il faut avoir plus d'infos au niveau du profil d'utilisation de cette table,
    et peut-être qu'une solution NoSQL serait plus adaptée (genre BigTable…).
    Je ne connais Spring que de nom, mais si j'ai bien compris Spring batch permet de traiter les données par lot mais en gardant le côté SQL tout en rajoutant une grosse couche de complexité et surtout un conteneur EJB. Or le but est de simplifier la maintenance, pas de rajouter du code XML :-D

    Pour ce qui est du NoSQL, nous sommes encore de procéder à des tests avec Cassandra et HBase mais ce n'est pas forcement la meilleure des solutions dans notre cas (plusieurs queries concurrentes pour sélectionner des intervalles sur des flottants)

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par bdp67fr Voir le message
    Je ne connais Spring que de nom, mais si j'ai bien compris Spring batch permet de traiter les données par lot mais en gardant le côté SQL tout en rajoutant une grosse couche de complexité et surtout un conteneur EJB. Or le but est de simplifier la maintenance, pas de rajouter du code XML :-D

    Pour ce qui est du NoSQL, nous sommes encore de procéder à des tests avec Cassandra et HBase mais ce n'est pas forcement la meilleure des solutions dans notre cas (plusieurs queries concurrentes pour sélectionner des intervalles sur des flottants)
    Si vous donnez les spécifications au compte goutte vous n'obtiendrez aucune réponse satisfaisante…
    En tous cas ce n'est pas ajouter une couche ORM qui va améliorer les performances et l'optimiser va réintroduire les problèmes de maintenance mais à d'autres niveaux et peut nécessiter des techniques exotiques.

Discussions similaires

  1. [SQL] Pb conditions sur tables multiples
    Par guitou12 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/08/2006, 13h49
  2. Réponses: 6
    Dernier message: 09/05/2006, 10h21
  3. [VB6] acces à DB à tables multiples
    Par waspy59 dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 27/03/2006, 10h28
  4. requete sql pour bd access97 a tables multiples
    Par waspy59 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/03/2006, 00h11
  5. tables multiples au lieu de table unique
    Par rafawel dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 13/07/2005, 11h41

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