Les données sont l’élément central de la data science. La réussite (comme l’échec) d’un projet data dépend grandement des données informatiques dont on dispose.
Par conséquent, le stockage de données est un défi technique crucial. Beaucoup de technologies de stockage existent, avec leurs avantages et leurs inconvénients respectifs.
L’objectif de cet article est de faire un tour d’horizon de ces technologies et de vous donner des clés de réflexion pour savoir quelle technologie est la plus adaptée à vos besoins. On laissera de côté les technologies « exotiques » pour se concentrer sur les options courantes dans l’industrie aujourd’hui.
Expliquez-nous votre rôle chez Cisco ?
Le premier sujet à traiter est la différence entre les technologies dites « SQL » et les celles dites « NoSQL ». On en parlait déjà dans cet article, notamment en se basant sur le théorème de Brewer.
Les technologies SQL sont les plus répandues et les plus matures. Elles sont largement dominantes dans le monde de la tech, big data mis à part : lorsqu’on regarde un classement de popularité des technologies de stockage, on retrouve quatre technologies SQL en haut du classement (avec une avance confortable).
Cependant, le développement récent du big data a fait apparaître un besoin pour des technologies faisant preuve de flexibilité, tolérantes aux erreurs et adaptées à des formats de fichiers divers, d’où le développement de technologies NoSQL.
Expliquez-nous votre rôle chez Cisco ?
Parmi les leaders sur les technologies SQL, on retrouve Oracle, MySQL, Microsoft SQL Server et Postgre SQL.
À noter que SQL est un langage qui contient un certain nombre de standards. Mais chaque fournisseur de technologie SQL apporte ses modifications. Ainsi, créer une table ne se codera pas exactement de la même manière sur MySQL ou Microsoft SQL Server.
Vous pourriez donc avoir intérêt à favoriser une technologie SQL en fonction des compétences que vous avez en interne. Cependant, les différences restent minimes.
Globalement, si vos données peuvent être stockées dans une base de données SQL, c’est sûrement vers cette variante qu’il faut vous orienter. En effet, les technologies NoSQL sont plus flexibles, ce qui veut aussi dire plus laxistes : la cohérence, l’intégrité ou encore l’unicité des données peut en pâtir.
Open source ou propriétaires
Dans les technologies SQL, une différence notable concerne leurs licences : certaines sont open-source (MySQL, Postgre SQL, MariaDB…) tandis que d’autres sont propriétaires (Oracle, Microsoft SQL Server…).
Cela a un impact sur le coût tout d’abord : les solutions propriétaires sont destinées surtout aux grandes entreprises. Pour les petites et moyennes entreprises, il sera probablement moins coûteux d’utiliser les options open-source (tout aussi capable techniquement parlant).
Le niveau de service aussi sera différent : les solutions open source sont « brutes de décoffrage », à vous de tout mettre en place. À l’inverse, les solutions comme Oracle ou Microsoft peuvent être accompagnées d’un service client, d’une infrastructure, de fonctionnalités supplémentaires…
NoSQL : un choix d’options très diverses
Les technologies SQL se ressemblent beaucoup et les différences sont surtout liées aux modalités d’utilisation. En revanche, pour les technologies NoSQL, il existe des différences fondamentales !
On peut regrouper les technologies NoSQL principales en quatre groupes, que nous allons détailler ci-dessous.
Orientée document (document-based)
Commençons par les technologies de bases de données orientées document : chaque élément est stocké sous la forme d’un document (souvent de type JSON ou XML).
À l’intérieur de chaque document sont stockées des informations relatives à l’élément en question (par exemple, un document peut représenter un utilisateur et dans le document on trouvera son nom, son email, son numéro de téléphone…).
Cette technologie est préférable à une base de données SQL si :
- vos éléments n’ont pas de relations claires les uns avec les autres,
- les informations contenues dans chaque élément sont régulièrement sujettes à des changements (leurs données sont peu ou pas structurées),
- vous souhaitez requêter vos données sous forme de recherche texte – auquel cas Elastic Search est probablement votre meilleure option.
Base de données clé-valeur (key-value)
Cette technologie est la plus facile à appréhender : chaque élément (valeur) est stocké puis indexé avec une clé unique.
Étant donné la simplicité de cette approche, il s’agit souvent de données temporaires et avec une structure simple. Cette technologie est idéale pour la mise en cache par exemple, car elle présente de très bonnes performances, en lecture particulièrement.
Redis est la solution la plus répandue dans cette catégorie.
Orientée colonne (wide column-based)
Cette technologie donne la priorité aux colonnes représentant les propriétés des éléments. Les données stockées ne sont pas regroupées par éléments (comme c’est le cas des technologies précédentes), mais par colonnes (donc par propriétés).
L’avantage principal de cette technologie est sa capacité à analyser rapidement un très gros volume de données, lorsque vous souhaitez agréger toutes les données d’une colonne, par exemple. C’est donc une technologie très utile en big data. Inutile en revanche de s’en servir pour des bases de données de taille « raisonnable ».
C’est cette technologie qu’utilise Google Cloud Bigtable, ou encore HBase qui est open-source et qui s’utilise avec Hadoop pour de l’analyse big data.
Orientée graphe (graph database)
Il existe aussi une technologie de base de données orientée graphe. Dans ce cas, l’accent est mis sur les relations entre les éléments.
Une base de données orientée graphe peut être utile lorsque vous manipulez des données très interconnectées et que ces connexions sont aussi (voire plus) importantes que les données elles-mêmes. C’est typiquement le cas dans certaines analyses de réseaux sociaux.
Neo4J est la solution la plus utilisée à cette fin.
Comme vous pouvez le voir, le développement des technologies NoSQL a apporté beaucoup de nouveautés et d’innovations, pouvant être utile dans certains cas.
Cependant, les bases de données SQL restent les solutions les plus matures et donc les solutions à privilégier pour des cas d’utilisation classique.