valdo Posté 11 Août 2004 Posté 11 Août 2004 Salut, merci de me faire une réponse argumentée, éventuellement étayée par des exemples, ceci étant nécessaire pour choisir entre les deux alternatives. C'est pour faire un méta moteur de recherche Laurent
Siddartha Posté 11 Août 2004 Posté 11 Août 2004 Merci de nous faire une présentation détaillée afin de t'apporter une éventuelle réponse qui ne sera pas dans le vent Quel type d'applis dans le méta moteur de recherche, ouvre t-il des sockets ? y'a t il des fonctionnalités supplémentaires ? comment seront triés les résultats ? Vas tu utiliser un serveur ou plusieurs ? Bref + d'info pour + de réponse thx
valdo Posté 12 Août 2004 Auteur Posté 12 Août 2004 (modifié) il va ouvrir des sockets, et il y aura un traitement parallèle, avec pas mal d'éléments qui seront gardés en RAM. le tout doit être géré de manière abstraite, avec différents module spour chaque moteur de recherche. EDIT: Le tout sera éventuellement multi-server, mais cela ne fonctionnera pas en cluster, mais sous forme d'arbre de requetes et de renvoi de résultats, l'idée étant de paralléliser un maximum le résutlat sur des serveurs de domaines différents. Modifié 12 Août 2004 par valdo
Siddartha Posté 12 Août 2004 Posté 12 Août 2004 Dans ce cas, je te préconiserais plutôt Java qui a l'avantage par rapport aux PHP de pouvoir gérer tes différents modules de manières complètement indépendantes. De cette manière, ouvrir des sockets et les traiter en même tps en RAM peut etre fait réellement en parrallèle sans trop de surcharge là ou le php commencerait à être gourmand en ressources machines. De plus, sachant que tu auras des élèments en RAM, il sera plus facile de décider avec Java de laisser ces types de modules de manière statique ou pas, de vider les mémoires ou de leur allouer un certain espace, et de plus sera beaucoup plus sécurisé, chose que ne permet que plus légèrement PHP. Sécurité que ce soit au niveau applicatif ou externe. Ensuite je rajouterais aux nombreux avantages du Java, qu'étant du langage pré-compilé, tes applis seront plus rapides qu'avec PHP qui, lui, va toujours devoir passer par son interpréteur. En plus de la rapidité, cela te permettra d'envisager des montées en charge plus importantes là ou le PHP saturerait à mon avis assez rapidement. PHP est agréable pour programmer de petites applis pas trés complexe, mais dès qu'on veut monter des usines à gaz, Java lui sera toujours plus performant et efficace.
valdo Posté 13 Août 2004 Auteur Posté 13 Août 2004 (modifié) Salut, cependant je prévoyais de stocker les éléments dans une table en RAM de MySQL. De plus pour la modularité j'ai envie de faire appel à PHP 5. Bien sur ce que tu m'as dit me pousse aussi à utiliser Java mais d'un autre coté, il faut que la chose puisse être compatible avec un max de serveur, pour ne pas que l'initiative tombe à l'eau, et c'est pour ça que je pensais que PHP était une bonne idée. en fait mon idée est de fournir une spécification etun format standard d'échange de résultat de recherche et de l'exploiter de différentes manières, en partant toujours du même schéma UML, cela afin que mon moteur puisse autant servir pour interroger d'autres moteurs qu'interroger une liste d'IPB ou de PHP BB. L'idée revient à tisser des liens entre les moteurs de recherche, et pour ma part je ne suis pas sur qu'un dev "tout java" soit absolument la meilleure solution, d'autant plus que pas mal de programmeurs amateurs préfèrent PHP. D'un autre coté, je vois mal un programme en PHP ouvrir pleins de sockets avec pleins de serveurs et attendre les résultats en simultané. Du coup j'ai pensé a une autre possibilité qui serait de faire le dev en C/C++, avec un frontend en PHP. t'en pense quoi ? EDIT: Sans compter qu'il y a aussi la solution PERL. Laurent. Modifié 13 Août 2004 par valdo
Siddartha Posté 13 Août 2004 Posté 13 Août 2004 Re, Effectivement, pour arriver à le diffuser auprés du plus grand nombre, le php est plus abordable donc plus répandu, et ainsi préférable. Ceci dit, si tu créés une spécification et un format standard d'échange, c'est ce format de ce fichier qui va nous intéresser qu'il soit en PHP ou JSP devrait revenir à la même chose non ? Ton idée de faire le dev en C/C++ avec le front en PHP serait je trouve un trés bon compromis mais si j'ai bien compris ton projet, si tu as du dev en c/c++, tu pourrais aussi bien le faire en Java qu'en Perl ou autres. Car de la manière dont tu l'expliques, je vois un dev pour le backoffice et donc le coeur du système, et une interface de front qui te permet de diffuser tes résultats sur ton site mais aussi de le diffuser auprés de différents sites. Dans ce cas là, le choix du front n'a à mon avis que trés peu d'importance. Le fait de choisir PHP t'assurera pour sur une diffusion simple et rapide auprés de ta cible. Aprés pour le backoffice, c'est plus compliqué
valdo Posté 13 Août 2004 Auteur Posté 13 Août 2004 (modifié) Salut, en ce qui concerne le back office, une chose est sure, il faut que je le fasse rapidement... en ce qui me concerne, pour la partie réseau il sera bcp plus facile pour moi ou d'autres de la faire en Java. cela est une certitude, d'autant plus que la sortie du JDK 1.5 nous facilitera la tache. Cependant dans le cadre de ce même projet, il faut aussi que les sites puissent s'autoindexer et répondre à des requetes du méta moteur. Pour cela il y a plusieurs approches. La plus élégante serait de développer un module DSO écrit pour Apache, donc à priori en C/C++, pour indexer une page localement dés le moment de sa visite, c'est à dire instantanément (les différences de version de page seront évaluées par une clé MD5). La seconde solution serait d'utiliser un script PHP, qui va créer un index optimisé, pour un forum par exemple (tel qu'IPB). Faisons le point: J'ai besoin d'une architecture en forme d'arbres, dont les arètes sont des liens entre les serveurs. 1. Partie méta moteur: Va recueillir les résultats (backend): peut etre écrit en java, puisque J2EE permet de multithreader facilement les requetes. Le tout sera stocké en cache par une base de données SQL, et devra tracer les doublons avec un système de cache pour accélérer le renvoi des résultats. Va les présenter: peut être écrit en JSP. (une approche alternative serait de faire un backend en C/C++, et un frontend en PHP) 2. Partie cliente: Va indexer les résultats. Déjà fait dans le cas de google ou d'un moteur de recherche déjà implanté. A faire dans le cas d'un site statique ou propulsé par PHP, mais sans fonction de recherche, via un module DSO d'apache (demande des compétences en C/C++, et en bases de données). Va écouter les requetes: soit par un port (intéressant dans le cas d'un démon), soit par une requete POST, si on doit passer par HTTP. (demande des compétences sur le protocole HTTP) Va envoyer les données: formate les données en XML, et les envoie sur le socket. (connaissance sur PHP et HTTP) 3. format de représentation des données. Je ne sais pas ce qu'il en est de XML-RPC, mais cela me semble etre un bon moyen d'échange. Va spécifier à la fois les classement d'une réponse dans l'index, le nombre de réponses, ainsi que le nombre de pages. Va signifier au méta moteur que telle page est invalide. Ce projet est très ambitieux, et à vrai dire, je compte le commencer en Java. l'idée étant de faire une architecture modulaire dans la mesure du possible. Ce sera en opensource, et je compte commencer par la partie spécification. Pour simplifier je commencerai par mettre le résulat de recherche dans un fichier et le téléchargerai depuis le serveur qui héberge le méta moteur. C'est cool, ça commence a prendre forme, je vais pouvoir pondre une specification d'ici peu de temps. UPDATE: et même quelques diagrammes UML. Bonheur ! Laurent, très excité. Modifié 13 Août 2004 par valdo
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant