= 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 ==
== Semaine 2 - 25.03.14 ==
=== Gestion du "Foods For Hackers" ===
* Quoi : Foods For hackers
* Pourquoi : Pour connaitre produit ? Connaitre stock ?
==== Analyse Data ====
On s'interesse au food for hackers.
==== Type de Nouriture ====
<blockquote>
* extension Burgers
</blockquote>
==== Produits ====
<blockquote>
* quantité
</blockquote>
==== Mots clef ====
<blockquote>
* Description longue
</blockquote>
==== Consommation ====
<blockquote>
* date
</blockquote>
==== Consomateurs ====
<blockquote>
* idmembre
</blockquote>
==== Langue ====
<blockquote>
</blockquote>
==== Analyse Traitement. ====
* Initialiser la base.
* 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 null
Indexes:
"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 20
drwxrwxr-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.1
2014-07-08T20:43:32.576+0200 /u01/projets/mongodb/backup/FFH/membre.bson
2014-07-08T20:43:32.576+0200 going into namespace [FFH.membre]
2 objects found
2014-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.2
connecting to: FFH
</pre>
Code:
<pre>
> show collections
membre
system.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.