2015-09-08 1 views
1

Il est possible d'organiser la réplication unidirectionnelle entre centres de données (DC). Disons que nous avons deux DC: A et B. Je veux que toutes les données écrites sur les nœuds dans DC A soient copiées dans DC B, mais aucune des données écrites dans DC B ne doit aller à A. Est-ce possible avec Cassandra?Cassandra source -> réplication de puits

Répondre

0

Vous pouvez vous rapprocher de cela en utilisant deux espaces de touches. Dans Cassandra, les espaces de clés contrôlent le nombre de répliques de chaque partition conservées dans chaque centre de données.

Donc, pour les données que vous écrivez à A que vous voulez répliquées dans B, vous devez créer des tables dans un keyspace défini pour répliquer dans les deux centres de données comme celle-ci:

CREATE KEYSPACE both WITH replication = { 
    'class': 'NetworkTopologyStrategy', 'A': '1', 'B': '1'}; 

Mais si vous écrivez à ce keyspace dans DC B, il va également répliquer l'écriture dans A.

Ensuite, pour les données que vous voulez écrire dans DC B et ne pas avoir répliqué dans A, vous devez créer des tables dans un espace qui ne conserve que les répliques dans B, comme ceci :

CREATE KEYSPACE bonly WITH replication = { 
    'class': 'NetworkTopologyStrategy', 'B': '1'}; 

Avec le second espace de touches, vous pouvez réellement émettre les écritures sur des noeuds dans DC A, et les données seront routées vers B et ne seront stockées que là.