Espace clé dans CassandraExemple de création, de modification et de suppression

⚡ Résumé intelligent

Espace clé dans Cassandra Il s'agit du conteneur de données externe, équivalent à une base de données dans un système relationnel, qui détermine la réplication de chaque table qu'il contient. Cette page explique comment créer, modifier et supprimer des tables.ping un espace de clés, ainsi que ses propriétés et les espaces de clés système.

  • 🇧🇷 Définition principale : Un espace de clés contient des tables, des index et des types définis par l'utilisateur, et stocke les paramètres de réplication qu'ils héritent tous.
  • 🧭 Choix stratégique : SimpleStrategy convient à un seul centre de données ; NetworkTopologyStrategy définit un facteur de réplication par centre de données.
  • (I.e. Facteur de réplication : Trois répliques constituent la configuration de production standard, car elle permet de survivre à la défaillance d'un nœud au niveau du quorum.
  • Modifier les limites : La stratégie, le facteur de réplication et les écritures durables peuvent changer ; le nom de l’espace de clés, lui, ne peut pas.
  • (I.e. Durable écrit : Définir cette option sur « false » désactive le journal des transactions, privilégiant la vitesse d'écriture à la sécurité en cas de panne.
  • 🇧🇷 Comportement de chute : Goutteping supprime toutes les tables et tous les index, après Cassandra prend une capture d'écran automatique.

Cassandra Keyspace Créer Modifier Déposer

Qu'est-ce que Keyspace dans Cassandra?

Un espace clé dans Cassandra est un conteneur de données, similaire à une base de données dans les SGBDR (Systèmes de Gestion de Bases de Données Relationnelles). Cassandra Keyspace détermine la manière dont les données sont répliquées sur les nœuds.

Comme la réplication est définie au niveau de l'espace de clés plutôt qu'au niveau des tables individuelles, chaque table créée à l'intérieur de celui-ci hérite de la même stratégie et du même facteur de réplication. L'espace de clés constitue donc la première décision à prendre dans tout schéma.

Comment créer un espace de clés dans Cassandra

Un espace de clés est un objet qui contient les familles de colonnes, les types définis par l'utilisateur. Dans Cassandra, Keyspace est similaire à RDBMS Base de données. Keyspace contient des familles de colonnes, des index, des types définis par l'utilisateur, la connaissance du centre de données, la stratégie utilisée dans l'espace de clés, le facteur de réplication, etc.

Commande "Créer un espace de clés" est utilisé pour créer un espace de clés dans Cassandra.

Syntaxe

CREATE KEYSPACE KeyspaceName WITH replication = {
    'class': 'StrategyName',
    'replication_factor': 3
};

Divers composants de Cassandra Espace clé

  • de Marketing: Lors de la déclaration du nom de la stratégie dans Cassandra. Il existe deux types de stratégies déclarées dans Cassandra Syntaxe.
  1. Stratégie simple: Une stratégie simple est utilisée lorsque vous ne disposez que d'un seul centre de données. Dans cette stratégie, la première réplique est placée sur le nœud sélectionné par le partitionneur. Les nœuds restants sont placés dans le sens des aiguilles d'une montre dans l'anneau sans tenir compte de l'emplacement du rack ou du nœud.
  2. Stratégie de topologie de réseau: La stratégie de topologie de réseau est utilisée lorsque vous disposez de plusieurs centres de données. Dans cette stratégie, vous devez fournir un facteur de réplication pour chaque centre de données séparément. La stratégie de topologie du réseau place les réplicas dans les nœuds dans le sens des aiguilles d'une montre dans le même centre de données. Cette stratégie tente de placer les répliques dans différents racks.
  • Facteur de réplication: Le facteur de réplication est le nombre de répliques de données placées sur différents nœuds. Pour aucun échec, 3 est un bon facteur de réplication. Plus de deux facteurs de réplication garantissent l’absence de point de défaillance unique. Parfois, le serveur peut être en panne ou un problème de réseau peut survenir, alors d'autres répliques fournissent un service sans panne.
  • Exemple : Voici l'instantané de la commande exécutée « Create Keyspace » qui créera un espace de clés dans Cassandra.

Créer un espace de clé dans Cassandra

CREATE KEYSPACE University WITH replication = {
    'class': 'SimpleStrategy',
    'replication_factor': 3
};

Après l'exécution réussie de la commande « Create Keyspace », Keyspace University sera créée dans Cassandra avec la stratégie « SimpleStrategy » et un facteur de réplication de 3. Notez que le nom de la stratégie doit être entre guillemets ; une valeur non entre guillemets est rejetée comme une erreur de syntaxe.

Modifier l'espace clé Cassandra

La commande « Alter Keyspace » modifie le facteur de réplication, le nom de la stratégie et les propriétés d'écriture durables dans l'espace de clés créé dans Cassandra.

Syntaxe

ALTER KEYSPACE KeyspaceName WITH replication = {
    'class': 'StrategyName',
    'replication_factor': 3
}
AND DURABLE_WRITES = true;

Aspects clés lors de la modification de Keyspace dans Cassandra

  • Nom de l'espace de clé : le nom de l'espace de clé ne peut pas être modifié dans Cassandra.
  • Nom de la stratégie : le nom de la stratégie peut être modifié en spécifiant un nouveau nom de stratégie.
  • Facteur de réplication : le facteur de réplication peut être modifié en spécifiant un nouveau facteur de réplication.
  • DURABLE_WRITES : La valeur de DURABLE_WRITES peut être modifiée en spécifiant « true » ou « false ». Par défaut, elle est « true ». Si elle est définie sur « false », aucune mise à jour ne sera écrite dans le journal des transactions, et inversement.
  • Exécution : voici l'instantané de la commande exécutée « Alter Keyspace » qui modifie la stratégie d'espace de clés de « SimpleStrategy » à « NetworkTopologyStrategy » et le facteur de réplication de 3 à 1 pour DataCenter1.

Modifier l'espace clé Cassandra

ALTER KEYSPACE University WITH replication = {
    'class': 'NetworkTopologyStrategy',
    'DataCenter1': 1
};

Après l'exécution réussie de la commande « Alter Keyspace », le nom de la stratégie passera de « SimpleStrategy » à « NetworkTopologyStrategy » et le facteur de réplication passera de 3 à 1 pour « DataCenter1 ».

Important: L'augmentation du facteur de réplication ne copie pas automatiquement les données existantes. Exécuter réparation de nodetool sur l'espace de clés affecté par la suite, sinon les nouvelles répliques restent vides jusqu'à ce qu'une réparation de lecture touche chaque ligne.

Cassandra Supprimer l'espace de clé

Commande 'Supprimer l'espace de clé' supprime l'espace de clés comprenant toutes les données, familles de colonnes, types définis par l'utilisateur et index de CassandraAvant la chuteping l'espace des clés, Cassandra prend un instantané de l'espace de clés. Si l'espace de clés n'existe pas dans le Cassandra, Cassandra renverra une erreur à moins que IF EXISTS ne soit utilisé.

Syntaxe

DROP KEYSPACE IF EXISTS KeyspaceName;

Exemple

Voici l'instantané de la commande exécutée « Drop Keyspace » qui supprimera le keyspace University.

Cassandra Supprimer l'espace de clé

DROP KEYSPACE University;

Après l'exécution réussie de la commande « Supprimer keyspace University », keyspace University sera supprimé de Cassandra avec toutes les données et le schéma.

Voici l'instantané où l'erreur est renvoyée lors d'une tentative d'accès à un espace de clés qui n'existe pas.

Cassandra Supprimer l'espace de clé

Note: Il n'y a aucune différence entre supprimer l'espace de clé et supprimer l'espace de clé. Supprimer l'espace de clé équivaut à supprimer l'espace de clé.

Propriétés des espaces de clés et espaces de clés système

Au-delà de la création et de l'abandonping, trois commandes couvrent presque toutes les tâches quotidiennes liées à l'espace de clés dans cqlsh.

DESCRIBE KEYSPACES;
DESCRIBE KEYSPACE University;
USE University;

La première liste tous les espaces de clés du cluster, la deuxième affiche le schéma complet d'un espace de clés, y compris ses tables, et la troisième définit l'espace de clés actuel afin que les noms de tables n'aient plus besoin de préfixe.

Parallèlement aux espaces de clés utilisateur, Cassandra Il en possède plusieurs. Elles apparaissent dans la sortie de DESCRIBE KEYSPACES et il est utile de les identifier plutôt que de les supprimer.

  • système: État du nœud local, y compris ses plages de jetons et les pairs qu'il connaît.
  • schéma_système : Les définitions de chaque espace de clés, table, colonne et index du cluster.
  • authentification système : Rôles, autorisations et informations d'identification lorsque l'authentification est activée.
  • système_distribué : Historique des réparations et autres registres à l'échelle du groupeping.
  • système_tracest la suivante: Question traces capturé lorsque tracL'allumage est activé.

Deux d'entre eux méritent une attention particulière lors de la production. authentification système L'espace de clés est créé par défaut avec un facteur de réplication de un ; si ce nœud est perdu, personne ne peut se connecter, il convient donc d'augmenter ce facteur pour qu'il corresponde à celui du cluster. schéma_système L'espace de clés explique pourquoi les modifications de schéma doivent être appliquées une à la fois, car des modifications simultanées peuvent produire des versions de schéma conflictuelles entre les nœuds.

Erreurs courantes d'espace de clés et leurs solutions

La plupart des échecs d'espace de clés produisent un message court et reconnaissable.

Erreur Cause et solution
Espace de clés inconnu Aucun espace de clés n'est sélectionné. Exécutez la commande USE KeyspaceName ou préfixez le nom de la table avec Keyspace.Table.
Erreur de syntaxe à 'SimpleStrategy' Le nom de la stratégie n'est pas entre guillemets. Veuillez utiliser des guillemets pour écrire : 'class': 'SimpleStrategy'.
Option de stratégie non reconnue {replication_factor} Le facteur de réplication était utilisé avec NetworkTopologyStrategy. Cette stratégie prend un facteur par nom de centre de données.
Impossible d'ajouter un espace de clés existant L'espace de clés existe déjà. Ajoutez IF NOT EXISTS ou supprimez d'abord l'ancien.
Données manquantes après augmentation du facteur de réplication C'est normal. Exécutez la commande nodetool repair sur l'espace de clés afin que les nouvelles répliques soient créées.

Une fois l'espace de clés créé, l'étape suivante consiste à définir le stockage à l'intérieur de celui-ci, comme expliqué dans la section suivante : Cassandra table tutoriel.

FAQ

Limitez leur nombre à un seul par application. Chaque espace de clés et chaque table ajoutent des métadonnées de schéma et une surcharge mémoire sur chaque nœud ; par conséquent, des centaines d’espaces de clés dégradent les performances du cluster.

Oui, si auto_snapshot est activé. Cassandra écrit un instantané avant la chuteping, les SSTables peuvent donc être restaurées avec sstableloader après la recréation du schéma.

Uniquement pour les données pouvant être régénérées, telles que les caches ou les analyses dérivées. Ignorerping Le journal des transactions signifie que les écritures encore présentes dans la memtable sont perdues si le nœud s'arrête de manière inattendue.

En fonction de la configuration du centre de données et de l'objectif de disponibilité, l'IA peut proposer une stratégie et des facteurs spécifiques à chaque centre. Vérifiez l'exactitude des noms de centres de données auprès de nodetool status, car une erreur de frappe peut entraîner une sous-réplication silencieuse.

Il gère bien la syntaxe courante, mais conserve souvent des habitudes relationnelles, comme l'absence de guillemets dans les noms de stratégies ou dans les clés étrangères. Il est donc recommandé d'exécuter chaque script généré sur un espace de clés de test au préalable.

Résumez cet article avec :