Tag

Graph database

Browsing

Graph Database

⌚: 2 minutes

Une Graph Databases, également appelée base de données orientée graphes, est un type de base de données NoSQL qui utilise la théorie des graphes pour stocker, cartographier et interroger les relations.

Une base de données de graphes est essentiellement une collection de nodes ou noeud en français et d’arêtes. Chaque nœud représente une entité (telle qu’une personne ou une entreprise) et chaque degrés représente une connexion ou une relation entre deux nœuds. Chaque nœud d’une base de données de graphe est défini par un identifiant unique, un ensemble de degrés sortants et/ou de degrés entrants et un ensemble de propriétés exprimées sous forme de paires clé/valeur. Chaque degrés est défini par un identificateur unique, un nœud de départ et/ou de fin et un ensemble de propriétés. Le mantra des adeptes des bases de données graphiques est le suivant : « Si vous pouvez le mettre sur un tableau blanc, vous pouvez le mettre das une base de données graphique »

Les bases de données de graphiques sont bien adaptées à l’analyse des interconnexions, c’est pourquoi l’utilisation des bases de données de graphiques pour extraire des données des médias sociaux a suscité un grand intérêt. Les bases de données graphiques sont également utiles pour travailler avec des données dans le commerces car ce dernier implique des relations complexes et un schéma dynamique, comme la gestion d’une chaîne d’approvisionnement, l’identification de la source d’un problème de téléphonie IP et la création de recommandations « les clients qui ont acheté ceci ont également regardé… ».

 

NoSQL (Not Only SQL database)

⌚: 6 minutes

NoSQL est une approche de la conception de bases de données qui peut s’adapter à une grande variété de modèles de données, y compris les formats avec des clés, des documents, des colonnes et des graphiques (Graph Database). NoSQL, qui signifie « not only SQL », est une alternative à la base de donnée relationnelle traditionnelles dans lesquelles les données sont placées dans des tables et le schéma de données est soigneusement conçu avant la construction de la base de données. Les bases de données NoSQL sont particulièrement utiles pour travailler avec de grands ensembles de données distribuées.

NoSQL vs SGBDR

Le terme NoSQL peut être appliqué à certaines bases de données antérieures au système de gestion de bases de données relationnelles, mais il désigne plus communément les bases de données construites au début des années 2000 dans le but de regrouper des bases de données dans des applications web et du Cloud. Dans ces applications, les exigences de performance et d’évolutivité l’emportaient sur la nécessité d’une cohérence immédiate et rigide des données que la SGBDR fournissait aux applications d’entreprise transactionnelles.

En particulier, les systèmes NoSQL n’étaient pas tenus de suivre un schéma relationnel établi. Les GAFAM  comme Google et Amazon ont utilisé les bases de données NoSQL très tôt pour se concentrer sur des objectifs opérationnels  et utiliser des bases de données relationnelles comme complément lorsque la cohérence des données étaient plus importantes et plus adéquates aux données qui y seront stockées. En effet il est difficile sur une base de donnée classique d’enregistrer des vidéos de format différents et de taille inconnue à l’avance, sur Youtube par exemple.

Les premières bases de données NoSQL pour le web et les applications cloud avaient tendance à se concentrer sur des caractéristiques très spécifiques de la gestion des données. La capacité à traiter de très gros volumes de données et à les distribuer rapidement à travers les clusters de calcul qui étaient des caractéristiques souhaitables dans la conception du web et du Cloud. Les développeurs qui ont mis en place des systèmes web et de Cloud computing ont également cherché à créer des schémas de données flexibles – ou pas de schéma du tout – pour mieux permettre des changements rapides aux applications qui étaient continuellement mises à jour.

Key-value stores

Les key-value stores, ou bases de données de valeurs clés, mettent en œuvre un modèle de données simple qui associe une clé unique à une valeur associée. Ce modèle étant simple, il peut conduire au développement de bases de données de valeurs clés, qui sont extrêmement performantes et hautement évolutives pour la gestion des sessions et la mise en cache dans les applications web. Les implémentations diffèrent dans la façon dont elles sont orientées pour fonctionner avec la RAM, les lecteurs à semi-conducteurs (SSD) ou les lecteurs de disque. Citons par exemple Aerospike, Berkeley DB, MemchacheDB, Redis et Riak.

