Présentation du niveau en mémoire

Le niveau en mémoire est un paramètre au niveau du cluster qui utilise des nœuds spécialisés. Avant de lire cette page, vous devez comprendre les instances, les clusters et les nœuds. Nous vous recommandons également de vous familiariser avec les limites.

Le niveau en mémoire de Bigtable est un niveau de mémoire intégré au nœud Bigtable qui permet de hiérarchiser les données de manière fluide et optimisée en fonction des modèles d'accès et des besoins en performances, le tout via une seule API. Grâce à l'accès direct à la mémoire à distance (RDMA), le niveau en mémoire Bigtable réduit considérablement les temps de réponse, atténue les hotspots et garantit un débit élevé pour les données sensibles à la latence. Pour en savoir plus, consultez Analyser les performances.

Quand utiliser le niveau en mémoire

Nous vous recommandons d'activer le niveau en mémoire pour les cas d'utilisation suivants :

  • Exigences de latence inférieures à la milliseconde : charges de travail nécessitant des latences de lecture inférieures à 1 ms, généralement traitées en plaçant une solution de cache autogérée devant une base de données.
  • Lectures ponctuelles à haut débit : applications ayant des exigences de débit de trafic de lecture élevé sur des sous-ensembles de données spécifiques.
  • Atténuation des hotspots : charges de travail à haut débit pouvant inclure des pics de trafic ou des hotspots sur des clés de ligne particulières.
  • Optimisation des coûts : scénarios dans lesquels vous souhaitez réduire le nombre de nœuds Bigtable en déchargeant les volumes de lecture élevés vers un niveau en mémoire plus rentable.

Fonctionnement du niveau en mémoire

La compatibilité avec le niveau en mémoire est assurée par les nœuds de stockage hybride. Ces nœuds spécialisés étendent la désagrégation du calcul et du stockage de Bigtable pour inclure un niveau de mémoire avec un débit évolutif verticalement. Bigtable peut prendre jusqu'à 30 minutes pour provisionner les nœuds de niveau en mémoire spécialisés. Pendant cette période, Bigtable continue de diffuser le trafic à partir du stockage persistant.

Vous pouvez activer le niveau en mémoire au niveau du cluster.

Le niveau en mémoire fonctionne comme suit :

  • Obtenir des données dans le niveau en mémoire : le niveau en mémoire offre un comportement de mise en cache en lecture directe. Une ligne est placée dans le niveau de mémoire avec des opérations de lecture via un profil d'application que vous configurez pour le niveau en mémoire. Une opération d'écriture à partir de n'importe quel profil d'application met à jour le niveau de mémoire si les données de ligne se trouvent déjà dans le niveau en mémoire.
  • Règles d'éviction et d'invalidation : le niveau en mémoire utilise l'éviction LRU (Least Recently Used) au niveau des lignes et applique une règle d'invalidation TTL (Time To Live) pour maximiser le taux d'accès au niveau en mémoire.
  • Mise en cache négative : le niveau en mémoire mémorise si une ressource est manquante pendant un certain temps pour éviter une surcharge du backend.
  • Sécurité : le niveau en mémoire est compatible avec le chiffrement au repos et en transit (TLS).
  • Réplication : dans une instance multicluster, les niveaux de mémoire des différents clusters ne sont pas synchronisés. Étant donné que chaque niveau de mémoire détermine indépendamment les données à charger en mémoire en fonction du trafic de lecture qu'il reçoit, différents clusters peuvent contenir différentes clés de ligne dans leurs niveaux de mémoire. Bigtable charge les données en mémoire à partir du niveau SSD du cluster local. Une écriture sur une ligne finit par la mettre à jour dans tous les niveaux de mémoire où elle est présente, conformément au modèle de réplication Bigtable standard de cohérence à terme.
  • Autoscaling vertical : le niveau en mémoire est compatible avec l'autoscaling vertical au niveau du nœud, qui fonctionne avec l'autoscaling Bigtable.

Le niveau en mémoire est optimisé pour un accès hautes performances aux données actuelles. Pour maintenir ces performances, seules les versions les plus récentes d'une ligne avec un code temporel résident dans le niveau de mémoire. Les requêtes portant sur des versions antérieures de données, également appelées cellules d'historique, contournent automatiquement le niveau de mémoire et sont diffusées à partir du stockage persistant.

Cohérence des données

Bigtable s'assure que les données du niveau en mémoire sont cohérentes avec les données persistantes du niveau de stockage SSD ou Infrequent Access. Cette architecture hybride permet à Bigtable de fournir un modèle de stockage cohérent sur tous les niveaux de stockage, ce qui vous permet d'accéder à vos données via la même interface sémantique, qu'elles résident physiquement dans la RAM ou dans un stockage persistant. Lorsque le niveau en mémoire de Bigtable est activé, vous conservez la cohérence de lecture après écriture au niveau du cluster.

Scaling vertical

L'activation du niveau en mémoire permet à chaque nœud d'utiliser le scaling vertical pour modifier sa capacité de débit du niveau en mémoire. Lorsque le niveau en mémoire est activé, chaque nœud commence avec une capacité de base de 40 000 lectures par seconde. Pour gérer les pics de trafic de lecture ponctuelle, les nœuds peuvent automatiquement évoluer par incréments de 40 000 lectures par seconde, jusqu'à un maximum de 120 000 lectures par seconde par nœud.

Cette fonctionnalité de scaling vertical s'intègre à l'autoscaling Bigtable. Si la capacité maximale du niveau en mémoire est atteinte sur tous les nœuds du cluster et que l'autoscaling est actif, Bigtable provisionne automatiquement des nœuds supplémentaires pour augmenter encore le débit du niveau en mémoire.

Le scaling vertical sur un nœud ne s'applique qu'aux lectures par seconde du niveau en mémoire et fonctionne, que l'autoscaling au niveau du cluster soit activé ou non. Le scaling vertical au-delà de la base de 40 000 lectures par seconde est facturé en appliquant un multiplicateur au coût horaire du nœud. Pour en savoir plus, consultez les pages Tarifs et Limites.

Limites

Les limites suivantes s'appliquent au niveau en mémoire :

  • Le niveau en mémoire nécessite un stockage SSD.
  • Le niveau en mémoire n'accepte que les opérations de lecture de points uniques au niveau des lignes.
  • Le niveau en mémoire ne diffuse pas les analyses de données et n'est pas compatible avec les requêtes SQL.
  • Les profils d'application avec niveau en mémoire ne sont compatibles qu'avec le routage vers un seul cluster.
  • Le niveau en mémoire limite la taille des lignes à 1 Mio par clé de ligne. Bigtable lit les lignes qui dépassent cette limite à partir du stockage persistant.
  • Le niveau en mémoire nécessite les versions suivantes des bibliothèques clientes Bigtable :

    • Java version 2.77.0 ou ultérieure
    • BOM version 26.80.0 ou ultérieure
    • Go version 1.52.0 ou ultérieure

    Les autres bibliothèques clientes ne sont pas compatibles.

  • Les clusters pour lesquels les clés de chiffrement gérées par le client (CMEK) sont activées ne sont pas compatibles avec le niveau en mémoire.

  • Le niveau en mémoire est limité à un maximum de 10 nœuds par cluster.

Étapes suivantes