Quelle est la différence entre une base de données ACID et une base de données BASE ?


Quelle est la différence entre une base de données ACID et une base de données BASE ?

ACID et BASE sont des modèles de transactions de base de données qui déterminent la manière dont une base de données organise et manipule les données. Dans le contexte des bases de données, une transaction est toute opération que la base de données considère comme une seule unité de travail. Une transaction doit être exécutée intégralement pour que la base de données reste cohérente. Par exemple, lorsque vous transférez de l’argent d’un compte bancaire à un autre, l’argent doit quitter votre compte et doit être ajouté au compte tiers. Vous ne pouvez pas dire que la transaction est terminée sans que les deux étapes soient effectuées. 

Les bases de données ACID donnent la priorité à la cohérence plutôt qu’à la disponibilité : l’ensemble de la transaction échoue si une erreur survient à n’importe quelle étape de la transaction. En revanche, les bases de données BASE donnent la priorité à la disponibilité plutôt qu’à la cohérence. Au lieu de faire échouer la transaction, il est possible que les utilisateurs accèdent temporairement à des données incohérentes. La cohérence des données est atteinte, mais pas immédiatement.

Pourquoi ACID et BASE sont-elles importantes ?

Les bases de données modernes sont des entrepôts de données distribués qui répliquent les données sur plusieurs nœuds connectés par un réseau. Ils permettent aux utilisateurs d’effectuer plusieurs manipulations de données, telles que des lectures et des écritures en une seule transaction. Les utilisateurs s’attendent à ce que les données restent cohérentes sur tous les nœuds à la fin de la transaction. Cependant, en informatique théorique, le théorème de Brewer (également appelé théorème de CAP) affirme que tout entrepôt de données distribué ne peut fournir que deux des trois garanties suivantes :

  • Cohérence : chaque opération de lecture reçoit les données les plus récentes ou une erreur.
  • Disponibilité : chaque requête de base de données reçoit une réponse positive, sans qu’il soit garanti qu’elle contienne les données les plus récentes.
  • Tolérance au partitionnement : le système continue de fonctionner malgré l’interruption ou le retard des messages entre les nœuds distribués.

Par exemple, si un client ajoute un article à un panier sur un site Web de commerce électronique, tous les autres clients devraient voir les niveaux de stock du produit baisser. Si le client ajoute le dernier article au panier, tous les autres utilisateurs devraient considérer l’article comme étant en rupture de stock. En cas d’échec d’une opération au sein d’une transaction, les concepteurs de bases de données doivent faire un choix. La base de données peut effectuer l’une des opérations suivantes :

  1. Annuler la transaction et renvoyer une erreur, ce qui réduit la disponibilité tout en garantissant la cohérence. Le client ne peut pas ajouter l’article à son panier ou les autres clients ne peuvent pas charger les détails de tous les produits tant que l’ajout au panier n’est pas terminé.
  2. Procéder à l’opération et assurer ainsi la disponibilité, mais risquer des incohérences. Le client ajoute un article au panier, mais d’autres clients constatent des niveaux de stock incorrects, du moins temporairement.

Dans certains cas d’utilisation, la cohérence est essentielle et les bases de données ACID sont privilégiées. Cependant, il existe d’autres cas d’utilisation où elle n’est pas critique. Par exemple, lorsque vous acceptez une demande d’ami sur un réseau social, peu importe que d’autres utilisateurs voient temporairement un nombre incorrect d’amis sur votre profil de réseau social. Cependant, vous ne voulez pas perdre l’accès à votre fil de réseaux sociaux pendant que les données sont triées. Dans de tels scénarios, BASE devient importante.

Principes clés : ACID par rapport à BASE

ACID et BASE sont des acronymes désignant différentes propriétés de base de données qui représentent le comportement de la base de données lors du traitement des transactions en ligne. 

ACID

ACID est synonyme d’atomicité, de cohérence, d’isolation et de durabilité.

Atomicité

L’atomicité garantit que toutes les étapes d’une transaction de base de données sont soit complètement terminées, soit retournées à leur état d’origine. Par exemple, dans un système de réservation, les deux tâches (réservation des sièges et mise à jour des informations sur les clients) doivent être effectuées en une seule transaction. Vous ne pouvez pas réserver de sièges pour un profil client incomplet. Aucune modification n’est apportée aux données si une partie de la transaction échoue.

Cohérence

La cohérence garantit que les données répondent aux contraintes d’intégrité et aux règles métier prédéfinies. Même si plusieurs utilisateurs effectuent des opérations similaires simultanément, les données restent cohérentes pour tous. Par exemple, la cohérence garantit que lors du transfert de fonds d’un compte à un autre, le solde total avant et après la transaction reste le même. Si le compte A a 200 USD et le compte B 400 USD, le solde total est de 600 USD. Une fois que A a transféré 100 USD à B, A a 100 USD et B 500 USD. Le solde total est toujours de 600 USD. 

