Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

21
1 Benchmarking NoSQL DataBase dans le cadre d’un projet IoT

Transcript of Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

Page 1: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

1

BenchmarkingNoSQL DataBase dans le cadre d’un projet IoT

Page 2: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

2

Système IoT

IoT représente l'extension d'Internet à des choses et à des lieux du monde physique. Alors qu'Internet ne se prolonge

habituellement pas au-delà du monde électronique, l'internet des objets (IdO, ou IoT pour Internet of Things en anglais)

représente les échanges d'informations et de données provenant de dispositifs présents dans le monde réel vers le

réseau Internet. L'internet des objets est considéré comme la troisième évolution de l'Internet, baptisée Web 3.0

(parfois perçu comme la généralisation du Web des Objets mais aussi comme celle du Web sémantique) qui fait suite à

l'ère du Web Social. L'internet des objets est en partie responsable de l'accroissement du volume de données générées

sur le réseau, à l'origine du Big Data. L'internet des objets revêt un caractère universel pour désigner des objets

connectés aux usages variés, dans le domaine de la e-santé, de la domotique ou du Quantified Self.fr.wikipedia.org

Page 3: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

3Les modèles de données Big-DataColonne – Clé/Valeur – Document -Graphe

ColonneApache Cassandra,

Hbase, BigTable

Key-ValueCouchbase, Redis,

Memcached

DocumentmongoDB,

Couchbase, Riak

Graphe Model: Ce modèle de représentation des données se base sur la théorie des graphes. Il s’appuie sur la notion de nœuds,

de relations et de propriétés qui leur sont rattachées. Ce modèle facilite la représentation du monde réel, ce qui le rend adapté au

traitement des données des réseaux sociaux. La principale solution est Neo4J.

Remarque: ce modèle semble n’est pas être celui qui réponds aux mieux aux attentes exigés des systèmes IoT.

Page 4: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

4Modèles des données en détailsExtensibiltés des modèles

Modèle “Colonne”Ce modèle ressemble à première vue à une table dans un SGBDR à la différence qu’avec

une BD NoSQL orientée colonne, le nombre de colonnes est dynamique. En effet, dans une

table relationnelle, le nombre de colonnes est fixé dés la création du schéma de la table et

ce nombre reste le même pour tous les enregistrements dans cette table.

Modèle “Clé-Valeur”Ce modèle peut être assimilé à une hashmap distribuée. Les données sont, donc,

simplement représentées par un couple clé/valeur. La valeur peut être une simple chaîne de

caractères, un objet sérialisé… Cette absence de structure ou de typage ont un impact

important sur le requêtage.

Modèle “Document”Ce modèle se base sur le paradigme clé valeur. La valeur, dans ce cas, est un document de

type JSON ou XML. L’avantage est de pouvoir récupérer, via une seule clé, un ensemble

d’informations structurées de manière hiérarchique. La même opération dans le monde

relationnel impliquerait plusieurs jointures.

Page 5: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

5

mongoDB

mongoDB est un produit

De MongoDB, Inc

Version actuelle : 2.6.7

www.mongodb.org

Cassandra

Cassandra est un produit de

DATASTAX & Apache foundation

Version actuelle : 2.0.12

www.planetcassandra.org

Couchbase

Couchbase est un produit de

Couchbase, Inc,

Version actuelle : 3.0.2

www.couchbase.com

NoSQL DataBaseOpen sources et leaders

Page 6: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

6MongoDB vs Cassandra vs CouchbaseCaractèristiques techniques

MongoDB Cassandra Couchbase

Catégorie Base de données Base de données Base de données

Licence AGPLv3 Apache Licence 2 Apache Licence 2

Model des données Document Colonnes, key/Value Key/Value, Document

Storage des données Système de fichiers RAM, Disque dûr Système de fichiers

Langage de manipulation API, REST, JavaScript API, Thrift protocol Memcached, REST, JavaScript

Types de données JSON, BSON, BLOB JSON, BLOB JSON, BLOB

Map Reduce OK OK OK

Compression OK OK OK

Intégrité de modèle Base Base MVCC

Atomicité NON OK Conditionnel

Indexation OK OK OK

Recherche Full text OK NON OK

Replication & Sharding OK OK OK

Page 7: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

7MongoDBFLEXIBILITE – SCALABILITE – PERFORMANCE- EXPRESSIVE – INDEXATION - COMMUNITE

FLEXIBILITELe modèle de données de document de

MongoDB rend facile pour vous le stockage des

données de n'importe quelle structure et permet

