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écisions SGBD Discussion :

Choisir une base de donnée


Sujet :

Décisions SGBD

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut Choisir une base de donnée
    Bonjour.

    J'avoue que ma recherche s'arrête aux seuls sujets marqués "importants" de ce forum. En fait, je m'attendais à avoir un comparatif des bases de données. Je cherche à savoir d'une part quel peut être le temps minimal pour une très simple requête qui ne trouve qu'une entrée. (indexée) Quel ordre de temps ? Et par conséquent, quelle base de donnée est le plus efficace pour traiter des milliers de toutes petites requêtes ? Cela implique également ma troisième question : quels autres facteurs que la rapidité d'une simple requête sont importants dans le choix d'une base de donnée efficace dans cette situation ?


    Blustuff.

    [Edition]Ah, je cherchais au mauvais endroit, c'est en encadré au-dessus du forum...[/Edition]

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Ou bien dois-je préciser "Des milliers de toutes petites requêtes par seconde ?

  3. #3
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    HSQLDB a l'avantage d'être codé en Java ( si ton programme initial est en Java, tout est accéléré ) et de pouvoir instancier des tables en mémoire directement : donc du coup, tu ne passes pas par un système de fichiers, qui est le goulot d'étranglement des mini-requêtes comme tu l'entends.

    Pourquoi vouloir faire autant de mini requêtes, d'ailleurs, ne peux-tu pas tout charger en mémoire dès le début ?
    K

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Au départ si. Au bout d'un moment, il commence à falloir un bon paquet de mémoire vive pour tout stocker, jusqu'à ce qu'il n'y en ait plus assez. Je cherche juste à utiliser la fonctionalité la plus simple d'une base de donnée : Stocker des données. Je me suis assuré qu'il n'y ait pas besoin d'opérations sur un grand nommbre de données, tri, recherche, etc. Tout ce que j'ai besoin c'est de dire "Je veux tel enregistrement". Des tables et quelques index, uniquement des requêtes dont la complexité ne dépasse pas ce que l'on peut apprendre à un premier cours de SQL.

    Je ne travaille pas en java, mais en php. J'ai besoin de stocker des objets et de les reprendre. Je n'utilise donc pas (encore) de bdd, mais un système tellement simplissime qu'il ne demande aucun codage, et donc je peux à tout moment choisir de me tourner vers une bdd sans détruire un quelconque travail qui aurait déjà été effectué. Je pourrais toujours très simplement créer un cache en mémoire vive pour accèlérer tous les accès.

    Je veux savoir quelles autres solutions existent. Ouvrir, lire, écrire, fermer un fichier de moins de 4 Ko est une opération dont le temps ne dépend pas de la taille. (J'pense que vous en savez plus que moi sur le sujet, et sur le caractère variable du "4 Ko") Par conséquent, je peux lire / écrire plus de données que ce que j'ai normalement besoin sans trop de pénalités. Mais les base de données ont certainement des choses à apporter de ce coté là. Il me semble qu'il existe des bases de données capables de stocker des objets. Il me semble aussi que des systèmes de cache sont déjà programmés pour ça. Et puis lorsque la charge devient trop importante pour un seul serveur, je sais qu'il existe des solutions auxquelles les concepteurs de bdd ont réfléchi pour partager cette charge.

    J'aimerais donc savoir à partir de quand il devient pour moi intéressant d'utiliser une base de donnée plutôt qu'un système de fichier + système de cache ? J'aimerais savoir également quels paramètres j'oublie éventuellement dans mon raisonnement ?

  5. #5
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Dans le cadre de votre premier paragraphe je vous conseille MySQL avec les tables de type MyISAM ! Ce moteur privilégie la rapidité et "passe volontairement outre" toutes les notions des moteurs relationnels ; pas de transactions, etc... Si votre applications doit gérer quelques tables transactionnelles , le moteur MySQL gère aussi le moteur de table InnoDB
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Toutes les requêtes sur des tables MyISAM que j'ai pu tester étaient relativement lentes par rapport à des solutions moins conventionnelles. Après, j'imagine que leur rapidité dépend de beaucoup du serveur. D'où ma question.

  7. #7
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Pour de telles requêtes je te conseille de faire un fichier binaire, représentant un arbre binaire par exemple.

    Ca ira beaucoup plus vite que d'agir sur une base de données, à mon avis..

    Enfin PHP pour ce genre de chose c'est pas le top, mais ça peut aller..
    K

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Enfin PHP pour ce genre de chose c'est pas le top, mais ça peut aller..
    Pourquoi ?

  9. #9
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Ben n'étant pas fortement typé, les manipulations sur les fichiers binaire via fseek deviennent rapidement un casse tête, si tu ne t'organises pas bien depuis le début. Je suis partisant de Java, et en Java c'est quand même beaucoup plus puissant !

    Enfin si tu fais un objet solide qui fera tes insertions/suppressions/modifications dans ton arbre binaire, tu seras tranquille au final et ça ira
    K

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    PHP propose des fonction serialize/uniserialize pour enregistrer un objet. Un fichier par objet, et la gestion reste simple.

    Le plus simple pour améliorer est de coder un module php dans un autre langage, ou de rester en php et d'utiliser les fonctions de mémoire partagée déjà programmées pour php.

  11. #11
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Sérialiser / Déserialiser est très lourd comme opération.
    K

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    C'est pour cela que je veux la reprogrammer. (Curieusement, sur mes tests, elle est moins lourde que de reconstruire les objets à partir de requêtes mysql)

  13. #13
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par Blustuff
    Toutes les requêtes sur des tables MyISAM que j'ai pu tester étaient relativement lentes par rapport à des solutions moins conventionnelles. Après, j'imagine que leur rapidité dépend de beaucoup du serveur. D'où ma question.
    Lentes ?

    Je ne trouve pas. J'ai des temps de l'ordre de 50ms sur des recherches d'enregistrements indexés sur table MyISAM. Je passe à 250ms sous InnoDB et des temps similaires sous SQLSERVER. (La table de test possèdait 200.000 lignes.)
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Ouch... quand je dis rapide, je parle de temps de l'ordre de la milliseconde, ce qui me paraît nécessaire lorsque l'on veut en caser plusieurs milliers par seconde.

  15. #15
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Maintenant cela dépend de l'architecture technique... Tests effectués sur un petit ordinateur portable pendant mes déplacements professionnels... Mais si la charge est énorme, les solutions en load balancing ou en cluster existent !
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Mais si ne pas utiliser Mysql et lui préférer une solution plus "basique" permet de n'avoir besoin que d'un serveur au lieu de trois, j'imagine que ça reste relativement intéressant. Mais beaucoup de questions encore... Par exemple, que gagnerais-je à n'utiliser qu'un nombre réduit de fichier plutôt que plusieurs dizaines de milliers ?

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Un hébergeur web explique que les sémaphores ne sont pas activées sur leur serveur php mutualisé, pour des raisons évidentes. Il propose avec d'utiliser des tables Mysql de type Memory (ou Heap) qui effectivement ont l'air intéressantes :

    http://dev.mysql.com/doc/refman/5.0/...ge-engine.html

    La reconstruction d'objet reste toutefois pénible avec mysql...

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Autre découverte fabuleuse : Un forum qui possède une option activée par défaut qui utilise la base de donnée à la place des fichiers pour la gestion des sessions. Qu'en pensez-vous ?

  19. #19
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Ca dépend.

    Les traitements de session en php par fichiers textes sont + rapides que par des données. Par contre, les bases de données peuvent avoir des "moteurs de tables" très rapides, mais moins orientés "relationnel". Pour l'exemple, en MySQL, les tables de type HEAP sont stockées en mémoire vive.

    Mais je n'ai pas trop testé la gestion des sessions par sgbd. Donc aucune idée des rapidités de traitement.sous forme de
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

Discussions similaires

  1. Comment choisir une base de données ?
    Par Perrinef dans le forum Débuter
    Réponses: 5
    Dernier message: 04/11/2010, 15h47
  2. Réponses: 2
    Dernier message: 17/10/2010, 21h48
  3. Choisir une base de donnée?
    Par Coluche dans le forum Débuter
    Réponses: 1
    Dernier message: 27/02/2009, 19h36
  4. [WinForms]Choisir une base de données
    Par PIEPLU dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 23/07/2006, 10h11
  5. [SGBD] Choisir une base de données adaptée
    Par SENCABOY dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 08/02/2006, 19h23

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