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, familiarisez-vous avec les instances, les clusters et les nœuds. Nous vous recommandons également de vous familiariser avec les limitations.

Bigtable en mémoire est un niveau de mémoire intégré au nœud Bigtable. Il permet une hiérarchisation des données fluide et économique en fonction des modèles d'accès et des besoins en termes de 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 assure un haut débit pour les données sensibles à la latence. Pour en savoir plus, consultez Analyser les performances.

Quand utiliser le mode In-Memory ?

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

  • Exigences de latence inférieure à une 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 avec des exigences de débit de trafic de lecture élevées sur des sous-ensembles de données spécifiques.
  • Atténuation des points chauds : charges de travail à haut débit pouvant inclure des pics de trafic ou des points chauds sur des clés de ligne spécifiques.
  • 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 économique.

Fonctionnement du niveau en mémoire

La prise en charge en mémoire est assurée par les nœuds de stockage hybrides. 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. L'approvisionnement des nœuds spécialisés peut prendre jusqu'à 30 minutes. Pendant cette période, Bigtable continue de diffuser du 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 de mémoire : la mémoire propose un comportement de mise en cache en lecture. 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 la 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 : la mémoire utilise l'éviction LRU (Least Recently Used) au niveau des lignes et une règle d'invalidation avec une valeur TTL (Time To Live) de 15 minutes.
  • Mise en cache négative : la mémoire interne se souvient si une ressource est manquante pendant un certain temps pour éviter la surcharge du backend.
  • Sécurité : la mémoire prend en charge 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 dans une ligne la met à jour dans tous les niveaux de mémoire où elle est présente, en suivant le 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 leur code temporel, résident dans le niveau de mémoire. Les demandes de versions antérieures des données, également appelées cellules historiques, contournent automatiquement le niveau de mémoire et sont traitées à partir du stockage persistant.

Cohérence des données

Bigtable garantit que les données en mémoire sont cohérentes avec les données persistantes sur le niveau de stockage SSD ou Infrequent Access. Cette architecture hybride permet à Bigtable de fournir un modèle de stockage cohérent pour tous les niveaux de stockage. Vous pouvez ainsi accéder à vos données via la même interface sémantique, qu'elles résident physiquement dans la RAM ou dans un espace de stockage persistant. Lorsque le stockage en mémoire Bigtable est activé, vous conservez la cohérence écriture-lecture 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 en mémoire. Chaque nœud inclut 8 Go de RAM pour le niveau en mémoire et commence avec une capacité de base de 40 000 lectures par seconde. Pour gérer les pics de trafic de lecture de points, les nœuds peuvent effectuer un scaling automatique par incréments de 40 000 lectures par seconde, jusqu'à un maximum de 120 000 lectures par seconde et par nœud.

Cette fonctionnalité de scaling vertical s'intègre à l'autoscaling Bigtable. Si la capacité en mémoire maximale 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 en mémoire.

La mise à l'échelle verticale sur un nœud ne s'applique qu'aux lectures en mémoire par seconde et fonctionne que l'autoscaling au niveau du cluster soit activé ou non. La mise à l'échelle verticale au-delà des 40 000 lectures par seconde de base est facturée 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 stockage SSD est requis pour le cache en mémoire.
  • La mémoire n'accepte que les opérations de lecture ponctuelle au niveau d'une seule ligne.
  • La mémoire n'est pas utilisée pour les analyses de données ni pour les requêtes SQL.
  • Les profils d'application en mémoire ne sont compatibles qu'avec le routage à cluster unique.
  • Les limites en mémoire fixent la taille des lignes à 1 Mio par clé de ligne. Bigtable lit les lignes qui dépassent cette limite à partir du stockage persistant.
  • La fonctionnalité en mémoire nécessite la version 2.77.0 ou ultérieure de la bibliothèque cliente Bigtable pour Java ou la version 26.80.0 ou ultérieure du BOM. Les autres bibliothèques clientes ne sont pas compatibles.
  • Les clusters avec des clés de chiffrement gérées par le client (CMEK) ne sont pas compatibles avec la mémoire.

Étapes suivantes