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

PHP & Base de données Discussion :

Utilisation d'un Cache avec maj de la BDD différée


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur P.O.O. et web
    Inscrit en
    Novembre 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Développeur P.O.O. et web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 36
    Points : 24
    Points
    24
    Par défaut Utilisation d'un Cache avec maj de la BDD différée
    Bonjour.

    Je cherche un ORM Open Source proposant la fonctionnalité suivante:
    *le cache contient une représentation de toutes les données de la base, le schema, et pour chaque table les clés primaires des données
    *les données lues depuis la BDD sont systématiquement mise en cache pour une ttl à définir, la clé primaire plus les données
    *la mise à jour ou la création de données se fait instantanement dans le cache mais est différée d'un certain offset pour la BDD
    *la suppression se fait instantanement dans le cache clé primaire et données, mais est différée d'un certain offset pour la base

    Un tel ORM existe t il sur PHP, je travaille avec doctrine 2, mais il propose une gestion manuelle très limitée mais très flexible du cache.
    Ou un tel ORM existe-t-il hors PHP, mais avec la possibilité d'utiliser un adapteur?

    Bref, j'ai utilisé aussi APC comme cache, un tel projet se ferait avec la gestion de quatres choses:
    1) le schema de la table en mémoire cache
    2) un tableau de toutes les tables avec un sous tableau de toutes les clés primaires en cache
    3) une pile de transaction Create Update Delete avec timestamp, nom de table et données à mettre à jour ou à supprimer
    4) les données consultées en cache pour une certaine durée.

    Je ne voudrais pas réinventer la roue au cas ou un tel projet ORM existerait déjà. Les recherches avancées pourraient se faire soit directement sur la BDD ou sur les données en cache, mais ce n'est pas le plus important.

    Mon objectif est de rendre rapide et performant une application professionnelle locale ou distante, avec un volume de données pas forcement gigantesque ni à très très haut trafic, une application moyenne mais de très bonne qualité.

    Merci pour vos éclaircissements.

  2. #2
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    Je ne sais pas si ça répond entièrement au besoin, mais une piste :
    http://www.anthonymatarazzo.info/upd...doctrine-redis

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur P.O.O. et web
    Inscrit en
    Novembre 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Développeur P.O.O. et web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Bonjour.

    Merci de l'indication. Je viens de la consulter, et cette approche résout un point seulement, celui du cache des consultations de la base. C'est un point que j'avais déjà intégré avec à la place de Redis, PHP APC, mais le problème est pour les mises à jour, créations ou suppressions.

    J'ai fait quelques recherches non fructueuses sur google, et c'est la raison pour laquelle j'avais aussi ajouté un début d'architecture d'un tel projet, je suis nouveau dans la programmation (1 an en amateur), et au pire des cas, soit il y a une solution ailleurs que PHP que je ne connais pas encore, soit je me lance sur les 4 points d'architecture que j'avais proposé avec biensur, des avis favorables ou défavorables dessus.

    Le premier problème qui se pose par exemple, est avec doctrine lors de la création d'un objet, temps qu'un tel object n'est pas dans la base avec un id, il ne sera pas complétement utilisable dans des relations, d'où un problème lors de la création.

    Au pire des cas, je perds au plus 1 sec pour la requete SQL face au cache, et l'affaire n'est pas tellement conséquente, et une limitation du cache pour la consultation est correcte.

    Néanmoins, je suppose que ce à quoi je pense existe déjà ailleurs, ou sera bientot disponible sur PHP.
    Je cherchais donc des informations et des réponses expertes sur ce point.

  4. #4
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut Synchronisation
    Bonjour,

    Il existe des solutions mais qui vont te poser de toute façon un problème de réplication et donc de synchronisation.

    Si tu as plusieurs utilisateurs en lecture, alors pas de vrai pb, si un seul verrouille en modification. Cache ORM ok
    Par contre s'il existe des modifs en masse par plusieurs, tu vas être confronté à un vrai problème transactionnelle, d'ou l'utilisation des sgbds, pour ce point délicat. je ne pense pas qu'un ORM puissent se substituer à une base.

    Il existe des bases que tu peux embarquer en HTML5, le support est parfois incomplet pour tous les navigateurs, cherche du côté de pouchDB, cela va t'ouvrir des horizons ...

    Autre solutions utiliser un modules J2EE statefull avec Webservices juste pour cette partie.

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Mettre en place un cache à l'insertion c'est assez particulier puisque on est souvent dans des situation où les écritures sont très minoritaires et ne nécessite pas de cache.

    Comme dis précédemment ce que tu recherche va très probablement générer des problèmes d'intégrités. Le plus simple serait à mon avis de stocker les données avant l'insertion dans un format brut (genre sérialisation d'objet) et quand ton serveur est prêt tu viens lire ce fichier et faire l'insertion.
    L'inconvénient c'est évidemment que les données n’apparaîtront pas tout de suite , mais c'est le principe du cache ...
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur P.O.O. et web
    Inscrit en
    Novembre 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Développeur P.O.O. et web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Bonjour Nathieb.

    En effet Doctrine 2 gère l"optimistick lock" via une date ou un auto_increment, et la solution pouchDB, embarquée serait excellente pour gérer les données d'une base propre à un unique utilisateur en creation/modification/suppression.
    Je l'apprendrais très vite pour en découvrir les limites comme les avantages (surtout pour accélerer l'AJAX).

    J'imagine l'utilisation de ce pouchDB via AJAX pour l'édition de données incluant des relations de plusieurs à plusieurs beaucoups plus efficacement, je pense que cela résout exactement certains de mes problèmes de performances, quitte à perdre le schema SQL au profit de données jsonifier.

    Enfin pour l'utilisation d'un service Java pour gérer un niveau d'accès aux données très exigeant, j'ai 'impression que ce serait une spécialité à elle seule.
    La création d'un service de données au dessus d'une SGBDR pour augmenter les performances ainsi que la cohérence des transactions reste au-delà de mon champs d'action.

    Le problème est résolu.

    Merci de vos interventions.

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

Discussions similaires

  1. ouverture bd 2007 cachée avec MAJ
    Par lambac dans le forum Sécurité
    Réponses: 0
    Dernier message: 07/07/2010, 13h06
  2. Ne pas utiliser le cache avec open
    Par coockie_jr dans le forum C++
    Réponses: 6
    Dernier message: 30/05/2008, 17h51
  3. comment utiliser de l'OpenGL avec du Java ?
    Par DjiZ dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/01/2004, 15h21
  4. Utilisation simple d'@@IDENTITY avec asp
    Par Ajrarn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2003, 10h37
  5. Comment utiliser les styles XP avec Dev-C++?
    Par abraxas dans le forum Dev-C++
    Réponses: 3
    Dernier message: 05/10/2003, 19h47

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