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

C Discussion :

Moteur fastcgi en C (énormément de données)


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut Moteur fastcgi en C (énormément de données)
    Bonjour à tous,

    J'ai l'intention de créer un moteur de recherche. La base de données de ce moteur, au début, contiendra environ 10 à 20 millions de lignes, dont chaque ligne contiendra 200 caractères environ.

    Je penser créer un moteur en C. Les données seront chargées en mémoire en permanence dans un tableau C grâce à fastcgi. Il faudra que les utilisateurs puissent, lors d'une recherche, trouver un résultat parmis les 10 à 20 millions de lignes en moins de 3 secondes.

    J'ai plusieurs questions :
    - est-ce que C est bien le langage le plus adapté pour faire une recherche dans une telle masse de données ?
    - je veux réussir à faire fonctionner le tout sur un seul serveur. Je pense utiliser un serveur à
    4Go de mémoire DDR, processeur Opteron 175 Dual Core. Pour le disque à mon avis ça n'a pas trop d'importance, je pense que tout va se jouer sur la mémoire et la puissance CPU. Est-ce que ma configuration matérielle est suffisante pour ce type de moteur ?

    Pour l'instant j'ai une idée assez vague du serveur qu'il faut pour faire tourner un truc pareil, et je me demande si un seul serveur est suffisant ou non.

    Quelle configuration matérielle me recommandez-vous ?

    Merci d'avance
    Nanji

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    Ca me semble pas trop correct de vouloir tout garder en memoire vive, vaudrait mieux utiliser un sgbd je pense
    Des lors le fastcgi est plus trop utile, a part si tu veux vraiment un truc performant.. le fait d'utiliser fastci te permettra de faire une connexion persistante à la base

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,
    Citation Envoyé par Gruik
    Salut

    Ca me semble pas trop correct de vouloir tout garder en memoire vive, vaudrait mieux utiliser un sgbd je pense
    Des lors le fastcgi est plus trop utile, a part si tu veux vraiment un truc performant.. le fait d'utiliser fastci te permettra de faire une connexion persistante à la base
    +1, et même plus, c'est ridicule, car si la quantité de données augmente, tu finiras toujours par dépasser la capacité de ton serveur en RAM.

    As-tu fais le calcul de la quantité de données que cela représente:
    si 10 millions de lignes à 200 caractères = 2 Go rien que pour charger les données,
    auxquels s'ajoute la place nécessaire pour créer un(des) index, obligatoire si tu veux aller assez vite (sinon, scanner 10 millions de ligne à chaque fois !!)

    Donc, la seule solution viable est un sgbd.

  4. #4
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut sgbd
    Donc, la seule solution viable est un sgbd.
    Là n'est pas la question. Je vais bien évidemment utiliser un sgbd pour stocker les données. Mais je doute que faire une requête select de recherche textuelle, sur 10 millions de lignes, me retournera le résultat assez rapidement. Il faut que le résultat soit là en moins de 3 secondes. Sur ma machine perso, il faut 12 secondes pour trouver une chaîne de caractère avec une requête select sur 10 millions de lignes (chaque ligne contenant 100 caractères)

  5. #5
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Citation Envoyé par Nanji
    Là n'est pas la question. Je vais bien évidemment utiliser un sgbd pour stocker les données. Mais je doute que faire une requête select de recherche textuelle, sur 10 millions de lignes, me retournera le résultat assez rapidement. Il faut que le résultat soit là en moins de 3 secondes. Sur ma machine perso, il faut 12 secondes pour trouver une chaîne de caractère avec une requête select sur 10 millions de lignes (chaque ligne contenant 100 caractères)
    Et Dieu inventa les index

  6. #6
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Par défaut requête select
    dans le cas où je ferais une requête select, avec un index, toute la recherche reposerait sur mySQL.

    Dans ce cas, il n'y aurait pas grande différence de performances entre utiliser un programme perl et un programme C, puisque l'essentiel de la performance repose sur la base de données. Qu'en pensez-vous ? Et quelle langage me recommandez-vous pour programmer le moteur ?

  7. #7
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    En C + FastCGI, ce serait plus "buggy", difficilement evolutif mais ça reste le plus performant
    Maintenant si le programme est simple, on peut utiliser un langage de script, et dans ce cas PHP est le mieux. Un CGI Perl empecherait de faire des connexions persistantes

Discussions similaires

  1. [MySQL] Problème moteur de recherche php avec base donnée Mysql
    Par hotwheals dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 28/06/2011, 09h06
  2. Réponses: 0
    Dernier message: 28/05/2010, 20h08
  3. Moteur de recherche sur base de données
    Par GiZoX dans le forum Général Java
    Réponses: 3
    Dernier message: 06/04/2009, 17h34
  4. Moteur de recherche pour base de données
    Par jolinar13 dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 17/12/2006, 10h12

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