Bases de données pour les documents

Les bases de données de documents, également appelées « Document stores », stockent des données semi-structurées et des descriptions de ces données sous forme de documents. Elles permettent aux développeurs de créer et de mettre à jour des programmes sans avoir besoin de référencer un schéma directeur. L’utilisation des bases de données de documents a augmenté avec l’utilisation de JavaScript et de la notation d’objet JavaScript (JSON), un format d’échange de données qui s’est largement répandu parmi les développeurs d’applications web, bien que XML et d’autres formats de données puissent également être utilisés. Les bases de données documentaires sont utilisées pour la gestion de contenu et le traitement des données des applications mobiles. Couchbase Server, CouchDB, DocumentDB, MarkLogic et MongoDB sont des exemples de bases de données documentaires.

Graph Data

Les « Graph Data Store » organisent les données sous forme de nœuds, qui sont comme des enregistrements dans une base de données relationnelle, avec des arêtes, qui représentent les connexions entre les nœuds. Comme le système de graphe stocke les relations entre les nœuds, il peut prendre en charge des représentations plus riches des relations entre les données. De plus, contrairement aux modèles relationnels qui reposent sur des schémas stricts, le modèle de données des graphes peut évoluer avec le temps et l’utilisation. Les bases de données de graphes sont appliquées dans des systèmes qui doivent cartographier les relations, tels que les systèmes de réservation ou la gestion des relations avec les clients. Parmi les exemples de bases de données de graphiques, on peut citer AllegroGraph, IBM Graph, Neo4j et Titan.

Évolution du NoSQL

La Data Base de Berkeley a été un système influent dans l’évolution de l’utilisation des bases de données NoSQL. Développée à l’Université de Californie à Berkeley, au début des années 1990, la Berkeley DB était largement décrite comme une base de données intégrée qui répondait étroitement aux besoins de stockage d’applications spécifiques. Ce logiciel open source fournissait un simple stockage des valeur clés. Berkeley DB a été commercialisé par Sleepycat Software en 1999. La société a ensuite été rachetée par Oracle en 2006. Oracle a continué à soutenir l’open source Berkeley DB.

Parmi les autres bases de données NoSQL qui ont pris de l’importance, citons les bases de données NoSQL hébergées dans le Cloud de Amazon DynamoDB, Google BigTable, ainsi que Apache Cassandra et MongoDB.

Les classifications de base des bases de données NoSQL ne sont que des indications. Au fil du temps, les fournisseurs ont mélangé et fait correspondre des éléments de différents  de bases de données NoSQL pour obtenir des systèmes plus utiles et performant. Cette évolution est visible, par exemple, dans MarkLogic, qui a ajouté un Graph data store et d’autres éléments à ses bases de données de documents d’origine. Couchbase Server prend en charge à la fois les approches par valeur clé et par document. Cassandra a combiné des éléments de valeurs-clés avec Wide Column et une Graph Data. Parfois, des éléments NoSQL sont mélangés avec des éléments SQL, créant ainsi une variété de bases de données dites multimodèles.

Data Structure

⌚: 4 minutes

Une data structure est un format spécialisé pour organiser, traiter, récupérer et stocker des données. Bien qu’il existe plusieurs types de structures de base de donnée, toute structure de données est conçue pour organiser les données en fonction d’un objectif spécifique afin qu’elles puissent être accessibles et utilisées de manière appropriée.

En programmation, une structure de données peut être sélectionnée ou conçue pour stocker des données dans le but de les travailler avec divers algorithmes. Chaque structure de données contient des informations sur des valeurs, des données, des relations entre les données et les fonctions qui peuvent être appliquées aux données.

Caractéristiques des structures de données

Les Data Structure sont souvent classées en fonction de leurs caractéristiques. Les caractéristiques possibles sont les suivantes :

  • Linéaire ou non linéaire : Cette caractéristique décrit si les éléments de données sont disposés dans un ordre chronologique, par exemple avec un tableau, ou dans un ordre non ordonné, par exemple avec un graphique (Voir Graph Database).
  • Homogène ou non-homogène : Cette caractéristique indique si tous les éléments de données d’un référentiel sont du même type ou de types différents (Textes, images, vidéos…).
  • Statique ou dynamique : Cette caractéristique décrit la manière dont les structures de données sont compilées. Les structures de données statiques ont des tailles, des structures et des emplacements de mémoire fixes au moment de la compilation. Les structures de données dynamiques ont des tailles, des structures et des emplacements de mémoire qui peuvent diminuer ou augmenter selon l’utilisation.

