[Rebol] Cheyenne + PostgreSQL
trigram31-Mar-2011/10:20:49+2:00
Je suis intéressé par l'association Rebol + Cheyenne + PostgreSQL.

Il me semble que Laurent travaille sur le sujet.

Au niveau du driver PostgreSQL, est-il à jour ou pas ?

Au niveau de Cheyenne, quelle est la charge qu'il peut encaisser ?

Nico
Laurent31-Mar-2011/10:59:18+2:00
Oui j'utilise PostgreSQL version 9 avec Cheyenne et ça marche très très bien (sous Linux Ubuntu). Le driver PostgreSQL Softinnov est parfaitement intégré à Cheyenne : dans la config de Cheyenne on donne les infos de connexion à la base de donnée et les workers gèrent automatiquement les connexions/deconnexions. C'est déconcertant de simplicité! Il suffit ensuite d'utiliser "do-sql" pour les requêtes, sans se prendre la tête avec les connexions:
     resultats: do-sql 'books [
             "SELECT * FROM titles WHERE author=?"
             request/content/author
         ] 

Je vais bientôt essayer les procédures stockées, mais à priori le driver gère ça aussi.

Je n'ai pas encore testé mais Cheyenne permet également de mettre en cache les requêtes SQL.

Niveau perfs sur le site de cheyenne on peut lire: "It can sustain the load of up to 500 requests/sec on servers with dual-core CPU." Le fait que Cheyenne soit asynchrone est un plus énorme.
Au pire si j'ai des problème de perfs sur ma petite dédibox j'utiliserai nginx (qui dépote pour les fichiers statiques) en reverse proxy couplé avec Cheyenne. Mais pour l'instant le besoin ne s'en fait pas sentir.
Laurent2-Apr-2011/3:11:42+2:00
important:

La version 9 de PostgreSQL que j'utilise introduit un tout nouveau format "hex" pour le type bytea. (voir http://www.postgresql.org/docs/9.0/static/datatype-binary.html )

Le driver de Dockimbel ne gère pas (encore) ce format et il faut donc faire la requête SQL suivante pour que le format de sortie des bytea soit compréhensible pour le driver:
SET bytea_output TO "escape";


J'ai pu ensuite stocker des images en binaire dans la base et les récupérer sans problème. Les conversions binary! <-> bytea(format "sql-escaped-string") se font toutes seules, c'est magique! Merci Dockimbel!
shadwolf3-Apr-2011/16:44:27+2:00
moi j'adorerait lire une etude comparative entre jboss par example et une solution de service internet basé sur Rebol.

si quelqu'un peu le faire je pense qu'a plus d'un titre cela pourrait donner des munitions concrète pour promouvoir le web servit par rebol.

Cette domunentation devra etre une veritable étude comparative et pas un plaidoyer pour rebol.

Le wiki serait l'endroit de choix pour publier cette documentation.
Laurent4-Apr-2011/10:31:51+2:00
Dans l'article http://www.rebolfrance.info/org/articles/dockimbel/dockimbel.html (qui commence à dater) Doc nous dit "Au niveau des performances, une solution REBOL/FastCGI peut facilement surpasser du PHP, et se rapprocher du niveau de Java."
et sur la page de Cheyenne http://cheyenne-server.org/about.shtml on voit "REBOL CGI support with persistent processes (FastCGI performances)." donc j'en déduit que "Au niveau des performances, une solution Cheyenne peut facilement surpasser du PHP, et se rapprocher du niveau de Java."
shadwolf6-Apr-2011/19:23:18+2:00
ok mais de nos jour il est plus courrant de trouver des site web avec PHP /webspehere ou jboss (donc java) et mysql postgres mais surtout oracle. Me demander pas pourquoi les gens adorent oracle moi je comprend pas ce qu'il a de fantastique faut en faire la maintenance régulierement.

Rebol n'a pas de support pour oracle...

laurent... C'est valide si on crois DockImble... Qui est aussi celui qui dit que rebol c'est bien mais que ca n'avance plus et qu'il faut faire red non ?
Laurent6-Apr-2011/22:26:29+2:00
Ca c'est sur que c'est pas demain la veille que les DSI proposeront Rebol pour remplacer JEE. C'est moins sur pour PostgreSQL par rapport à Oracle, Linux a bien remplacé les serveurs sous Windows.
Malgré ses défauts Rebol reste quand même grâce à sa syntaxe et à sa philosophie mon langage préféré de tout les temps, en tout cas jusqu'à ce que Cheyenne (ah Cheyenne, fantastique) soir recodé en Red un jour...
trigram6-Apr-2011/23:27:48+2:00
C'est un peu off-topic... mais oui PostgreSQL est un train de gagner du terrain et d'ici 5 ans sera une BDD parfaitement connue et introduite dans les DSI.
Pour REBOL évidemment, c'est beaucoup plus compliqué.
Remplacer J2ee, hmmm... comment dire...
Par contre, le couple REBOL + Cheyenne + PostgreSQL pour offrir rapidement et gratuitement des petites applis Web...
C'est plus que crédible. Et si tu montres un appli Web qui est fonctionnelle et qui répond à besoin utilisateur, du moment que ce n'est pas Core Business, le DSI sera souvent pragmatique... combien de maquette faite en VB, PHP, WinDev/Webdev se sont retrouvées en prod !
On en connait tous mais souvent on en parle pas car on est souvent pas très fier, mais très content finalement quand l'appli marche très bien sans maintenance ou presque, ce qui est souvent le cas...
Laurent7-Apr-2011/1:20+2:00
Bien d'accord avec toi trigram. Le site que je suis en train de faire n'est pas si petit que ca, c'est une vraie appli, et pour l'instant le triplet Rebol+Cheyenne+PostgreSQL est simple et puissant à la fois, j'arrive a faire tout ce que je veux . On verra comment tout ça se comporte lors de montées en charge, si il y a beaucoup de visites un jour
trigram26-Apr-2011/17:37:17+2:00
Peux-tu nous donner un petit état d'avancement ?