Isolation

L’isolation garantit qu’une nouvelle transaction, accédant à un enregistrement particulier, attend la fin de la transaction précédente avant de commencer à fonctionner. Cela garantit que les transactions simultanées n’interfèrent pas les unes avec les autres, entretenant ainsi l’illusion qu’elles s’exécutent en série. Un autre exemple est celui d’un système multiutilisateurs de gestion d’inventaire. Si un utilisateur met à jour la quantité d’un produit, un autre utilisateur accédant aux mêmes informations sur le produit bénéficiera d’une vue cohérente et isolée des données, qui ne sera pas affectée par la mise à jour en cours jusqu’à ce qu’elle soit validée.

Durabilité

La durabilité garantit que la base de données conserve tous les enregistrements validés, même en cas de défaillance du système. Cela garantit que lorsque les transactions ACID sont validées, toutes les modifications sont permanentes et ne sont pas affectées par les défaillances ultérieures du système. Par exemple, dans une application de messagerie, lorsqu’un utilisateur envoie un message et reçoit une confirmation de livraison réussie, la propriété de durabilité garantit que le message n’est jamais perdu. Cela reste vrai même si l’application ou le serveur rencontre une défaillance.

BASE

BASE est l’acronyme de basically available, soft state, and eventually consistent (fondamentalement disponible, état souple et finalement cohérent). L’acronyme souligne que BASE est l’opposé de ACID, comme leurs équivalents chimiques.

Fondamentalement disponible

L’accessibilité simultanée de la base de données par les utilisateurs à tout moment est fondamentalement disponible. Un utilisateur n’a pas besoin d’attendre que les autres aient terminé la transaction avant de mettre à jour l’enregistrement. Par exemple, lors d’une augmentation soudaine du trafic sur une plateforme de commerce électronique, le système peut donner la priorité à la diffusion des listes de produits et à l’acceptation des commandes. Même en cas de léger retard dans la mise à jour des quantités en stock, les utilisateurs continuent de vérifier les articles.

État souple

L’état souple fait référence à la notion selon laquelle les données peuvent présenter des états transitoires ou temporaires susceptibles de changer au fil du temps, même en l’absence de déclencheurs ou d’entrées externes. Il décrit l’état de transition de l’enregistrement lorsque plusieurs applications le mettent à jour simultanément. La valeur de l’enregistrement n’est finalisée qu’une fois toutes les transactions terminées. Par exemple, si les utilisateurs modifient une publication sur les réseaux sociaux, la modification peut ne pas être immédiatement visible par les autres utilisateurs. Cependant, plus tard, la publication se met à jour d’elle-même (reflétant l’ancienne modification) même si aucun utilisateur ne l’a déclenchée.

Finalement cohérent

Finalement cohérent signifie que l’enregistrement deviendra cohérent lorsque toutes les mises à jour simultanées seront terminées. À ce stade, les applications qui interrogent l’enregistrement verront la même valeur. Prenons l’exemple d’un système d’édition de documents distribué dans lequel plusieurs utilisateurs peuvent modifier simultanément un document. Si l’utilisateur A et l’utilisateur B modifient simultanément la même section du document, leurs copies locales peuvent temporairement différer jusqu’à ce que les modifications soient propagées et synchronisées. Cependant, au fil du temps, le système assure la cohérence finale en diffusant et en fusionnant les modifications apportées par les différents utilisateurs.

Principales différences : ACID par rapport à BASE

Il existe des compromis lorsqu’il s’agit de choisir entre les modèles de transaction de base de données ACID et BASE.

Évolutivité

Il est plus difficile de mettre à l’échelle un modèle de transaction de base de données ACID, car il met l’accent sur la cohérence. Une seule transaction est autorisée pour chaque enregistrement à la fois, ce qui complique la mise à l’échelle horizontale. 

Vous pouvez également mettre à l’échelle le modèle de base de données BASE horizontalement, car il n’est pas nécessaire de maintenir une cohérence stricte. L’ajout de plusieurs nœuds dans le cluster de bases de données permet au modèle BASE d’améliorer la disponibilité des données, principe qui sous-tend l’architecture de la base de données. 

Flexibilité

Les bases de données ACID sont moins flexibles lorsqu’il s’agit de gérer des données. La cohérence doit être immédiate. Une base de données ACID peut restreindre l’accès à certaines applications en cas de panne de réseau ou d’électricité. De même, les applications doivent attendre leur tour pour mettre à jour les données si d’autres modules logiciels traitent un enregistrement particulier. À l’inverse, les bases de données BASE sont plus flexibles. Plutôt que d’imposer des restrictions strictes, BASE permet aux applications de modifier les enregistrements lorsqu’ils sont disponibles. 