Types de Data Structure

Les types de Data Strcture sont déterminés par les types d’opérations nécessaires ou les types d’algorithmes qui seront appliqués. Ces types comprennent :

  • Tableaux – Un tableau stocke une collection d’éléments dans des emplacements mémoire adjacents. Les éléments qui sont du même type sont stockés ensemble afin que la position de chaque élément puisse être calculée ou récupérée facilement. Les tableaux peuvent être de longueur fixe ou indefinie.
  • Piles (Stack) – Une pile stocke une collection d’éléments dans l’ordre linéaire dans lequel les opérations sont appliquées. Cet ordre peut être le dernier entré, premier sorti (LIFO) ou le premier entré (first in), premier sorti (First Out-FIFO).
  • Files d’attente – Une file d’attente stocke une collection d’articles similaire à une pile ; cependant, l’ordre des opérations ne peut être que premier entré, premier sorti.
  • Listes liées – Une liste liée stocke une collection d’articles dans un ordre linéaire. Chaque élément, ou nœud, d’une liste liée contient un élément de données ainsi qu’une référence, ou un lien, vers l’élément suivant de la liste.
  • Arbres – Un arbre stocke une collection d’éléments de manière abstraite et hiérarchique. Chaque nœud est lié à d’autres nœuds et peut avoir plusieurs sous-valeurs, également appelées enfants.
  • Graphiques- Un graphique stocke une collection d’éléments de manière non linéaire. Les graphes sont constitués d’un ensemble fini de nœuds, également appelés sommets, et de lignes qui les relient, également appelées arêtes. Ils sont utiles pour représenter des systèmes de la vie réelle tels que les réseaux informatiques.
  • Tries – Un trie, ou arbre de mots-clés, est une structure de données qui stocke des chaînes de caractères sous forme d’éléments de données pouvant être organisés dans un graphique visuel.
  • Tables de hachage – Une table de hachage, ou une carte de hachage, stocke une collection d’éléments dans un tableau associatif qui trace les clés des valeurs. Une table de hachage utilise une fonction de hachage pour convertir un index en un tableau de cases qui contient l’élément de données désiré.

 

Ces derniers sont considérés comme des structures de données complexes car ils peuvent stocker de grandes quantités de données interconnectées. Les exemples de structures de données primitives, ou de base, sont les entiers, les flotteurs, les booléens et les caractères.

  • Hiérarchie des structures de données
  • Utilisations des structures de données

 

En général, les structures de données sont utilisées pour mettre en œuvre les formes physiques des types de données abstraites. Cela peut se traduire par diverses applications, comme l’affichage d’une base de données relationnelle sous la forme d’un arbre binaire.

Dans les langages de programmation, les structures de données sont utilisées pour organiser le code et les informations dans un espace numérique. Par exemple, les listes et dictionnaires Python ou les tableaux et objets JavaScript sont des structures de codage courantes utilisées pour stocker et récupérer des informations. Les structures de données sont également un élément essentiel de la conception de logiciels efficaces.

Importance des structures de données

Les structures de données sont essentielles pour gérer efficacement de grandes quantités de données, telles que les informations conservées dans des bases de données ou des services d’indexation. La maintenance correcte des systèmes de données nécessite l’identification de l’allocation de la mémoire, des interrelations entre les données et des processus de données, autant d’éléments auxquels les structures de données contribuent.

En outre, il est non seulement important d’utiliser des structures de données, mais aussi de choisir la structure de données appropriée pour chaque tâche. Le choix d’une structure de données inadaptée pourrait entraîner des temps d’exécution lents ou un code non réactif. Quelques facteurs à prendre en compte lors du choix d’une structure de données incluent le type d’informations qui seront stockées, l’emplacement des données existantes, la manière dont les données doivent être triées et la quantité de mémoire à réserver pour les données.