Journal [HELP] Compteur de clics avec MySQL (voire Oracle RDBMS)

Posté par  .
Étiquettes :
5
17
juin
2010
Bonjour forum journal (si, si, voir plus loin...),

je cherche à faire un compteur de clics sur mon site, et pour cela j'ai pensé à MySQL parce que c'est le plus connu. Mais à la réflexion, je ne suis pas certain que cela tienne la charge (j'aurais peut-être 3 ou 4 clics par semaine), alors si vous avez des astuces pour mettre en place une base Oracle RDBMS, cela serait intéressant.

Mais à la réflexion, pourquoi un simple sqlite ne serait pas suffisant ?

La question de ce journal, ne sera pas comment réaliser cela, mais plutôt pourquoi les solutions les plus simples ne sont pas retenues pour ce type de projet ?

J'ai entendu parler récemment du projet Tiny Tiny RSS, je vais sur le site, et je trouve encore dans les prérequis des choses comme PostgreSQL ou MySQL. Pourquoi pas sqlite ou un base stockée dans des fichiers texte simple, qui permettent plus facilement de faire des sauvegardes, des migrations ?

On parle souvent de la nécessité de pouvoir se faire un petit serveur perso, et on évoque parfois ici des méthodes et des moyens pour le faire. Souvent on voit que c'est loin des attentes du grand public, parce que les outils sont complexes à utiliser.

Je pense que les bases de données relationnelles complexes telles que MySQL ou Oracle ont leur place pour des projets complexes ayant (sans doute) des contraintes élevées. Mais ne croyez-vous pas que pour par exemple un lecteur de RSS en ligne, utilisé par un seul utilisateur pour son usage personnel, ce n'est pas sortir la grosse artillerie pour rien ? Avec toutes les contraintes que cela suppose : lourdeur de paramétrage, difficulté de sauvegarder simplement, ce qui oblige à faire un dump ou à bidouiller avec phpmyadmin au lieu de copier des fichiers comprenant à la fois la base et le reste du site.

Un exemple de projet pour un wiki sans base mysql : http://lionwiki.0o.cz/ (il y a aussi pmwiki dans le même genre).

Pourquoi faire compliqué quand on pourrait faire KISS (heu, non, pas celui-là, mais Keep_it_Simple,_Stupid ) ?
  • # Le vendredi approche

    Posté par  (site web personnel) . Évalué à -10.

    je cherche à faire un compteur de clics sur mon site, et pour cela j'ai pensé à MySQL parce que c'est le plus connu. Mais à la réflexion, je ne suis pas certain que cela tienne la charge (j'aurais peut-être 3 ou 4 clics par semaine)
    MySql incapable de supporter 3 ou 4 entrées par semaine ?


    J'ai envie de lâcher un hasardeux "Prends du NoSQL" mais tu veux compter quoi exactement ? _Chaque fois qu'on clique sur un lien du site ?
    _Chaque fois qu'on clique sur le site (genre sur un texte pour le surligner) ?
    _Chaque fois qu'on clique à un endroit précis du site ?

    Dans le deuxième choix il faudra de l'Ajax en tout cas.

    Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

  • # Manque de moyens?

    Posté par  . Évalué à 5.

    Je pense que le problème est dû à un manque de moyens. Ajouter la gestion d'une nouvelle base de donnée, ça ne se fait pas en cochant une case, il faut déjà bien la connaître (et ça prend du temps), il faut savoir si toutes les opérations qu'on utilise sont supportées, si le type des variables ne sont pas trop différents (par exemple, pas de type DATE sur sqlite, ça fait du boulot en plus), comment sont gérées les transactions, les verrous (un seul utilisateur peut modifier la base à la fois, ça devient vite contraignant), ...

    Gérer une autre base de donnée, c'est souvent dupliquer une bonne partie du boulot (de gestion de la base). Et écrire dans un fichier, c'est encore pire, c'est rajouter du boulot qu'on déléguait au sgbd.

    Moi aussi je préfère quand il n'y a pas besoin de mysql/postresql mais je comprend pourquoi c'est souvent obligatoire.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Manque de moyens?

      Posté par  . Évalué à 5.

      Ceci dit, c'est pour ça qu'on a inventé les ORMs
      • [^] # Re: Manque de moyens?

        Posté par  . Évalué à 1.

        Sur lesquels il y a beaucoup moins d'exemple et de documentation que MySQL (un point que j'avais oublié de préciser)

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Manque de moyens?

      Posté par  . Évalué à 4.

      obligatoire c'est un peu exagéré, dit "je comprends pourquoi c'est plus simple pour celui qui pond les lignes de codes".

      Maintenant, il pourrait très bien y avoir une "classe" ou des fonctions qui font base de données avec du fichier plat. En partant (pour php par exemple) de fopen fread fclose ou même avec des fonctions system sed...
      ok ce serait pas fait pour des select join ou des select ... where in (select...) .... mais pour certains trucs ca le fait bien.

      Ok, c'est pas aussi éprouvés que mysql, mais peut être qu'in fine c'est pas plus mal. Lorsque j'ai choisi un moteur de blog pour une audience très restreinte, avec peu écriture et surtout de la lecture, j'ai cherché sans base de donnée avec du fichier plat. j'en suis plutôt content, mais pour des sites plus important je prends mysql, car même si c'est plus brut de décoffrage que postgresql (que j'utilise avec openerp), on voit vraiment la différence en terme de vitesse sur une install "de base"

      le blog c'est flog :

      http://scripts.ringsworld.com/blog/flog-1.1.2/
  • # available

    Posté par  . Évalué à 4.

    MySQL fait partie du package dans la plupart des hébergements mutualisés PHP. Sqlite par contre c'est pas certain. Donc je suppose que les développeurs on juste pris l'habitude d'utiliser MySQL. Et MySQL ça reste quand même très léger quand il y a déjà un serveur à disposition.
    • [^] # Re: available

      Posté par  . Évalué à 2.

      sqlite est fourni d'office dans php5 (sauf si on ne l'a pas compilé avec, mais à mon avis c'est rare, en tout cas par exemple sur les pages perso de free c'est disponible) :

      http://devzone.zend.com/article/760
      "In PHP 5.0 installing SQLite is a snap because both the extension and the library are bundled, so all you need to do is add –with-sqlite to your configure line."

      http://www.devshed.com/c/a/PHP/Introduction-to-Using-SQLite-(...)

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

  • # dokuwiki

    Posté par  (site web personnel) . Évalué à 8.

    Il y a aussi l'excellent dokuwiki, qui ne nécessite pas de base de données, et propose un nombre incroyable de fonctionnalités, toutes aussi pratiques les unes que les autres.

    Goûter à dokuwiki, c'est l'adopter.
  • # Elle ne correspondent pas forcement

    Posté par  . Évalué à 2.

    Les solutions simples ne correspondent pas forcement au besoin du projet.

    J'avais cherché un agrégateur RSS avec sqlite (pour l'installer en local), et sur le forum de tt-rss ( http://tt-rss.org/forum/viewtopic.php?f=10&t=423 ) on trouve comme réponse à un portage de tt-rss en sqlite :

    "You are entitled to your opinion, but tt-rss uses transactions, foreign keys, cascade deletes, server-side typecasting and inline queries. All of which SQlite doesn't support."
    Donc voila sqlite ne gère pas les clé étrangères, les suppressions en cascade,.... suffisante pour le projet.

    Il y a bien Gregarius comme agrégateur RSS, mais il est plus développé depuis un moment.
  • # compassion

    Posté par  (site web personnel) . Évalué à 1.

    Voilà, juste un petit mot pour exprimer mes plus vives et sincères condoléances. Chaque fois que j'ai eu l'occasion de me frotter avec des projets utilisant des bases de données relationnelles j'en ai beaucoup souffert. Il faut bien avouer que je n'ai pas les connaissances de bases nécessaires à gérer ces choses. Du coup, tout me paraît obscure. Et comme bien souvent les bogues, les faiblesses et les difficultés de configuration des logiciels les utilisant sont liées au difficultés qu'on les développeurs des projets à bien les gérés, je me pose sérieusement la question suivante : pourquoi les connaissances liés aux bases de données ont tant de mal à filtrer vers les non spécialistes ? Est-ce si compliqué ? N'existe-t-il pas de bonne introduction accessible et utile sur le sujet ?

    Comme exemples deux épines douloureuses qui me restent de m'être indirectement frotté aux bases de données. Dans le temps j'ai voulu utilisé bacula. Un logiciel de sauvegarde très intéressant. Après moulte déboire, j'ai finalement réglé mon système de sauvegarde. Pour finalement comprendre qu'en cas de véritable problème il se pourrait bien que rien ne soit récupérable. À l'époque bacula avait apparemment des problèmes pour sauvegarder l'état de la base de donnée avec laquelle il travaillait !
    Plus récemment, c'est la configuration d'openldap qui me fait faire pénitence. Comment réussir à ce que les utilisateurs puissent être ajoutés simplement et de manière cohérente dans la base de donnée sans passé par de longues séries de requêtes bien plus complexes que le simples useradd ? Comment permettre aux utilisateurs de modifier leur propre mot de passe ? Mystère et (encore une fois) base de données.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

    • [^] # Re: compassion

      Posté par  (site web personnel) . Évalué à 3.

      Comment réussir à ce que les utilisateurs puissent être ajoutés simplement et de manière cohérente dans la base de donnée sans passé par de longues séries de requêtes bien plus complexes que le simples useradd ? Comment permettre aux utilisateurs de modifier leur propre mot de passe ? Mystère et (encore une fois) base de données.

      Avec les smbldap-tools et pam-ldap. smbldap-tools va te fournir les outils pour ajouter des utilisateur Unix ou Windows (si tu utilises openldap et samba), ils te fournissent aussi les outils pour ajouter des machines, ...
      Ensuite avec pam-ldap, tu peux configurer pour faire le changement de mot de passe (commande passwd) via l'opération étendue de changement de mot de passe. Cela permet de laisser le serveur d'annuaire mettre à jour les attributs. Tu ajoutes à cela l'extension d'openldap smbk5pwd et tu peux synchroniser le changement de mot de passe entre windows et linux.

      http://www.tchetch.net/wiki/debian/samba/install

      "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

      • [^] # Re: compassion

        Posté par  (site web personnel) . Évalué à 2.

        Je n'utilise pas samba. Par principe l'idée de chercher à être compatible avec le mal me révulse, même en utilisant un logiciel libre. Je ne souhaite pas finir en Lorenzaccio. Je me suis donc tourné vers pamldap. Malheureusement lorsqu'un utilisateur souhaite changer de mot de passe, au dernier moment, (après avoir rentré l'ancien, puis deux fois le nouveau) il reçoit une message d'erreur lui expliquant qu'il n'a pas des droits suffisants. Et ce alors que mon slapd précise bien que "self" peut changer son mot de passe… D'aucuns semblent croire qu'il pourrait s'agir d'un problème avec SElinux. Probablement encore un programme s'interfaçant avec une base de donnée (pour rester dans le sujet d'origine).

        « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

        • [^] # Re: compassion

          Posté par  (site web personnel) . Évalué à 3.

          le coups de SElinux, je verrais pas ce qu'il vient faire là-dedans. Si ton slapd peut lire et écrire ses fichiers, je penses pas que SElinux ait un truc spécialement prévu pour détecter la modification d'un attribut d'un annuaire ldap ... mais je peux me tromper. Si slapd peut modifier ses fichiers alors il peut changer un mot de passe.

          Sinon je suis un peu moins fermé que toi, question professionnel il faut être compatible avec Microsoft ... pas d'autres solutions, mais bref.

          Mais je crois surtout que la réponse est dans les fichiers de log de slapd, puisque tu peux vraiment bien voir ce qu'il fait, il faut juste jouer avec les niveaux de debug.

          "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

  • # Contraintes?

    Posté par  (site web personnel) . Évalué à 5.

    Moi je pense que l'incompréhension vient de ce que tu ne considère pas les contraintes d'utilisations de ces projets: la plupart de ces projs sont prévus pour être hébergés sur des sites web mutualisés, ou le processus Apache (et donc PHP) n'a pas le droit d'écrire sur le disque dur, mais a par contre le droit d'accéder a une base de donnée. Dans ce genre de situation, sqlite (ou un fichier plat, ou xml, ou json, ou quoi que ce soit) n'est juste pas une option. Et donc même si tu n'as besoin que d'écrire un minimum de choses, si le seul endroit ou on te laisse écrire c'est en base, et bien tu es bien obligé d'utiliser ce moyen la et pas un autre.
    • [^] # Re: Contraintes?

      Posté par  . Évalué à 2.

      pas bête, cela me semble une raison valable. Mais il me semble qu'avec PDO cela permet d'avoir du code similaire entre mysql et sqlite ?

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

      • [^] # Re: Contraintes?

        Posté par  . Évalué à 2.

        Non, PDO ne fait abstraction qu'au niveau de l'API PHP pour accéder à la base de données. Il ne fait pas abstraction des différences (parfois majeures) sur le support du SQL dans les différents moteurs.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.