II- CHOIX
TECHNOLOGIQUE ET MISE EN OEUVRE
1. Choix
technologique
A partir de l'étude de l'architecture technique, il
faut sélectionner les composants spécifiques, tels que la
plate-forme matérielle et logicielle SGBD à mettre en oeuvre. Une
fois les produits installés ils sont testés
méticuleusement afin de garantir une intégration adéquate
d'un bout à l'autre de l'environnement.
· LANGAGE DE PROGRAMMATION
Tableau
16 : Langages de programmation utilisés
LANGAGE
|
VERSION
|
ROLE
|
PYTHON
|
2.7
|
Favorise la programmation impérative
structurée
|
HTML
|
5
|
Création des pages web
|
CSS
|
3
|
Mise en forme de style
|
NoSQL
|
|
Manipulation des requêtes
|
Jinja
|
|
Dynamiser les pages html
|
JavaScript
|
3
|
Dynamiser les pages web
|
2. Ressourceslogicielles
Tableau
17 : Ressources logicielles
Outils
|
Version
|
Editeur
|
Description
|
Taille
|
MongoDB
|
2.4
|
Romain Bourdon
|
SGBD orienté documents
|
80Mo
|
Mozilla Firefox
|
31.0
|
Mozilla
|
Navigateur web
|
28,8Mo
|
Adobe Photoshop CS5
|
4
|
Suite Adobe
|
Retouche d'images
|
182Mo
|
Gantt Projet
|
2.0.10
|
Free software fondation
|
Editer le diagramme de planification du projet
|
9.22 Mo
|
PowerAMC
|
12.5
|
Sybase
|
AGL
|
131 Mo
|
Microsoft office
|
2016
|
Microsoft
|
Suite bureautique permettant l'édition de plusieurs
rapports
|
600 Mo
|
Django Framework
|
6.0
|
Django software fondation
|
Framework web Python open-source
|
10 Mo
|
CentOs 7
|
7
|
Communauté Red Hat (Unix)
|
Distribution GNU/Linux
|
4 Giga
|
Emacs
|
2.5
|
Richard Stallman
|
Editeurs de texte
|
Editeur de code
|
3. Choix technologique
Tableau
18 : Choix technologique
NOSQL (MongoDB)
|
SQL (MySQL)
|
MongoDB est un SGBD
Orienté Documents, open-source python développé par
MongoDB, Inc. Il stocke les données dans JSON-comme des documents qui
peuvent varier dans la structure. Informations connexes est stockée pour
l'accès de requête rapide à travers le langage de
requête MongoDB. MongoDB utilise les schémas dynamiques, ce qui
signifie que vous pouvez créer des collections sans avoir d'abord
définir la structure.
|
MySQL est un
système de gestion de base de données relationnelle open-source
(SGBDR) qui est développé, distribué et supporté
par Oracle Corporation. Comme d'autres systèmes relationnels, stocke les
données dans des tables MySQL et utilise un langage structuré de
requêtes (SQL) pour un accès de base de données
|
TERMINOLOGIE ET CONCEPTS
|
Collection
|
Table
|
Document
|
Row
|
Champ
|
Colonne
|
COMPARAISON DES FONCTIONNALITES
|
Rich Data Model
|
Oui
|
Rich Data Model
|
Non
|
DyamicSchema
|
Oui
|
DyamicSchema
|
Non
|
Données saisies
|
Oui
|
Données saisies
|
Oui
|
Jointures
|
Non
|
Jointures
|
Oui
|
QUERY LANGUAGE
|
INSERT INTO utilisateurs
(user_id, âge, statut)
|
db.users.insert ({user_id: "bcd001",Âge: 45,statut:
"A"})
|
SELECT * FROM utilisateurs
|
db.users.find ()
|
Utilisateurs UPDATE set status = "C"
Où l'âge> 25
|
db.users.update ({Age: {$ gt: 25}},{$ Ensemble: {status:
"C"}},{Multiples: true})
|
Pourquoi utiliser MongoDB au lieu de MySQL?
|
Les Organisations de toutes tailles adoptent MongoDB, car il
leur permet de construire des applications plus rapidement, gérer les
types de données très diverses, et gérer des applications
plus efficacement à l'échelle. Le développement est
simplifié et son utilisation enlève la couche complexe Mapping
Objet-Relationnel (ORM) qui traduit les objets dans le code de tables
relationnelles.
|
4. Description détaillée de la mise en
oeuvre
Cette partie consiste à décrire et à
présenter la création de la base de données et de quelques
tables, quelques codes sources d'une part, la présentation des
interfaces d'autre part.
· Quelques requêtes sous MongoDB
· Création de la base de
donnée
>db.createUser({
user:"testuser",pwd:"testpwd ",roles:[{role:"dbOwner", db: "testdb"}]})
Successfully added user: {
"user" : "testuser",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "testdb"
}
]
}
· Afficher les informations concernant un
utilisateur
>db.system.users.find()
· Créer une collection
>db.createCollection("my collection")
{"ok":1}
· Afficher la liste des collections de base de
données
>show collections
· Quelques codes sources python
· Classe permettant la synchronisation de la base de
données distante et la base de données locale
class DrmUserUpdate:
"""DrmUserUpdate deals with keeping the DRM local database
in sync with the Dreamreal - Gymglish users Database.
"""
def InitCompanies(self,vecGgCid=vecGgCid):
"""initialization function of the corporate collection
"""
db = self.client[self.dbname]
collection = db.companies
for cle,valeur in vecGgCid.items():
collection.insert({"name": valeur,"ggcid": cle})
return collection
if __name__ == '__main__':
· Fonction (constructeur) de connexion a la
Base de Données
def__init__(self, DbSection='WORKDATABASE'):
"""Init
"""
user=drmconf.config.get(DbSection,'USER')
host=drmconf.config.get(DbSection,'HOST')
port=drmconf.config.get(DbSection,'PORT')
pwd=drmconf.config.get(DbSection,'PWD')
self.dbname=drmconf.config.get(DbSection,'DBNAME')
url='mongodb://' + user + ':' + pwd + '@' + host + ':' +
port + '/' + self.dbname
self.client=pymongo.MongoClient(url)
· Fonction de test (test unitaire) dela
fonction ExcelTocsv
deftestExcelTocsv(self):
"""test the Convertion excel to csv function
"""
filename = drmconf.drmenginepath + "/helpers/test/toto.xls"
fd = open(filename)
DUU=drmuserupdate.DrmUserUpdate(DbSection='TESTDATABASE')
filecontent = fd.read()
res=DUU.excelTocsv(filecontent)
self.failUnless(res.count("\n") == 84)
self.failUnless(res.count(";") == (85 * 18))
list = res.split("\n")
#assert value in cell(J,9) is 5.1
row = list[7]
columns = list[7].split(";")
self.failUnless(columns[9] == "5.1")
|