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, découvrez les instances, les clusters et les nœuds. Nous vous recommandons également de vous familiariser avec les limites.
Bigtable avec niveau en mémoire est un niveau de mémoire intégré au nœud Bigtable qui permet une hiérarchisation des données transparente et optimisée en termes de coûts 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 de Bigtable réduit considérablement les temps de réponse, atténue les points chauds et garantit un débit élevé pour les données sensibles à la latence. Pour en savoir plus, consultez la page 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é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 des 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 des 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. Le provisionnement des nœuds spécialisés peut prendre jusqu'à 30 minutes. 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 :
- Obtention de données dans le niveau de mémoire : le niveau en mémoire offre 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 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 la ligne se trouvent déjà dans le niveau en mémoire.
- Politiques d'expulsion et d'invalidation : le niveau en mémoire utilise l'expulsion LRU (Least Recently Used) au niveau de la ligne et une politique d'invalidation avec une valeur TTL (Time To Live) de 15 minutes.
- Mise en cache négative : le niveau en mémoire se souvient si une ressource est manquante pendant une période donnée afin d'éviter la 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 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 dernières versions d'une ligne avec un horodatage résident dans le niveau de mémoire. Les requêtes concernant des versions antérieures des données, également appelées cellules historiques, 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 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 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 le stockage persistant. Lorsque Bigtable avec niveau en mémoire 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 comprend 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 ponctuelle, 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 par nœud.
Cette fonctionnalité de scaling vertical s'intègre à l'autoscaling Bigtable. Si la capacité maximale 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 le débit en mémoire.
Le scaling vertical sur un nœud ne s'applique qu'aux lectures en mémoire par seconde, et il 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 la section 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'est compatible qu'avec les opérations de lecture ponctuelle au niveau d'une seule ligne.
- Le niveau en mémoire ne diffuse pas d'analyses de données ni n'est compatible avec les requêtes SQL.
- Les profils d'application avec niveau en mémoire ne sont compatibles qu'avec le routage à cluster unique.
- 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 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 de la BOM.
- Les clusters avec clés de chiffrement gérées par le client (CMEK) ne sont pas compatibles avec le niveau en mémoire.
Étape suivante
- Découvrez comment activer le niveau en mémoire.