= Base de Données # Syteme de gestion de base de données : DBMS=
<!-- Tous les deuxièmes mardis du mois, nous nous rencontrons à 19:30 jusqu'à au plus tard 21:30 pour discuter base de données. -->
== Semaine 1 - 11.03.2014 ==
Définition :
Chaque type de base s'appuie sur une modélisation différente de l'information. ( merise, Niam, objet .....) Prochain réunion le 25 mars 19:00 == Semaine 2 - 25.03.14 == === Gestion du "Foods For Hackers" === * Quoi : Foods For hackers* Qui : Mardi BDD ---- Stockage des données.* Où : Fixme , données ---> foo* Quand : dev durée du workshop durée infini....* Comment : Ensemble de donnée à définir interactions - saisie , mise à jour. crud interface python / web (php) script (initialisation / maj )* Pourquoi : Pour connaitre produit ? Connaitre stock ? ==== Analyse Data ==== On s'interesse au food for hackers. ==== Type de Nouriture ==== <blockquote>* boissons* Friandises* Nouilles( pates )* Fruits sec* Biscuits aperitifs* extension Burgers</blockquote>==== Produits ==== <blockquote>* des prix ( achat, ventes )* date de livraison* date de péremptions* type de nourriture* Descriptions textuels* Mot clef* Whish* quantité</blockquote>==== Mots clef ==== <blockquote>* Langue* MotsClef* Description longue</blockquote>==== Consommation ==== <blockquote>* Produit* Quantité* comsommateur* date</blockquote>==== Consomateurs ==== <blockquote>* pseudo* idmembre</blockquote>==== Langue ==== <blockquote>* Code* nom long</blockquote> ==== Analyse Traitement. ==== * Initialiser la base.* Ajouter un produit* Réassortir le stock* Ajouter un Consomateur* Consommer un produit* Saisir un produit en wish list* Mise à jour stock* Statistique de consommation* Creation gestion des TAG ( mot clef )* Gestion fermée des TAG.* Gestion de la langue ==== Objectif pour la semaine 3 ==== * avancer sur la modélisation des données (la théorie)* créer les scripts de la base de données == Semaine 3 - 22.04.14 == === Utilisation de LibreOffice Base ===Nous avons recherché des solutions pour décrire une base de données avec l'aide de LibreOffice Base. Selon Pirboazo, cette solution graphique n'est, à comparaison avec d'autres solutions, pas si pertinente que l'on pense.Dans LibreOffice Base, il existe la possibilité de se connecter à différente base de donnée distante avec l'aide de connecteurs particuliers. Après avoir mis en pratique ce que nous avons théorisé la semaine 2, la base de donnée fut crée avec Postgresql, mais au final, il s'est révélé que l'interface graphique ne soit pas si performante en comparaison avec la ligne de commandes pour pouvoir décrire une base de donnée. == semaine 4 - 20.05.2014 == === Creation User & database === avec l'utilisateur postgres<pre># Creation PG user : fixme DBUSER="fixme"DBNAME="ffh" USER_OPTS="--no-superuser --no-createrole --no-createdb $DBUSER --pwprompt" echo "On cree l'user $DBUSER..."createuser $USER_OPTS -U postgres echo "On cree la base $DBNAME..."createdb --owner $DBUSER $DBNAME -U postgres </pre> avec votre utilisateur ajouter le paramètre -U postgres === Creation de table === Fichier d'ordre de création des tables de la base ffh sous postgresql [[media:ffh_sql.txt]]<pre>psql -U fixme ffh < Ffh_sql.txt</pre> Code:<pre>ffh=# \d</pre> Résultat:<pre> List of relations Schema | Name | Type | Owner --------+------------------------------+----------+------- public | langue | table | fixme public | langue_langue_id_seq | sequence | fixme public | member | table | fixme public | member_member_id_seq | sequence | fixme public | motclef | table | fixme public | motclef_motclef_id_seq | sequence | fixme public | nourriture | table | fixme public | nourriture_nourriture_id_seq | sequence | fixme public | produit | table | fixme public | produit_produit_id_seq | sequence | fixme(10 rows)</pre> Code:<pre>ffh=# \d langue</pre> Résultat:<pre> Table "public.langue" Column | Type | Modifiers ----------------+---------+------------------------------------------------------------ langue_id | integer | not null default nextval('langue_langue_id_seq'::regclass) langue_libelle | text | not nullIndexes: "langue_pkey" PRIMARY KEY, btree (langue_id)Referenced by: TABLE "member" CONSTRAINT "member_langue_id_fkey" FOREIGN KEY (langue_id) REFERENCES langue(langue_id) TABLE "motclef" CONSTRAINT "motclef_langue_id_fkey" FOREIGN KEY (langue_id) REFERENCES langue(langue_id) </pre> == Semaine 5 - 17.06.2014 ===== Mise en place d'une base mongodb === ==== Installation ==== Téléchargement depuis le site http://www.mongodb.org/downloads on décompresse le dossier Puis on crée les arborescences pour accueillir une base de test et les binaires Soit la racine /u01/projets/mongodb les binaires dans /u01/projets/mongodb/ * bsondump * mongo * mongod * mongodump * mongoexport * mongofiles * mongoimport * mongooplog * mongoperf * mongorestore* mongos * mongostat* mongotop Un repertoire data/db à la racine. ==== Lancement du serveur ==== Code:<pre>/u01/projets/mongodb/bin/mongod --dbpath /u01/projets/mongodb/data/db </pre> Résultat:<pre>2014-06-17T19:05:22.147+0200 [initandlisten] MongoDB starting : pid=14868 port=27017 dbpath=/u01/projets/mongodb/data/db 64-bit host=dbi-ntbk02 2014-06-17T19:05:22.151+0200 [initandlisten] db version v2.6.2 2014-06-17T19:05:22.152+0200 [initandlisten] git version: 4d06e27876697d67348a397955b46dabb8443827 2014-06-17T19:05:22.152+0200 [initandlisten] build info: Linux build10.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49</pre> ==== lancement du client ==== Code:<pre>boizot@dbi-ntbk02:/u01/projets/mongodb/doc$ /u01/projets/mongodb/bin/mongo </pre> Résultat:<pre>MongoDB shell version: 2.6.2 connecting to: test</pre> Code:<pre> show dbs </pre> Résultat:<pre>admin (empty) local 0.078GB</pre> ==== Creation de la base FFH ==== Code:<pre>use FFH </pre> Résultat:<pre>switched to db FFH </pre> Code:<pre>db FFH</pre>'''Initialisation de données''' <pre> M1 = { Member_pseudo : "Pirboazo", Member_num : 123001, Langue:'fr' } { "Member_pseudo" : "Pirboazo", "Member_num" : 123001, "Langue" : "fr" } M2 = { Member_pseudo : "Yv", Member_num : 3001, Langue:'fr' } { "Member_pseudo" : "Yv", "Member_num" : 3001, "Langue" : "fr" }</pre> '''Creation de la Collection Membre'''Code:<pre> >db.membre.insert(M1) </pre> Résultat:<pre>WriteResult({ "nInserted" : 1 }) </pre> Code:<pre>db.membre.insert(M2) </pre> Résultat:<pre>WriteResult({ "nInserted" : 1 })</pre> '''Verification de l'insertion.''' Code:<pre>> db.membre.find() { "''id" : ObjectId("53a07eba52a032beb132c6ba"), "Member_pseudo" : "Pirboazo", "Member_num" : 123001, "Langue" : "fr" } { "''id" : ObjectId("53a07ed752a032beb132c6bb"), "Member_pseudo" : "Yv", "Member_num" : 3001, "Langue" : "fr" }</pre>** Nota ** Code:<pre>> show collections</pre> Résultat:<pre> membre system.indexes</pre> On Quitte et on se reconnecte <pre>> exit bye pboizot@dbi-ntbk02:/u01/projets/mongodb/doc$ /u01/projets/mongodb/bin/mongo </pre> Résultat:<pre>MongoDB shell version: 2.6.2 connecting to: test </pre> Code:<pre>> show dbs </pre> Résultat:<pre>FFH 0.078GB admin (empty) local 0.078GB test (empty)</pre> Constat la base FFH existe... <pre>use FFH</pre> <pre>show collections membre system.indexes</pre>Delete all Member Code:<pre>> db.membre.remove({}) </pre> Résultat:<pre>WriteResult({ "nRemoved" : 0 })</pre>drop collection Code:<pre> > db.membre.drop()</pre> Résultat:<pre>true</pre> Code:<pre>> show collections </pre> Résultat:<pre>system.indexes </pre> '''Drop database'''<br /> Code:<pre>> use FFH</pre> Résultat:<pre> switched to db FFH</pre> Code:<pre>> db.dropDatabase();</pre> Résultat:<pre>{ "dropped" : "FFH", "ok" : 1 }</pre> Code:<pre> > exit </pre> Résultat:<pre>bye </pre> pboizot@dbi-ntbk02:/u01/projets/mongodb/doc$ /u01/projets/mongodb/bin/mongo MongoDB shell version: 2.6.2 connecting to: test Code:<pre>> show dbs</pre> Résultat:<pre> admin (empty) local 0.078GB test (empty) ></pre> == Semaine 6 - 08.07.2014 ==Objectif pour ce soir: * corriger le wiki* procédure pour exporter une base de données mongo === Export d'une base mongodb ===L'export d'une base est extrêmement simple : du moins il y a une forme simple .la commande est mongodump. Nous utiliserons la forme suivante de la commande : Code:<pre> ./mongodump --db FFH --out /u01/projets/mongodb/backup/</pre> Cette commande crée un repertoire FFH avec le contenue suivant :<pre>/u01/projets/mongodb/backup/FFH$ ls -la</pre>Résultat:<pre>total 20drwxrwxr-x 2 pboizot pboizot 4096 Jul 8 20:00 .drwxrwxr-x 3 pboizot pboizot 4096 Jul 8 20:01 ..-rw-rw-r-- 1 pboizot pboizot 164 Jul 8 20:00 membre.bson-rw-rw-r-- 1 pboizot pboizot 92 Jul 8 20:00 membre.metadata.json-rw-rw-r-- 1 pboizot pboizot 65 Jul 8 20:00 system.indexes.bson</pre> Nous pouvons alors créer un tar , le stocker sur le ftp.fixme.ch un autre utilisateur peu alors le récuperer et le restore sur sa machine === Restore d'une base mongodb === On recupere le fichier tar on l'extrait puis on lance le restore. Code:<pre>./mongorestore /u01/projets/mongodb/backup/FFH</pre>Résultat:</pre>connected to: 127.0.0.12014-07-08T20:43:32.576+0200 /u01/projets/mongodb/backup/FFH/membre.bson2014-07-08T20:43:32.576+0200 going into namespace [FFH.membre]2 objects found2014-07-08T20:43:32.577+0200 Creating index: { key: { _id: 1 }, name: "_id_", ns: "FFH.membre" }</pre> On verifie le chargement. Code:<pre>/u01/projets/mongodb/bin$ ./mongo FFH</pre>Résultat:<pre>MongoDB shell version: 2.6.2connecting to: FFH</pre> Code:<pre>> show collectionsmembresystem.indexes > db.membre.find(){ "_id" : ObjectId("53bc2d51bd84677f027bbbe6"), "Member_pseudo" : "Pirboazo", "Member_num" : 123001, "Langue" : "fr" }{ "_id" : ObjectId("53bc2d54bd84677f027bbbe7"), "Member_pseudo" : "Yv", "Member_num" : 3001, "Langue" : "fr" }> </pre> == meeting du 9 Juin 2015 == Installation de postgresql depuis les sources. Pourquoi installer depuis les sources ? Pour choisir ou on installe et quelle version on installe.Pour installer les contributions que l'on veut , pour ne pas être dépendant des choix du gestionnaire de package. == Metting du 14 Juillet 2015 == Exploration des source de psql Objectif analyser comment ajouter une commande \pa qui permettrait une execution d'un fichier sql se trouvant dans une varaible SQLPGPATH.