Performance

Une base de données ACID peut rencontrer des problèmes de performances lors de la gestion de grands volumes de données ou de demandes de traitement simultanées. Les données étant traitées dans un ordre strict, les frais généraux liés à chaque transaction entraînent des retards qui affectent toutes les applications accédant à l’enregistrement. 

En revanche, les applications accédant à une base de données BASE peuvent traiter les enregistrements à tout moment. Cela réduit les temps d’attente excessifs et améliore le débit de la base de données.

Synchronisation

Une base de données ACID a besoin d’un mécanisme de synchronisation pour valider les modifications d’une transaction et les refléter dans tous les enregistrements associés. Dans le même temps, il doit verrouiller l’enregistrement en question pour les autres parties jusqu’à ce que la transaction soit terminée ou supprimée. De son côté, une base de données BASE fonctionne sans verrouiller les enregistrements, les synchronisant finalement sans garantie de délai. Lorsqu’ils travaillent avec des bases de données BASE, les développeurs savent qu’il peut y avoir des incohérences lors du traitement de certains enregistrements et prennent les précautions nécessaires dans l’application. 

Quand utiliser : ACID par rapport à BASE

Malgré leurs différences, les systèmes de base de données ACID et BASE sont pertinents dans différentes applications. ACID est l’option idéale pour les applications d’entreprise qui ont besoin de cohérence, de fiabilité et de prévisibilité des données. Par exemple, les banques utilisent une base de données ACID pour stocker les transactions des clients, car l’intégrité des données est la priorité absolue. Par ailleurs, les bases de données BASE constituent une meilleure option pour le traitement analytique en ligne de données moins structurées et de gros volumes de données. Par exemple, les sites Web de commerce électronique utilisent les bases de données BASE pour mettre à jour les prix des produits, qui changent fréquemment. Dans ce cas, la précision des prix est moins vitale que de permettre à tous les clients d’accéder en temps réel au prix du produit.

Une base de données peut-elle être à la fois ACID et BASE ?

Selon le théorème CAP, une base de données peut satisfaire à deux des trois garanties de cohérence, de disponibilité et de tolérance au partitionnement. Les modèles de base de données ACID et BASE offrent tous deux une tolérance au partitionnement, ce qui signifie qu’ils ne peuvent pas être à la fois très cohérents et toujours disponibles. Ainsi, une base de données tend soit vers ACID, soit vers BASE, mais elle ne peut pas être les deux à la fois. Par exemple, les bases de données SQL sont structurées selon le modèle ACID, tandis que les bases de données NoSQL utilisent l’architecture BASE. Cependant, certaines bases de données NoSQL peuvent présenter certaines caractéristiques ACID, sans pour autant fonctionner comme des bases de données conformes à ACID. 

Résumé des différences : ACID par rapport à BASE

 

ACID

BASE

Evolutivité

Se met à l’échelle verticalement.

Se met à l’échelle horizontalement.

Flexibilité

Moins flexible. Bloque des enregistrements spécifiques provenant d’autres applications lors du traitement. 

Plus flexible. Permet à plusieurs applications de mettre à jour le même enregistrement simultanément.

Performances

Les performances diminuent lors du traitement de gros volumes de données.

Capable de traiter de grandes données non structurées avec un débit élevé. 

Synchronisation

Oui. Ajoute un délai lors de la synchronisation. 

Aucune synchronisation au niveau de la base de données. 

Comment AWS peut-il répondre à vos besoins en matière de bases de données ACID et BASE ?

Les bases de données cloud AWS fournissent une gamme de services de base de données ACID et BASE pour chaque type de cas d’utilisation des données. Les entreprises déploient leurs bases de données sur AWS pour gagner du temps lors de la mise en service, du dimensionnement et de la gestion de l’infrastructure de stockage de données. Exemples :

  • Amazon DynamoDB est un service de base de données BASE rapide qui permet de traiter des données en quelques millisecondes pour les applications cloud.
  • Amazon MemoryDB for Redis est une autre base de données BASE qui permet aux développeurs de déployer des bases de données Redis durables et hautement disponibles pour les applications Web et mobiles.
  • AWS RedShift est un entrepôt de données dans le cloud ACID qui vous permet d’exécuter des requêtes analytiques SQL complexes pour des cas d’utilisation d’informatique décisionnelle. 

Commencez à utiliser les bases de données ACID et BASE en créant un compte dès aujourd’hui.