Difference between revisions of "VT2015 Graph Databases"

From air
Jump to navigation Jump to search
Line 1: Line 1:
 
==Synthèse==
 
==Synthèse==
   
Introduction
+
====Introduction====
------------
 
   
 
La démocratisation des bases de données en graphe viens en continuation au mouvement NoSQL(NotOnlySQL) qui à prône l'idée que les BD relationnelles ne sont pas le seul moyen de stockage.
 
La démocratisation des bases de données en graphe viens en continuation au mouvement NoSQL(NotOnlySQL) qui à prône l'idée que les BD relationnelles ne sont pas le seul moyen de stockage.
Line 8: Line 7:
 
On est en droit de se demander quelle est l'utilité des BD en graphe.
 
On est en droit de se demander quelle est l'utilité des BD en graphe.
   
Motivations
+
====Motivations====
  +
-----------
 
   
 
Pour faire court, 2 raisons motivent l'utilisation de BD en graphe :
 
Pour faire court, 2 raisons motivent l'utilisation de BD en graphe :
Line 21: Line 20:
 
Bref, il y a autant de cas d'utilisations qu'il y a de problème de graphe nécessitant une persistance des données dans le temps.
 
Bref, il y a autant de cas d'utilisations qu'il y a de problème de graphe nécessitant une persistance des données dans le temps.
   
Analyse de marché
+
====Analyse de marché====
  +
-----------------
 
   
 
On peut répertorier les bases de données sous 3 catégories. Et dans chacune des distinctions sont possibles. L'ordre ressemble a celui-ci :
 
On peut répertorier les bases de données sous 3 catégories. Et dans chacune des distinctions sont possibles. L'ordre ressemble a celui-ci :
Line 40: Line 39:
 
Ce qui différencie une BD relationnelle orientée colonne et à une autre orientée ligne est la façon dont la sérialisation des données est effectuée sur le disque dur. En *orientée-colonne* les colonnes d'une table sont écrites sur disque successivement de manière contiguë. En *orientée-ligne* les lignes sont cette fois-ci écrites successivement.
 
Ce qui différencie une BD relationnelle orientée colonne et à une autre orientée ligne est la façon dont la sérialisation des données est effectuée sur le disque dur. En *orientée-colonne* les colonnes d'une table sont écrites sur disque successivement de manière contiguë. En *orientée-ligne* les lignes sont cette fois-ci écrites successivement.
   
Comparatif de performance
+
====Comparatif de performance====
  +
-------------------------
 
  +
 
Pour ce donner une idée de performance, je reprend l'exemple d'un benchmark réalisé par Alekh Jindal, un post doctorant dans le groupe Data base Group du laboratoire MIT CAIL.
  +
On peut reconnaître 2 types de BD :
  +
* Neo4j (en graphe)
  +
* les autres (en relationnelle). Plus précisément la
  +
** Vertica est orientée colonne
  +
** MySQL est orientée ligne
  +
** VoltDB est orientée stockage en RAM
  +
   
Pour ce donner une idée de performance, je reprend l'exemple d'un benchmark réaliser par Alekh
 
   
 
To be continued ...
 
To be continued ...

Revision as of 00:15, 6 October 2015

Synthèse

Introduction

La démocratisation des bases de données en graphe viens en continuation au mouvement NoSQL(NotOnlySQL) qui à prône l'idée que les BD relationnelles ne sont pas le seul moyen de stockage. Aussi on ne peut oublier de souligner, l'explosion des réseaux sociaux qui à tout aussi favorisé leur apparition. Je pense notamment à facebook, twitter, linkedIn qui furent les pionniers vers cette démocratisation avec l'élaboration de "wrappers" de BD relationnelle facilitant l'usage de structures en graphe (eg. TAO, FlockDB). On est en droit de se demander quelle est l'utilité des BD en graphe.

Motivations

Pour faire court, 2 raisons motivent l'utilisation de BD en graphe :

  • posséder une structure de donnée qui reflète l'architecture de l'application à coder. C'est typique de l'application à consonance *networking* : facebook, etc...
  • une syntaxe de requête plus *graph-friendly*

Les cas d'utilisations des BD en graphe sont multiples :

  • centralisation des logs issues d'applications hétérogènes mais dont les interactions sont complexes.
  • un gestionnaire de modules, ou bibliothèques (NPM, ...) nécessitant un graphe de dépendances.

Bref, il y a autant de cas d'utilisations qu'il y a de problème de graphe nécessitant une persistance des données dans le temps.

Analyse de marché

On peut répertorier les bases de données sous 3 catégories. Et dans chacune des distinctions sont possibles. L'ordre ressemble a celui-ci :

  • les relationnelles : basées sur une structure en tables
    • orientée colonne (eg. Vertica)
    • orientée ligne (eg. MySQL)
  • les NotOnlySQL : basées sur différents systèmes
    • clé-valeur (eg. Redis)
    • document (eg. MongoDB)
    • ...
  • les structures en graphe : basées sur différents systèmes
    • une structure en graphe (eg. Neo4j, LDAP)
    • *wrapper* d'une BD relationnelle (eg. TAO, FlockDB)

Ce qui différencie une BD relationnelle orientée colonne et à une autre orientée ligne est la façon dont la sérialisation des données est effectuée sur le disque dur. En *orientée-colonne* les colonnes d'une table sont écrites sur disque successivement de manière contiguë. En *orientée-ligne* les lignes sont cette fois-ci écrites successivement.

Comparatif de performance

Pour ce donner une idée de performance, je reprend l'exemple d'un benchmark réalisé par Alekh Jindal, un post doctorant dans le groupe Data base Group du laboratoire MIT CAIL. On peut reconnaître 2 types de BD :

  • Neo4j (en graphe)
  • les autres (en relationnelle). Plus précisément la
    • Vertica est orientée colonne
    • MySQL est orientée ligne
    • VoltDB est orientée stockage en RAM


To be continued ...