Merci
Laurent2-May-2011/15:28:32+2:00
Ca avance tout doucement, j'ai été distrait par mon déménagement qui me prive d'internet (Raccordement de ligne problématique)

J'ai pu tester quelques trucs:

* J'ai été assez épaté par les possibilités qu'offrent les alias dans la config Cheyenne pour créer des URL favorisant le référencement (SEO). Ca marche très bien.

* J'ai trouvé un petit bug, a savoir que le refinement /flat de do-sql est sans effet avec le driver pgsql mais j'ai pu aisément contourner ça. (je vais faire un petit post de bug)

* La récupération des colonnes avec le driver pgsql de dockimbel dépend de l'ordre des champs du select et ça c'est pas une bonne pratique. Cette nuit j'ai pondu une fonction qui fait la requête et récupère les valeurs dans des variables créés automagiquement et prêtes à être insérées dans la page rsp. Je vais d'abord dormir un peu et ensuite faire quelques tests avant de la poster dans le forum car c'est vraiment un fonction hyper pratique quand on a des requêtes avec beaucoup de champs.
Laurent2-May-2011/17:40:14+2:00
DocKimbel plus rapide que l'éclair : http://www.digicamsoft.com/cgi-bin/rebelBB.cgi?thread=%3C2May2011155324862254200%3E
trigram7-Jun-2011/15:33:29+2:00
Je suis en train de tester Cheyenne + PostgreSQL.
J'ai un soucis avec la gestion BDD :

RSP Runtime Error

Script	%www/PostgreSQL/index.rsp
Error Code	505
Description	Access Error : Invalid port spec: pgsql://postgres:motdepasse@localhost/postgres
Near	[do-sql 'db "select * from client" foreach client]
Where	do-sql


Je suis avec PostgreSQL version 9.
J'ai essayé de définir dans le fichier %httpd.cfg :

databases [
db pgsql://postgres:motdepasse@localhost/postgres
]

Pourtant, dans REBOL, j'arrive bien à accéder :

db: open pgsql://postgres:motdepasse@localhost/postgres
insert db "select * from client"
print first db
close db
Laurent7-Jun-2011/15:39:06+2:00
T'as essayé de redémarrer cheyenne avec un "vrai" kill (pas un kill -HUP) pour que les workers prennent en compte la config?
trigram7-Jun-2011/15:42:44+2:00
Je suis sous Windows 7.
Je quitte Cheyenne et le relance.
trigram7-Jun-2011/15:55:09+2:00
A chaque modifications, je quitte et relance Cheyenne.
Mais rien n'y fait.
Je n'arrive pas à comprendre pourquoi.
trigram7-Jun-2011/17:27:33+2:00
Le driver Postgresql est bien intégré à l'exécutable Cheyenne ?
Il ne faut pas le mettre quelque part ?
C'est juste une histoire de config ?

J'ai donc trouvé le "pot aux roses" :

il faut rajouter dans la configuration %httpd.cfg :

worker-libs [
   %libs/pgsql-protocol.r
]


Ouufff !!!
J'ai du aller dans les sources de Cheyenne pour m’apercevoir qu'il n'y avait rien au niveau de MySQL et PostgreSQL !

Du coup, est-ce que l'on peut utiliser RebDB avec les do-sql ???
DocKimbel8-Jun-2011/15:56:25+2:00
Effectivement, il n'y a aucune librairie externe intégrée dans Cheyenne par défaut. Mais il est facile d'en ajouter via le SDK pour se fabriquer des versions adaptées à ses besoins particuliers. Si quelqu'un souhaite le faire, merci de poster un message dans ce forum afin que j'ajoute un bout de doc au wiki pour expliquer les étapes.

RebDB: non, il faut que le driver dispose d'une interface d'accès via un port REBOL et propose une API d'accès compatible (type mes drivers MySQL/PgSQL ou bien ceux de RebolTech). D'autre part, RebDB n'est pas prévu pour fonctionner en multitâche, il ne gère pas de locks sur les fichiers de données, donc deux accès en écriture concurrents ont toutes les chances de corrompre la base...
coccinelle9-Jun-2011/7:02:10+2:00
Au lieu de RebDB, tu peux envisager sql-protocol.r qui dispose d'une interface via un port REBOL comme les drivers de DocKimbel. Par contre, sql-protocol.r ne gère pas les locks mais tu peux l'adapter pour qu'il le fasse.
Laurent10-Jun-2011/16:23:27+2:00
Moi je trouve que c'est très bien qu'il n'y aie pas de driver sql intégré par défaut dans Cheyenne. Ça ne coûte rien de rajouter une ligne au fichier de conf et on ne mélange pas les choux et les carottes...

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2