de modifier dynamiquement vos schémas de

base de données NoSQL.

SCALABILITE

Augmentez proportionnellement ou à l'échelle

horizontale, un simple serveur aux milliers de

nœuds. Déployez dans le Cloud et à travers des

multiples data-centers.

PERFORMANCE

Systèmes très performants exécutés à échelle.

Réalise des millions d'opérations par seconde. Il

diminue ainsi le charge du travail pour les

opérations de lectures ou écritures des données.

EXPRESSIVELe langage d'interrogation de données de

MongoDB fournit des opérateurs de niveau de

supérieur pour des mises à jour sur place. Les

conducteurs pour à peu près tout les langages

de programmation informatiques, tels que: Java,

PHP, NodeJS, C#...

INDEXATIONL'accès rapide, au grain fin aux données, y

compris des index entièrement cohérents sur

n'importe quel champ, aussi bien que géospatial,

qu’un texte de recherche et des index de types

TTL.

COMMUNITEMongoDB à l’avantage de possèder une grande

communauté de développeurs et DBA

connaissant une forte croissance, celle la plus

rapide du monde de NoSQL, et scindé derrière

leur logiciel pour assurer son succès, fournissant

le logiciel des services pour rendre la vie plus

facile aux développeurs.

www.mongodb.org

Page 8: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

8Apache CassandraFLEXIBILITE - SCALABILITE – PERFORMANCE - DISTRIBUTION – SIMPLICITE - TRANSACTION

FLEXIBILITEAvec des données, semi-structuré et peu

structuré, qui passe en courant dans des

demandes des applications modernes

d'aujourd'hui. Aussi satisfait dynamiquement des

changements de vos structures de données

quand vos besoins de données se développent.

SCALABILITE

Vous permet de facilement ajouter la capacité en

ligne pour accueillir plus de clients et plus de

données quand vous avez besoin.

Ajout des nœuds et des clusters à la volée sans

le besoin de redémarrer un serveur Cassandra

PERFORMANCE

Avec des réponse ultra-court face aux opérations

de CRUD et avec une courbe linéaire de montée

en charge par rapport à l’axe de temps qui

permet de doublez les nœuds pour garantir une

réponse conformes aux attentes de vos clients.

DISTRIBUTIONVous donne la flexibilité maximale pour distribuer

des données où vous avez besoin en

reproduisant des données à travers des data-

centers multiples, comme dans le Cloud public et

privés dans lesquels deviennent des

environnements de déploiement extrêmement

communs.

SIMPLICITEAvec tous l’incorporation des plusieurs nœuds

dans un groupe ou cluster master, il n'y a aucune

configuration complexe a mettre en œuvre, ainsi

la gérance des rôles d'administration devient

grandement simplifiée.

TRANSACTIONL'atomicité, l'isolement et la durabilité conforme

au modèle ACID par le biais des journaux de

logs assurent la durabilité de données en cas

des échecs de matériel, aussi bien que

l'isolement de transaction, l'atomicité, avec une

cohérence et consistance élevée.

www.planetcassandra.org

Page 9: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

9CouchbaseFLEXIBILITE - SCALABILITE – PERFORMANCE – MOBILITE – TEMPS REEL - ADMINISTRATION

FLEXIBILITEDes cross-data configurables pour une

réplication, y compris actif/actif, pour une

implémentation à grand échelle dans des cloud

publics ou privés.

SCALABILITE

Ajoutez ou enlevez des nœuds dans un cluster à

la demande grâce à un partage de l'architecture

et avec aucun point d'échec.

PERFORMANCE

Un système de cache intégré, en occurrence

Memcached qui assure pendant une basse

latence l'accès aux données avec ou sans

verrouillage pour assurer les opérations d’I/O au

niveau des différents nœuds et cluster.

MOBILITEUne base de données incorporée pour portable

et demandes des applications IoT pour accès

hors connexion et synchronisation automatique.

TEMPS REELL'intégration avec Hadoop, Elasticsearch et une

API pour des données en continu pour prendre

d'assaut pour l'analytique en temps réel.

ADMINISTRATIONUne administration intégrée en console et l'API

scripting avec un large de groupe contrôle pour

gérer de grands déploiements.

www.couchbase.com

Page 10: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

10Environnement documentale de test Fichiers JSON - Fichiers CSV

10.000 Documents

10 Milles documents, avec un

fichier de taille: 950 Ko

Fichier JSON d’origine: 2,58 Mo

Modèles pour les tests:

Document et Clé-Valeur

1.000.000 Documents

