Serie 4: Mise en place d'une base de donnee avec MongoDB
3. Manipulation simple des donnees
1. use ic4
2. db.createCollection('enseignant')
3.
db.enseignant.insertOne({
nom: "Douwe",
prenom: "Vincent",
prime: 2000,
anciennete: 2
})
4.
db.enseignant.insertMany([
{
nom: "Awe",
prenom: "Taissala",
prime: 2000,
anciennete: 2
},
{
nom: "Boudjou",
prenom: "Hortense",
prime: 1500,
anciennete: 3
},
{
nom: "Djorwe",
prenom: "Temoa",
prime: 1000,
anciennete: 4
},
{
nom: "Kaladzavi",
prenom: "Guidedi",
anciennete: 3
},
{
nom: "Laoukoura",
prenom: "Charles",
anciennete: 1
},
{
nom: "Nisso Nicodem",
anciennete: 5,
},
{
nom: "Nounamo",
prenom: "Patrick",
prime: 3000,
anciennete: 4
},
{
nom: "Terdam Valentin",
prime: 2500,
anciennete: 2
}
])
5.1 db.enseignant.find().sort({anciennete: -1}) 5.2 db.enseignant.find({nom: \[aeuio]$\i}) or db.enseignant.find({nom: {$regex: "
[aeuio]$"}}) 5.3 db.enseignant.find({anciennete : {$gt: 1, $lte: 3}})
5.4 db.enseignant.updateMany({},{$inc : {anciennete: 1}})
5.5
db.enseignant.aggregate([
{
$set: {
email: {
$concat : [{$toLower : "$nom"}, "@example.com"]
}
}
},
{
$merge: {
into : "enseignant",
on : "_id",
whenMatched: "replace"
}
}
])
5.6 db.enseignant.updateMany({prime: {$exists:true}}, {$inc : {prime: 1000}}) 5.7 db.enseignant.updateMany({prime: {$exists:false}},
{$set : {prime: 3000}}) 5.8
4. Importation des donnees
1. db.memoire.find().count() res: 797
2. db.memoire.find({"etudiant.matricule": "13Z502S"}, {titre: true, annee:true, _id:false})
3. db.memoire.find({"parcours.specialite.departement.code": "AGEPD"}).count()
4. db.memoire.find({annee: "2018-2019"}).count() res: 32
5. db.memoire.find({"parcours.specialite.departement.code": "AGEPD", annee: "2018-2019"}).count() res: 0
6. db.memoire.find({titre : "Amélioration du procédé d'extraction de l'huile de poisson de quelques localités de l'Extrême-
Nord"}, {etudiant: true})
7. db.memoire.aggregate([{$unwind:"$encadreurs"}, {$match:{ "encadreurs.nom": /\w Douwe/i}}, {$group: {_id:null, count: {$sum:
1}}}]) res: 7
8. db.memoire.aggregate([{$group: {_id: "$annee", stats: {$sum : 1}}}])
9. db.memoire.aggregate([{$group: {_id: "$parcours.specialite.departement.code", stats: {$sum : 1}}}, {$sort: {stats: -1}}])
10. db.memoire.find({encadreurs : {$size: 2}, "parcours.specialite.departement.code": "GCA"}).count() res: 25
Serie 6: Mise en place d'une base de donnee avec Cassandra
2.1. CREATE KEYSPACE ic4 WITH REPLICATION={'class': 'SimpleStrategy', 'replication_factor': 1}; 2.2.
CREATE TYPE ic4.encadreur (
nom text,
grade text,
role text );
2.3.
CREATE TABLE memoire (
matricule text,
nom text,
date_naissance text,
lieu_naissance text,
departement_code text,
departement_texte text,
specialite_code text,
specialite_texte text,
cycle_code text,
cycle_texte text,
titre text,
annee text,
encadreurs set<frozen<encadreur>>,
primary key(annee, matricule)
);
2.4.
COPY memoire
(matricule,
nom,
date_naissance,
lieu_naissance,
departement_code,
departement_texte,
specialite_code,
specialite_texte,
cycle_code,
cycle_texte,
titre, annee,
encadreurs) FROM 'cassandra.csv' WITH DELIMITER=';' AND HEADER=FALSE;
3.1 SELECT COUNT(*) FROM memoire; res: 796
3.2 SELECT COUNT(*) FROM memoire WHERE annee ='2016-2017' res: 87
3.3 SELECT titre FROM memoire WHERE matricule='18A0168P' AND annee='2020-2021'; 3.4
Solution naive SELECT COUNT(*) FROM memoire WHERE departement_code='AGEPD' ALLOW FILTERING; res: 441
Vue materialiser
CREATE MATERIALIZED VIEW memoire_par_departement AS
SELECT annee, matricule, departement_code
FROM memoire
WHERE departement_code IS NOT NULL
AND annee IS NOT NULL
AND matricule IS NOT NULL
PRIMARY KEY ((departement_code), annee, matricule);
SELECT COUNT(*) FROM memoire_par_departement WHERE departement_code ='AGEPD';
3.5
SELECT COUNT(*) FROM memoire_par_departement
WHERE departement_code = 'AGEPD'
AND annee = '2018-2019';
res: 0
Serie 8: Mise en place d'une base de donnee avec Redis
1.
SADD enseignants enseignants:L0012 enseignants:Q1452
HMSET enseignants:L0012 matricule "L0012" nom "Douwe Vincent" specialite "Genie Logiciel"
HMSET enseignants:Q1452 matricule "Q1452" nom "Boudjou Hortense" specialite "Cryptographie"
SADD cours cours:ITEL102 cours:ITEL104 cours:ITEL301 cours:ITEL303
HMSET cours:ITEL102 code "ITEL102" intitule "Algebre 1" credit 3 enseignant "enseignants:Q1452"
HMSET cours:ITEL104 code "ITEL104" intitule "Algorithme et programmation" credit 3 enseignant "enseignants:L0012"
HMSET cours:ITEL301 code "ITEL301" intitule "Cryptographie 1" credit 3 enseignant "enseignants:Q1452"
HMSET cours:ITEL303 code "ITEL303" intitule "Analyse et conception des algorithmes" credit 4 enseignant "enseignants:L0012"
LPUSH enseignants:L0012:cours "cours:ITEL104" "cours:ITEL303"
LPUSH enseignants:Q1452:cours "cours:ITEL102" "cours:ITEL301"
SADD etudiants etudiants:17Y51P etudiants:17Y065P
HMSET etudiants:17Y51P matricule 17Y51P nom "ANYAM KIAM" age 20
HMSET etudiants:17Y065P matricule 17Y065P nom "ZOGO FELIX" age 22
HMSET notes:17Y51P:ITEL102 valeur 12
HMSET notes:17Y51P:ITEL104 valeur 15
HMSET notes:17Y51P:ITEL301 valeur 16
HMSET notes:17Y51P:ITEL303 valeur 13
HMSET notes:17Y65P:ITEL102 valeur 15
HMSET notes:17Y65P:ITEL104 valeur 16
HMSET notes:17Y65P:ITEL301 valeur 16
HMSET notes:17Y65P:ITEL303 valeur 14
LPUSH notes:17Y65P "notes:17Y65P:ITEL102" "notes:17Y65P:ITEL104" "notes:17Y65P:ITEL301" "notes:17Y65P:ITEL303"
LPUSH notes:17Y51P "notes:17Y51P:ITEL102" "notes:17Y51P:ITEL104" "notes:17Y51P:ITEL301" "notes:17Y51P:ITEL303"
Serie 8: Mise en place d'une base de donnee avec Neo4J
1.
CREATE (c1:Cours{code : "ITEL101", intitule: "Analyse 1", credit: 3}),
(c2:Cours{code : "ITEL102", intitule: "Algebre 1", credit: 3}),
(c3:Cours{code : "ITEL103", intitule: "Circuits electriques", credit: 2}),
(c4:Cours{code : "ITEL104", intitule: "Algorithme et programmation", credit: 3}),
(c5:Cours{code : "ITEL105", intitule: "Introduction aux reseaux", credit: 2}),
(c6:Cours{code : "ITEL201", intitule: "Algorithme et structures de donnees", credit: 3}),
(c7:Cours{code : "ITEL202", intitule: "Base de donnees", credit: 3}),
(c8:Cours{code : "ITEL203", intitule: "Systemes embarques", credit: 3}),
(c9:Cours{code : "ITEL301", intitule: "Cryptographie 1", credit: 3}),
(c10:Cours{code : "ITEL302", intitule: "Base de donnees 2", credit: 2}),
(c11:Cours{code : "ITEL303", intitule: "Analyse et Conception des algorithmes", credit: 4}),
(c1)-[:ESTPREREQUIS]->(c5),
(c1)-[:ESTPREREQUIS]->(c7),
(c2)-[:ESTPREREQUIS]->(c4),
(c2)-[:ESTPREREQUIS]->(c9),
(c3)-[:ESTPREREQUIS]->(c8),
(c4)-[:ESTPREREQUIS]->(c6),
(c6)-[:ESTPREREQUIS]->(c7),
(c6)-[:ESTPREREQUIS]->(c11),
(c7)-[:ESTPREREQUIS]->(c11),
(c9)-[:ESTPREREQUIS]->(c11),
(e1:Enseignant{matricule: "L0012", nom: "Douwe Vincent", specialite: "Genie Logiciel"}),
(e2:Enseignant{matricule: "Q1452", nom: "Boudjou Hortense", specialite: "Cryptographie"}),
(e4:Enseignant{matricule: "L4785", nom: "Nounamo Dabou", specialite: "Genie Logiciel"}),
(e5:Enseignant{matricule: "D4521", nom: "Guiem Richard", specialite: "Analyse"}),
(e6:Enseignant{matricule: "R2451", nom: "Terdam Valentin", specialite: "Reseaux et Telecommunication"}),
(e7:Enseignant{matricule: "Q8425", nom: "Nisso Nicodem", specialite: "Systeme Embarques"}),
(e1)-[:DISPENSE]->(c4),
(e1)-[:DISPENSE]->(c11),
(e2)-[:DISPENSE]->(c2),
(e2)-[:DISPENSE]->(c9),
(e5)-[:DISPENSE]->(c1),
(e4)-[:DISPENSE]->(c6),
(e4)-[:DISPENSE]->(c7),
(e4)-[:DISPENSE]->(c10),
(e6)-[:DISPENSE]->(c5),
(e7)-[:DISPENSE]->(c3),
(e7)-[:DISPENSE]->(c8);
2.1 MATCH (c:Cours) RETURN c;
2.2 MATCH (c:Cours) RETURN COUNT(c);
2.3 MATCH (Enseignant{nom: "Douwe Vincent"})-[:DISPENSE]->(c:Cours) RETURN c;
2.4 MATCH (c:Cours{credit:2}) RETURN COUNT(c)
2.5 MATCH (c:Cours) WHERE c.credit >= 3 RETURN COUNT(c)
2.6 MATCH (e:Enseignant)-[:DISPENSE]->(c:Cours) RETURN e.nom, COUNT(c)
2.7 MATCH (c:Cours)-[:ESTPREREQUIS]->(:Cours{code:"ITEL303}) RETURN c
2.8 MATCH (:Cours{code:"ITEL101"})-[:ESTPREREQUIS]->(c:Cours) RETURN c
2.9 MATCH (c:Cours)-[*]->(:Cours{code:"ITEL303"}) RETURN c
2.10 MATCH (:Cours{code: "ITEL101})-[:ESTPREREQUIS]->(c:Cours) RETURN c
3. MATCH (c:Cours{code: "ITEL105"}) SET c.credit = 3
4.
MATCH (c:Cours{code: "ITEL101"}),
(c1:Cours{code: "ITEL103"})
CREATE (c)-[:ESTPREREQUIS]->(c1)
5. MATCH (c:Cours{code : "D4521"}) DETACH c