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 :

Des questions à propos du langage c pour un SGBD réparti


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Des questions à propos du langage c pour un SGBD réparti
    Bonjour tout le monde

    j'ai des questions à vous poser à propos du langage C

    1. Pour modifier une chaine de caractère d'une ligne précise dans un fichier, comment peut-on le faire?
    2. La même chose pour la suppression.
    3. Pour réaliser une requête SELECT FROM WHERE comme en SQL, comment je peux le faire?



    En attenant vos conseils

    merci d'avance.

  2. #2
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    1.

    2.

    3. Où sont les données ? De quoi parles-tu ?
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    En fait je suis sensé de créer un SGBD réparti en utilisant le langage C.
    ce qui signifie que les données n'existent pas. c'est à moi de créer un logiciel qui fait la même chose que ORACLE mais avec des bases de données répartis sur plusieurs sites(serveurs).
    Les taches principales du programme:

    Creer une nouvelle base de données.
    Consulter les bases de données.
    Mise a jour des bases de données.

  4. #4
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Autant te dire tout de suite que c'est un exercice difficile et que les questions que tu as commencé à poser ne laisse rien présager de bon

    Pour pouvoir passer des requêtes à ton serveur tu vas devoir développer un interpréteur qui parsera les chaînes entrées afin d’interroger les différentes sources de données constituant ta base ... et c'est facile à dire
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    les premières questions je l'ai posé car j'ai pensé de créer des dossiers(BD) qui contiennent des fichiers(tables).

    pour faire la mise a jour j'aurai besoin de les modifier en utilisant fseek mais le problème.

    par exemple avec SQL : update table set sexe='F' where nom='mom';

    pour faire ça en utilisant un fichier, je n'arrive pas a trouver la solution.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 375
    Points : 23 634
    Points
    23 634
    Par défaut
    Citation Envoyé par moushas Voir le message
    les premières questions je l'ai posé car j'ai pensé de créer des dossiers(BD) qui contiennent des fichiers(tables).
    C'est une bonne idée. Les premiers SGBD fonctionnaient comme ça. dBase, notamment.

    par exemple avec SQL : update table set sexe='F' where nom='mom';
    pour faire ça en utilisant un fichier, je n'arrive pas a trouver la solution.
    Non, parce qu'il n'y a pas de solution simple. Tu ne trouveras pas d'interpréteur SQL isolé et qui ne corresponde pas derrière à une vraie solution de traitement. Si tu veux le faire, il faut écrire un analyseur syntaxique (un parser) mais ça demande d'avoir quelques notions de traitement des langages, sinon tu vas vite entrer rencontrer des bugs et des erreurs d'interprétation. À ce moment, ça risque d'être coton à localiser.


    La vraie question est donc : est-ce un exercice scolaire, auquel cas tu peux faire un « prototype » de SGDB distribué pour montrer comment tu t'y prendrais, ou est-ce que cela correspond à un réel besoin, auquel cas on t'orientera vers une solution libre et existante car, sinon, tu cours droit à la catastrophe.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    alors j'aurai besoin de yacc et lex pour faire ça.

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 375
    Points : 23 634
    Points
    23 634
    Par défaut
    Effectivement mais tu n'as pas répondu aux questions de mon dernier commentaire.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    oui c'est un projet de fin d'etude

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Points : 130
    Points
    130
    Par défaut modifier un caractère dans un fichier
    c'est Royal !

    mais tout dépend de l'architecture.
    Si tu es sous Windows, tu peux utiliser une fonction qui s'appelle CreateFileMapping (ici)

    Sinon, si tu es sous une autre architecture, genre linux, tu peux utiliser la librairie mmap (ici).

    En définitive, ce n'est pas si simple que cela, tu devras coder très proprement et surtout réflechir, commence par des petits bouts de code, inverstigue sur les problèmes de fichiers en partage, etc.

    Bon courage
    under construction...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    creer_new_bd(char* directory)
    {
      int ind;
      struct stat s;
      DIR *dir;
      char ref[50];
      struct dirent *entree;
      char bd_name[50];
     
      dir=opendir(directory);
      if (dir==NULL)
        {
        sleep(1);
        printf("Impossible de se connecter au serveur local\n");
        sleep(1);
        } 
      else
        { 
          puts("Veuillez saisir le nom de la base de donnees");
          scanf("%50s",bd_name);
     
          entree= readdir(dir);
         chdir(dir);
          while(entree!= NULL)
    	{
     
     
    	  sprintf(ref,"%s",entree -> d_name);
     
    	  if(stat(ref,&s)==-1)
    	   {
    	     perror("stat");
    	     break;
    	   }
    	  if (S_ISDIR(s.st_mode))
    	    {
     
     
     
     
    	      if (strcmp(ref,bd_name)==0)
    	      {
    		puts("Il existe deja une base de donnes avec le meme nom");
    		exit(0);
    	      }
    	     else
    	      {
     
    		if (mkdir(bd_name,S_IRWXU)== -1)
    		  {
    		  printf("Le systeme a rencontre un probleme lors de la creation de la base de donnees\n");
    		  exit(0);	    
    		}
    		else
    		  {
    		    char *cmd;
    		    cmd=(char*)malloc(sizeof*cmd);
    		    strcat(cmd,"mv ");
    		    strcat(cmd, bd_name);
    		    strcat(cmd," DATABASES");
     
    		    if( system(cmd)==-1)
    		      {
    			printf("Erreur");
    		      }
    		    printf("La base de donnees %s a ete cree avec succes\n",bd_name);
    		    exit(EXIT_SUCCESS);
    		  }
    	      }
    	   } 
    	}
        }
    }
    le repertoire principal : DATABASES
    les sous repertoires : les bases de données

    Ici je veux creer un nouveau dossier , mé quand je fé le teste si il existe deja un dossier avec le meme nom il m'affiche '.' ce qui signifie le repertoire courant et pas (DATABASES) .

    moi je veux le faire sur les sous reperttoires
    si il existe deja un dossier de meme nom on ne creer pas un autre , pour cela on affiche un msg d'erreur

    comment je peut le faire?

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Points : 130
    Points
    130
    Par défaut
    bonsoir,

    il faut prendre un peu de recul pour faire cela et "aplatir" le modèle sur papier.
    Une façon de faire:
    Dans DATABASES/ les sous-répertoires contiennent un répertoire du nom de la database. Dans ce répertoire vous créez les tables, etc.

    Pour créer une Database, il suffit simplement de tester l'existence du répertoire dans DATABASES. S'il existe, déchencher une erreur et s'il n'existe pas, le créer.
    under construction...

  13. #13
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    La partie stockage fichier dans ce projet, c'est peanuts !

    Les deux tâches les plus ardues sont :

    * le moteur d'analyse SQL
    * La répartition et synchronisation multi machine.


    Et au vu des posts, c'est pas gagné !

    Pourquoi ne te reposes tu pas sur sqlite ? Tu n'aurais qu'a gérer le système de répartition ....
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

Discussions similaires

  1. Quelques questions à propos du langage lui même.
    Par Invité dans le forum Langage
    Réponses: 85
    Dernier message: 10/09/2014, 14h04
  2. [Méthode] Des question à propos du MVC
    Par NiRaDo dans le forum MVC
    Réponses: 4
    Dernier message: 20/04/2009, 19h42
  3. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  4. Réponses: 5
    Dernier message: 07/07/2004, 16h05
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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