FluxRSS FlickR Twitter

Maxime Gaillard

DESCARTES : Je pense, donc je blog !

17 nov 09

RealTime Web : les bases de données sont le problème

Posté dans Internet | Tags :, , , | 6 Commentaires »


Il y a quelque chose qui me préoccupe pas mal depuis quelques temps, c’est le web en temps réel ou real time web. C’est le buzz word de ces dernières semaines, notamment de l’autre côté de l’atlantique. Personnellement je m’y intéresse depuis le début de l’année 2009.

J’ai testé plusieurs solutions, toutes plus révolutionnaires les unes que les autres. Toutes plus performantes les unes que les autres. Mais au final il y a un problème. La base de donnée. Pour comprendre, une explication s’impose.

Le RealTime Web est né d’un principe simple. Que l’internaute qui est sur un site soit informé en temps réel d’un changement. Par exemple vous publiez un article sur votre blog, sous quelques secondes, tous les abonnées à votre flux rss le reçoivent. L’idée n’est donc plus que le client (l’internaute) demande les données au serveur mais que le serveur envoie les données quand elles sont modifiées. On passe du Pull au Push. Un peu comme pour les mails sur nos magnifiques smartphones modernes.

Il y a donc en permanence une connexion d’ouverte entre le client et le serveur. Ainsi votre serveur agit comme un serveur de streaming. Tout est en temps réel. Niveau performance, avec un serveur bien fait, on peut monter très haut en connexion simultanées. Ajax Push Engine promet 100 000 connexions, mais je n’ai pas testé ! Dans tous les cas préférez un serveur codé en C qu’en PHP et Nginx à Apache. Pour le coup moi j’ai quelques attirances vers Python + Nginx, mais chuuut ;)

Votre serveur peut ainsi aller chercher une information comme par exemple dans une base de donnée et renvoyer le tout aux clients intéressés. Sur le principe c’est beau et magique. Mais la réalité est plus sombre. Pour que vos internautes soient avertis en temps réel il faut que votre serveur sache quand envoyer les nouvelles données et il doit interroger en permanence la base de donnée. Le problème est donc à ce niveau. Car le serveur doit faire des requêtes disons toutes les secondes. Si il doit vérifier quelques entrées c’est bon, mais imaginons qu’il y est 100 000+ entrées à vérifier. Vous voyez le problème ?

C’est pourquoi il faudrait que les bases de données implémentent un système de callback. Lors d’une modification d’une entrée, il suffirait d’envoyer un ping au « serveur de temps réel » pour qu’il vienne vérifier l’information. Car les bases de données n’ont pas été faites pour être active mais passive. Elles donnent des informations, mais ne les envoient pas. Et c’est pour moi un vrai problème.

Voilà où j’en suis actuellement dans mes réflexions ! Si quelqu’un en sait plus, ou veut m’expliquer quelque chose, ou n’a rien compris, les commentaires sont ouverts ;)

Dans le même genre:




6 Supers Commentaires pour “RealTime Web : les bases de données sont le problème”




  1. Je vois bien ce que tu veux dire. Je pense que tu exposes bien le problème mais malheureusement je n’ai aucune info à te donner la dessus. Je pense qu’il faut creuser car cela peu apporter pas mal de bonne chose à mon avis.
    ps : bien joué pour le référencement aussi rapide ^^

  2. Ldoppea
    Votre avatar

    Je ne suis pas sûr d’avoir tout compris, mais c’est pas possible (avec un site prévu pour bien sûr) de prévenir le « serveur de temps réel » que l’info à été modifié? En fait, au lieu que ce soit la BDD qui ai un système de callback, c’est plutôt le fonctionnement du site qui enclenche la manip’ (à l’ajout d’un article, on envois au serveur l’id de l’article à pusher).
    En gros le site fait un push au « serveur de temps réel » depuis le site, pour que le serveur push le client :p

  3. Maxime
    Votre avatar

    @Thierry : on va creuser !

    @Ldoppea : c’est même la seule solution que j’arrive à trouver. Mais le problème c’est que c’est pas tellement portable (genre si je veux le mettre partout il faut le faire partout…) et surtout c’est un « hack » qui prouve bien qu’il manque quelque chose aux BDD !

  4. Pourquoi vouloir que ce soit la DB qui donne l’info? C’est pas son role… elle n’est en effet qu’un receptacle passif en bout de chaine.
    A mon avis il faut envoyer l’update au server de flux en parrallele. Pour moi la base de donnees stocke. Le callback doit donc etre implementer en amont de celle ci.
    New data => Script => Put in DB
    => callback => Push
     
     

  5. Et la neutralitée du réseau?
    Les bases de données ont été créer neutre, le Web ne général se doit d’être NEUTRE sinon ce n’est plus de l’internet, c’est du minitel 2.0

  6. Je ne vois pas en quoi ce que je dis est contradictoire avec la neutralité du réseau. D’ailleurs toi avec une url en youtube.com, la neutralité du réseau est assez comique…

Ecrire un commentaire :

Attention: Les commentaires peuvent être modérés. Ton commentaire peut mettre un peu de temps avant d'être en ligne.




Agence Web Grenoble Django

Articles récents

Nuage de Tags

Articles les plus populaires


Catégories


Articles Aléatoires