CouchDB - Présentation

Le système de gestion de base de données fournit un mécanisme de stockage et de récupération des données. Il existe trois principaux types de systèmes de gestion de bases de données, à savoir les SGBDR (systèmes de gestion de bases de données relationnelles), OLAP (systèmes de traitement analytique en ligne) et NoSQL.

SGBDR

RDBMS signifie Relational Database Management System. Le SGBDR est la base de SQL et de tous les systèmes de base de données modernes tels que MS SQL Server, IBM DB2, Oracle, MySQL et Microsoft Access.

Un système de gestion de base de données relationnelle (SGBDR) est un système de gestion de base de données (SGBD) basé sur le modèle relationnel introduit par EF Codd.

Les données du SGBDR sont stockées dans des objets de base de données appelés tables. Le tableau est une collection d'entrées de données associées et se compose de colonnes et de lignes. Il ne stocke que des données structurées.

OLAP

Le serveur de traitement analytique en ligne (OLAP) est basé sur le modèle de données multidimensionnel. Il permet aux gestionnaires et aux analystes d'avoir un aperçu des informations grâce à un accès rapide, cohérent et interactif aux informations.

Bases de données NoSQL

Une base de données NoSQL (parfois appelée Not Only SQL) est une base de données qui fournit un mécanisme pour stocker et récupérer des données autres que les relations tabulaires utilisées dans les bases de données relationnelles. Ces bases de données sont sans schéma, prennent en charge une réplication facile, ont une API simple, finalement cohérente, et peuvent gérer d'énormes quantités de données (big data).

L'objectif principal d'une base de données NoSQL est d'avoir les éléments suivants -

  • Simplicité de conception,
  • Mise à l'échelle horizontale, et
  • Contrôle plus fin de la disponibilité.

Les bases de données NoSQL utilisent des structures de données différentes des bases de données relationnelles. Cela accélère certaines opérations dans NoSQL. L'adéquation d'une base de données NoSQL donnée dépend du problème qu'elle doit résoudre. Ces bases de données stockent à la fois des données structurées et des données non structurées telles que des fichiers audio, des fichiers vidéo, des documents, etc. Ces bases de données NoSQL sont classées en trois types et sont expliquées ci-dessous.

Key-value Store- Ces bases de données sont conçues pour stocker des données dans des paires clé-valeur et ces bases de données n'auront aucun schéma. Dans ces bases de données, chaque valeur de données se compose d'une clé indexée et d'une valeur pour cette clé.

Exemples - BerkeleyDB, Cassandra, DynamoDB, Riak.

Column Store- Dans ces bases de données, les données sont stockées dans des cellules regroupées en colonnes de données, et ces colonnes sont ensuite regroupées en familles de colonnes. Ces familles de colonnes peuvent contenir n'importe quel nombre de colonnes.

Exemples - BigTable, HBase et HyperTable.

Document Store- Ce sont les bases de données développées sur l'idée de base des magasins clé-valeur où les «documents» contiennent des données plus complexes. Ici, chaque document se voit attribuer une clé unique, qui est utilisée pour récupérer le document. Ils sont conçus pour stocker, récupérer et gérer des informations orientées document, également appelées données semi-structurées.

Exemples - CouchDB et MongoDB.

Qu'est-ce que CouchDB?

CouchDB est une base de données open source développée par la fondation logicielle Apache. L'accent est mis sur la facilité d'utilisation, embrassant le Web. Il s'agit d'une base de données de stockage de documents NoSQL.

Il utilise JSON, pour stocker des données (documents), un script java comme langage de requête pour transformer les documents, le protocole http pour api pour accéder aux documents, interroger les index avec le navigateur Web. Il s'agit d'une application multi-master sortie en 2005 et devenue un projet apache en 2008.

Pourquoi CouchDB?

  • CouchDB dispose d'une API REST basée sur HTTP, qui permet de communiquer facilement avec la base de données. Et la structure simple des ressources et méthodes HTTP (GET, PUT, DELETE) est facile à comprendre et à utiliser.

  • Comme nous stockons les données dans la structure flexible basée sur des documents, il n'y a pas lieu de s'inquiéter de la structure des données.

  • Les utilisateurs bénéficient d'un mappage de données puissant, qui permet d'interroger, de combiner et de filtrer les informations.

  • CouchDB fournit une réplication facile à utiliser, grâce à laquelle vous pouvez copier, partager et synchroniser les données entre les bases de données et les machines.

