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

Langage PHP Discussion :

Comment supporter plusieurs types de base de données ?


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Comment supporter plusieurs types de base de données ?
    Bonjour,

    J'envisage de développer une application web qui pourra supporter plusieurs types de base de données.

    J'imagine que les requêtes peuvent avoir une forme différente en fonction du type de base de données utilisées.

    On voit assez souvent MySQL et PostgreSQL.

    A moins que la syntaxe des requêtes soit la même ?

    Merci,
    ZiP

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    En gros, il y a deux catégories de requêtes SQL :celles qui n'utilisent que le SQL Standard supporté par tout le monde et celles qui utilisent les fonctions natives.

    Si tu n'utilise QUE des choses standard et quelque chose comme PDO pour exécuter tes requêtes, c'est transparent (sauf configuration du driver et de la connexion à la base)

    Problème : personnellement, je n'ai jamais réussi à faire une appli qui utilise uniquement des fonctions standard

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Je vais continuer de chercher pour trouver la solution la plus appropriée.

    ZiP

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Il y a des types de jointures conformes SQL2 qui sont supportées par PostgreSql et qui ne le sont pas avec mysql.Par exemple FULL JOIN est supportée par postgreSql.

    Cependant au lieu d'écrire 2 fois la même requête, tu as tout à gagner à utiliser un orm qui fera abstraction du moteur de la BD sous-jacente. Ainsi tu n'auras ni à écrire 2 requêtes ni à t’intéresser des spécificités de mysql ou de postegresql.

  5. #5
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Quel outil ORM pour PHP me conseillez-vous ?

    Merci,
    ZiP

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    il y'a propel, doctrine et doctrine2; Vu que je traine autours des technos symfony, les autres je connais pas

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 201
    Points : 4 665
    Points
    4 665
    Par défaut orm pas sur
    bonjour @zip
    tu n'es pas précis dans ta demande, et du coup je trouve les réponses précédentes incomplètes

    1) on ne change pas en cours de route de bases de donnée
    2) on recherche une compatibilité db pour des "bundles"(packages) réutilisables entre projets

    A) on doit utiliser au minimum PDO, pour être compatible au niveau php
    B) la compatibilité sql est de 90% ?
    Si tu dois changer de db pour tout ton projet, modifier "légèrement" 10..15 requêtes n'est pas trop encombrant.

    C) non , l'orm n'est pas la solution miracle
    l'orm ne peut générer des requetes trop complexes, donc si tu as des
    requetes simples => elles sont déjà compatibles (95%?)
    requetes "complexes" => l'orm ne servira à rien !

    Donc, pour moi :
    si tu écris un module actu,commentaires,acl : l'utilisation de l'orm est bonne
    si tu développes un projet de gestion de stock, l'orm va atteindre ses limites

    tu ne nous parles pas des triggers, de procédures stockées, ici l'incompatibilité est très très forte!

    note: petits tableau pour la compatibilités des fonctions : http://sqlpro.developpez.com/cours/s...onctions/#L1.2

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par [ZiP] Voir le message
    J'envisage de développer une application web qui pourra supporter plusieurs types de base de données.
    Sur le papier évidemment c'est l'idéal.

    En pratique ce n'est pas si simple notamment en termes d'optimisation. Un rowcount() qui peut éviter une requête n'est pas supporté par tous les sgbdd, ni un ON DUPLICATE KEY UPDATE qui permet selon les cas des gains de performances très significatifs.

    Par ailleurs, passer par un ORM rajoute une couche de difficultés quant a l'optimisation finale. Tout n'est pas rose et c'est bien résumé dans ce topic

    Donc oui l'idée est séduisante, mais avec les inconvénients et lourdeurs que cela impose, je ne le ferais pour ma part qu'en cas de nécessité absolue.

  9. #9
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Je vais donc plutôt me limiter à un seul type de base de données : MySQL.

    Merci pour vos conseils,
    ZiP

Discussions similaires

  1. Réponses: 24
    Dernier message: 06/03/2013, 21h06
  2. [ADO.NET] [DAC] Plusieurs types de base de données
    Par BenoitM dans le forum Accès aux données
    Réponses: 4
    Dernier message: 07/12/2006, 11h31
  3. Comment organisé un certain type de base de données
    Par jc_romeo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/06/2006, 16h18
  4. différents types de bases de données
    Par Alvergnat dans le forum Access
    Réponses: 2
    Dernier message: 18/06/2005, 17h06
  5. [CR]Changement de type de base de donnée
    Par nabil dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 12/04/2004, 22h42

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