Filtres
Lorsque vous lisez des données dans Bigtable, vous pouvez lire des lignes ou des plages de lignes spécifiques. Cependant, vous n'avez pas toujours besoin de toutes les données de toutes les lignes. Vous n'aurez peut-être besoin que de lignes contenant une valeur spécifique dans leur clé de ligne ou de cellules d'une famille de colonnes spécifique.
Pour limiter les résultats d'une requête de lecture, vous pouvez inclure des filtres dans la requête. Un filtre est appliqué aux données avant l'envoi de la réponse et permet donc de réduire la quantité de données renvoyées. L'utilisation de filtres peut par conséquent permettre de réduire les coûts réseau et d'augmenter le débit. Cette page présente le fonctionnement des filtres de Bigtable et la liste des filtres disponibles.
Pour obtenir des détails et des exemples de code pour chaque filtre, consultez la section Exemples de filtres.
Fonctionnement des filtres
Lorsque votre requête de lecture inclut un filtre, Bigtable extrait une ligne ou une plage de lignes de votre table. Bigtable évalue chaque ligne d'entrée obtenue à l'aide de votre filtre, puis génère une ligne de sortie basée sur les résultats du filtre.
Bigtable fournit plusieurs types de filtres qui sont décrits dans les sections suivantes. Les filtres de base sont divisés en deux catégories : les filtres de limitation d'une part, et les filtres de modification d'autre part. Vous pouvez combiner les filtres de base pour obtenir des filtres de composition.
Dans la plupart des cas, un filtre est appliqué à toutes les lignes, sauf si vous spécifiez une clé de ligne, une plage de lignes ou un nombre de lignes auxquelles le filtre doit être appliqué. Le filtre Expression régulière de clé de ligne constitue une exception : dans certains cas, il peut restreindre la plage de lignes si l'expression régulière est un préfixe fixe. En général, pour éviter la lenteur d'une analyse complète de la table, spécifiez toujours les lignes pour un filtre.
Filtres de limitation
Les filtres de limitation contrôlent quelles lignes ou cellules sont incluses dans la réponse, selon qu'elles correspondent ou non à des critères spécifiques. Par exemple, vous pouvez indiquer que la réponse ne doit inclure que des lignes dans lesquelles la clé de ligne correspond à une expression régulière ou que vous souhaitez uniquement obtenir les cellules d'une famille de colonnes spécifique.
Un grand nombre de filtres de limitation peut exclure les cellules d'une ligne de sortie. Si toutes les cellules sont exclues d'une ligne de sortie, celle-ci n'est pas incluse dans la réponse.
Consultez le Résumé des filtres pour obtenir une liste complète des filtres de limitation.
Filtres de modification
Un filtre de modification affecte les données ou les métadonnées des cellules individuelles.
Bigtable fournit les filtres de modification suivants :
Le filtre Supprimer la valeur, qui remplace la valeur de chaque cellule par une chaîne vide. Ce filtre est utile lorsque vous avez seulement besoin d'obtenir le nombre de lignes ou la liste des clés de ligne qui correspondent à vos critères, et non les données de ces lignes.
Le filtre Appliquer le libellé, qui applique un libellé à chaque cellule pour identifier le filtre qui a produit chaque cellule dans la réponse. Votre application peut utiliser ces libellés pour effectuer un filtrage supplémentaire côté client.
Filtres de composition
Un filtre de composition vous permet de combiner plusieurs filtres de base en un seul, ce qui permet d'appliquer plusieurs filtres à une seule requête de lecture.
Par exemple, pour obtenir des données d'utilisation des processeurs pour vos serveurs, vous pouvez utiliser un filtre pour n'inclure que les lignes dont la clé commence par SERVER
, suivi d'un second filtre pour n'inclure que les cellules de la famille de colonnes CPU
.
Bigtable fournit les filtres de composition suivants :
- Une chaîne qui applique une séquence de filtres à chaque ligne d'entrée et renvoie une ligne de sortie. Un filtre Chaîne revient à utiliser un ET logique.
- Un entrelacement qui envoie chaque ligne d'entrée via plusieurs filtres, puis combine tous les résultats de filtrage de la ligne d'entrée en une seule ligne de sortie. Un filtre Entrelacement revient à utiliser un OU logique.
- Une condition qui génère une ligne de sortie en appliquant l'un des deux filtres possibles à la ligne d'entrée. Le filtre est choisi en appliquant un filtre Prédicat à la ligne d'entrée, puis en vérifiant si la ligne de sortie du filtre Prédicat contient des cellules.
Filtres et performances
Les filtres vous permettent d'obtenir uniquement les données dont vous avez réellement besoin. Par conséquent, les filtres peuvent améliorer les performances en réduisant la quantité de données envoyées à votre application.
Toutefois, les filtres ne constituent pas une solution universelle à tous les problèmes de performances. En général, les filtres doivent être utilisés pour contrôler l'efficacité du débit, et non pour réduire la latence entre l'envoi d'une requête et la réception d'une réponse. Utilisés correctement, les filtres peuvent constituer un élément efficace d'une stratégie visant à améliorer les performances de lecture.
Le filtre Conditions, en particulier, peut augmenter la latence, car il est beaucoup plus lent que les autres filtres. Si votre requête de lecture est extrêmement sensible aux performances, n'utilisez pas de conditions dans la requête.
Résumé des filtres
Les tableaux suivants répertorient les filtres fournis par Bigtable, y compris des liens vers des détails et des exemples de code pour chaque filtre.
Filtres de limitation | |
---|---|
Tout bloquer | Aucune cellule n'est émise. Principalement utile pour le débogage. |
Nombre maximal de cellules par colonne | N'inclut que les N versions les plus récentes d'une colonne dans une ligne. |
Nombre maximal de cellules par ligne | N'inclut que les N première cellules d'une ligne. |
Décalage des cellules par ligne | Ignore les N premières cellules d'une ligne. |
Expression régulière dans la famille de colonnes | N'inclut que les cellules dont la famille de colonnes correspond à une expression régulière RE2. |
Expression régulière dans le qualificatif de colonne | N'inclut que les cellules dont le qualificatif de colonne correspond à une expression régulière. |
Plage de colonnes | N'inclut que les cellules d'une famille de colonnes spécifique dont le qualificatif se trouve dans une plage spécifique. |
Tout passer | Émet toutes les cellules d'entrée. Principalement utile pour le débogage. |
Expression régulière dans la clé de ligne | N'inclut que les cellules dont la clé de ligne correspond à une expression régulière. |
Échantillon de ligne | Extrait un échantillon aléatoire des lignes. |
Sink | Inclut les cellules dans la ligne de sortie finale et empêche leur modification ou leur suppression par un filtre ultérieur. |
Plage d'horodatages | N'inclut que les cellules dont l'horodatage est compris dans une plage spécifique. |
Plage de valeurs | N'inclut que les cellules dont la valeur est comprise dans une plage spécifique. |
Expression régulière dans la valeur | N'inclut que les cellules dont la valeur correspond à une expression régulière. |
Filtres de modification | |
---|---|
Appliquer le libellé | Ajoute un libellé à toutes les cellules. |
Supprimer la valeur | Renvoie une chaîne vide pour chaque valeur de cellule. |
Filtres de composition | |
---|---|
Chaîne | Applique plusieurs filtres dans l'ordre. |
Condition | Applique l'un des deux filtres possibles à une ligne. |
Entrelacement | Combine les lignes de sortie de plusieurs filtres en une seule ligne de sortie. |