Modèle de données

  • La base de données est la structure / le conteneur de données le plus externe de CouchDB.

  • Chaque base de données est une collection de documents indépendants.

  • Chaque document conserve ses propres données et son schéma autonome.

  • Les métadonnées du document contiennent des informations de révision, ce qui permet de fusionner les différences survenues lors de la déconnexion des bases de données.

  • CouchDB implémente un contrôle d'accès concurrentiel multi-version, pour éviter d'avoir à verrouiller le champ de la base de données pendant les écritures.

Caractéristiques de CouchDB: réduire le contenu

Stockage de documents

CouchDB est une base de données NoSQL de stockage de documents. Il fournit la possibilité de stocker des documents avec des noms uniques, et il fournit également une API appelée API HTTP RESTful pour lire et mettre à jour (ajouter, modifier, supprimer) les documents de base de données.

Dans CouchDB, les documents sont la principale unité de données et ils incluent également des métadonnées. Les champs de document sont nommés de manière unique et contiennent des valeurs de différents types (texte, nombre, booléen, listes, etc.), et il n'y a pas de limite définie pour la taille du texte ou le nombre d'éléments.

Les mises à jour des documents (ajouter, modifier, supprimer) suivent Atomicity, c'est-à-dire qu'elles seront sauvegardées complètement ou pas du tout sauvegardées. La base de données ne contiendra aucun document partiellement enregistré ou modifié.

Structure du document Json

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

Propriétés ACID

CouchDB contient des propriétés ACID comme l'une de ses fonctionnalités.

Cohérence - Lorsque les données de CouchDB ont été validées une fois, ces données ne seront ni modifiées ni écrasées. Ainsi, CouchDB garantit que le fichier de base de données sera toujours dans un état cohérent.

Un modèle MVCC (Multi-Version Concurrency Control) est utilisé par les lectures CouchDB, grâce auquel le client verra un instantané cohérent de la base de données du début à la fin de l'opération de lecture.

Chaque fois qu'un document est mis à jour, CouchDB vide les données dans le disque et l'en-tête de base de données mis à jour est écrit en deux morceaux consécutifs et identiques pour constituer les 4 premiers Ko du fichier, puis vidé de manière synchrone sur le disque. Les mises à jour partielles pendant le rinçage seront supprimées.

Si l'échec s'est produit lors de la validation de l'en-tête, une copie survivante des en-têtes identiques précédents restera, garantissant la cohérence de toutes les données précédemment validées. À l'exception de la zone d'en-tête, des contrôles de cohérence ou des réparations après un crash ou une panne de courant ne sont jamais nécessaires.

Compactage

Chaque fois que l'espace dans le fichier de base de données est gaspillé au-dessus d'une certaine étendue, toutes les données actives seront copiées (clonées) dans un nouveau fichier. Lorsque le processus de copie est entièrement terminé, l'ancien fichier sera supprimé. Tout cela se fait par processus de compactage. La base de données reste en ligne pendant le compactage et toutes les mises à jour et lectures sont autorisées à se terminer avec succès.

Vues

Les données dans CouchDB sont stockées dans des documents semi-structurés flexibles avec des structures implicites individuelles, mais il s'agit d'un modèle de document simple pour le stockage et le partage de données. Si nous voulons voir nos données de différentes manières, nous avons besoin d'un moyen de filtrer, d'organiser et de rapporter les données qui n'ont pas été décomposées en tableaux.

Pour résoudre ce problème, CouchDB fournit un modèle de vue. Les vues sont la méthode d'agrégation et de rapport sur les documents dans une base de données, et sont construites à la demande pour agréger, joindre et rapporter sur des documents de base de données. Étant donné que les vues sont créées dynamiquement et n'affectent pas le document sous-jacent, vous pouvez avoir autant de représentations de vues différentes des mêmes données que vous le souhaitez.

Histoire

  • CouchDB a été écrit en langage de programmation Erlang.
  • Il a été lancé par Damien Katz en 2005.
  • CouchDB est devenu un projet Apache en 2008.

La version actuelle de CouchDB est 1.61.