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

JDBC Java Discussion :

Questions JDBC et SGBD


Sujet :

JDBC Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 268
    Points
    268
    Par défaut Questions JDBC et SGBD
    Bonjour,

    J'ai quelques petite questions sur le fonctionnement des SGBD en general en relation avec JDBC alors j'esperais que vous accepteriez de m'aider un peu

    Disons que jai un serveur java qui doit renvoyer les resultats de requetes recu par plusieur clients de facon asynchrone.
    Ce serveur devra donc se connecter localement sur la base de donnees et executer plusieur requete simultanement pour ensuite envoyer les resultats via un socket aux clients.

    je me demandais alors quelque petites questions:

    1- Est ce que je doit faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection connexion = DriverManager.getConnection("...")
    une nouvelle connections pour chaque requete ou via une seule connection qui resterai ouverte indefiniment je peux executer plusieur requete simultanement sans que le SGBD les executes une a la suite de l'autre ?

    En gros via une seule connection et des requetes executer dans des threads differents simultanement, est ce que les SGBD vont executer les actions une a la suite de l'autre ?

    Je sais que lorsqu'il y a plusieurs connections la pluspart des SGBD sont multi-threader, mais dans le cas d'une connection unique qui execute plusieur requetes ?

    (jai reformuler 3 fois ma questions vous avez surement compris. passons a la 2eme question.)

    2- Sachant que la base de donnees risque de contenir 5000 enregistrements environ et que durant un peak elle devra parfois executer au moins 250 requetes simultanements..

    Quel SGBD me recommenderiez vous pour ce type d'utilisation ?
    est ce que hsqldb est adapter pour ce que je veux faire ?

    Merci d'avance pour vos reponses !

  2. #2
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    Je pense que tu trouveras une bonne partie des réponse ici :
    http://java.developpez.com/faq/jdbc/?page=dataSources


    en résumé :
    1. non il vaut mieux utiliser un dataSources
    2. 5000 enregistrements c'est peu pour un base de données, 250 simultanément ça commence à faire beaucoup (tu as combien d'utilisateurs, qui fait toutes ces requêtes ?). Avec 5000 enregistrements, le cache (EHCache par exemple) sera la solution pour garder de bonnes performances.
    Avec du cache ça devrait passer avec n'importe quelle base de données de MySql à Oracle donc pourquoi pas hsqldb. En tout cas sur leur site ils disent que ça marche bien.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 268
    Points
    268
    Par défaut
    hmm jai oublier de specifier que le client/serveur dont je parle est 'java se' et non pas 'javaee'.

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    Concrètement ce qu'il te faut c'est un pool de connexion !

    Tu peux le faire toi même : Connection pool
    Ou utiliser un pool existant : DBCP
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    Oui le Datasource permet de créer un pool de façon transparente, ce n'est pas spécifique à JEE mais à JDBC.

  6. #6
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    5000 enregistrements ça donne pas vraiment une idée de la volumétrie.
    Une table de une colonne numérique avec 5,000,000 d'enregistrements se traite plus facilement qu'une table de 5,000 enregistrements avec 300 colonnes comprenant des BLOBs et autres joyeusetés.

    250 connections simultanées ne sera pas réellement possible. En revanche tu en auras sûrement une 20e qui pourront être actif en même temps. Les autres seront en attente dans une file.
    Si les temps de traitements sont courts, avec un pool de connexion, tu n'y verras que du feu.

    Ce que je te conseille c'est de faire des tests de montée en charge, pour voir comment réagit l'application.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 268
    Points
    268
    Par défaut
    Merci pour tout vos reponses, maintenant je sais a quoi m`en tenir.

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

Discussions similaires

  1. Question sur les sgbd-orienté objet
    Par pierrot53 dans le forum Débuter
    Réponses: 1
    Dernier message: 29/01/2009, 01h12
  2. [JDBC]Connexion SGBD Firebird
    Par rprom1 dans le forum JDBC
    Réponses: 7
    Dernier message: 04/04/2006, 11h48
  3. Connexions JDBC vers sgbd Oracle
    Par Reflex77 dans le forum JDBC
    Réponses: 7
    Dernier message: 14/12/2005, 16h02
  4. Réponses: 5
    Dernier message: 11/03/2003, 11h49

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