1 Millions documents, avec un

fichier de taille: 95 Mo

Fichier JSON d’origine: 258 Mo

Modèles pour les tests:

Clé-Valeur

10.000.000 Documents

10 Millions documents, avec un

fichier de taille 958 Mo

Fichier JSON d’origine: 2,46 Go

Modèles pour les tests:

Clé-Valeur

100.000 Documents

100 Milles documents, avec un

fichier de taille: 0.95 Mo

Fichier JSON d’origine: 25,8 Mo

Modèles pour les tests:

Document et Clé-Valeur

Page 11: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

11

Env-logiciels

Les logiciels utilisés sont:

MongoVue, DevOpsCenter, la

console Web de Couchebase

en mode graphique, la

console mongo, la console

cassandra et couchbase-cli.

Env-matériels

Ces tests sont effectués sur

un PC de type Intel Core i5 de

8 Go de RAM, CPU 33,30

GHz, 500Go d’espace de

stockage et Windows 7

Profesional 64 bits.

Pour assurer un environnement équitable, les mêmes structures et données pour tous les documents, Key/Value sont utilisés pour

les opérations de lecture, mise à jour, suppression ou création (CRUD: Create, Read, Update, Delete).

Plusieurs tests sont réalisés pour chaque opération pour s’assurer que les réponses des nos systèmes NoSQL soient homogènes.

Environnement matériels et logicielsCaractèristiques matérielles - Interfaces de tests

Page 12: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

12Nombre total de documents importer en occurenceComportement des databases pendant l’import massive de données

Page 13: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

13Import des fichiers CSV dans la base de donnéesLatence pour les operations d’imports des données au format CSV

Page 14: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

14Lecture d’un flot de données - ReadLatence des réponses pour les operations de lecture des résultats d’un flot de données

Page 15: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

15Lecture d’un seul document – Find ByLatence des réponses pour les operations de lecture des résultats d’un seul élément

Page 16: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

16Insertion d’un document – CreateLatence des réponses pour les operations de création d’un élément

Page 17: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

17Mise à jour d’un document - UpdateLatence des réponses pour les operations de mise à jour d’un document

Page 18: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

18Suppression d’un document - DeleteLatence des réponses pour les operations de suppression d’un document

Page 19: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

19Récapitulatif des résultatsClassement des moteurs NoSQL selon leurs statistiques pour un déployement dans un système IoT

Analyse des résultatsSuite à ces résultats et constats, et en prenant

compte des circonstances applicatives d’un

système IoT, le moteur de base de données

Apache Cassandra peut constituer un meilleur

choix, avec une alternative MongoDB

intéressante au niveau de gérance de grande

quantité et flot de données en mêmes temps. En

ce qui concernat Couchbase, son comportement

et ces performances sont proportionnelles par

rapport aux aspects matériels et la quantité

mémoire allouée pour les instance Buckets pour

manipuler les données dans une situation normal

exercé par les deux autres moteurs NoSQL.

Couchbase à crasher 2 fois de suite pour un

import massive de données.

Contrairement à MongoDBb qui ne gère pas la

tâche d’administration du cache et laisse cette

approche pour une couche bas niveau du

système d’exploitation pour la gérée.

Apache cassandra fait des meilleures

performances au niveau Read, Insert, Update et

Delete, càd les opérations de CRUD

nécessairement employées en masse dans une

architecture moderne IoT.

Page 20: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

20BibliographiesLiens externes – Téléchargement - Mots clés

MongoDB: www.mongodb.org

Téléchargement: www.mongodb.org/downloads

Apache Cassandra: www.planetcassandra.org

Téléchargement: www.datastax.com/download

Couchbase: www.couchebase.com

Téléchargement: www.couchbase.com/nosql-databases/downloads

Liens externes

Mots clés

Benchmarking NoSQL DataBase, IoT System, IoT Architecture, MongoDB, Apache Cassandra, Couchbase,

Big-Data, Colonne, Clé/Valeur, Document, CSV Format, MongoVue, DevOpsCenter, Couchbase Web Console,

Diagrammes de comparaisons, NoSQL Classement, import, operations CRUD, Create, Read, Update, Delete

Page 21: Benchmarking NoSQL DataBase dans le cadre d'un projet IoT

21A proposPour vos remarques et suggéstions

ALLAOUI Chaker

Senior MEAN & Big Data Developer

Mail: [email protected]

Visit my profile in LinkedIn

http://tn.linkedin.com/in/chakerallaoui

Visit my web site

http://allaoui-chaker.github.io