Apache Cassandra 4.1 introduit le framework Guardrails

Par:
fredericmazue

mar, 17/05/2022 - 13:34

Apache Cassandra est un système de gestion de base de données (SGBD) de type NoSQL conçu pour gérer des quantités massives de données sur un grand nombre de serveurs, assurant une haute disponibilité en éliminant les points de défaillance unique. Il permet une répartition robuste sur plusieurs centres de données, avec une réplication asynchrone sans nœud maître et une faible latence pour les opérations de tous les clients. Apache Cassandra vient de sortir en version 4.1.

Dans une note de version vraiment copîeuse, se distingue l'arrivé du framework Guardrails.

Ce framework aide les opérateurs à éviter certains pièges de configuration et d'utilisation qui peuvent dégrader les performances et la disponibilité d'un cluster Apache Cassandra lorsqu'il est mis à l'échelle.

Par exemple, côté schéma, les utilisateurs peuvent créer trop de tables ou d'index secondaires, ce qui entraîne une utilisation excessive des ressources. Du côté des requêtes, les utilisateurs peuvent exécuter des requêtes touchant trop de partitions susceptibles d'impliquer tous les nœuds du cluster. Pire encore, ils peuvent simplement exécuter une requête en utilisant un filtrage coûteux côté réplique, lisant potentiellement tout le contenu de la table en mémoire sur tous les nœuds du cluster. 

Tous ces exemples des anti-modèles Cassandra bien connus, et les administrateurs doivent être vigilants pour empêcher les utilisateurs de les subir. Mais même si l'on est parfaitement conscient des modèles d'utilisation corrects, il est facile de perdre de vue des éléments tels que la taille des collections non figées, soulignent les concepteurs de Cassandra.

Le nouveau framework Guardrails permet aux opérateurs de restreindre l'utilisation de Cassandra par :

  • Désactivation de certaines fonctionnalités.
  • Interdiction de certaines valeurs spécifiques.
  • Définir des limites souples et dures à certaines grandeurs de base de données.

Les Guardrails, ou garde-corps, ou garde-fous, sont définis comme des propriétés normales dans le fichier de configuration de Cassandra, cassandra.yaml. Ils ressemblent à:

tables_warn_threshold: -1
tables_fail_threshold: -1
secondary_indexes_per_table_warn_threshold: -1
secondary_indexes_per_table_fail_threshold: -1
allow_filtering_enabled: true
partition_keys_in_select_warn_threshold: -1
partition_keys_in_select_fail_threshold: -1
collection_size_warn_threshold:
collection_size_fail_threshold:

La plupart des garde-fous sont vérifiées au niveau de la couche CQL, sans impliquer le moteur de stockage ni des répliques supplémentaires. Les garde-gous booléenns pour désactiver les fonctionnalités, telles que allow_filtering_enabled, interrompent les opérations tentant d'utiliser la fonctionnalité désactivée.

Ce framework permet de travailler avec 22 types garde-fous différents pour le moment. Les développeurs de Cassandra prévoient de l'enrichir prochainement.