2017-07-20 1 views
0

Nous avons une exigence où nous avons une table de base de données relationnelle T1 avec 20 champs. Nous capturons tous les changements/mises à jour dans ce tableau sur divers champs (logs de validation) et les ingérons/appliquons dans la table correspondante CT1 dans Cassandra, c'est-à-dire que la table CT1 a exactement le même schéma/champs que T1 (table DB relationnelle). Pour la table CT1 de Cassandra, nous avons besoin de capturer/stocker/extraire toutes les valeurs modifiées de tous les champs, ce qui signifie que le champ f1 a changé 20 fois toutes ses valeurs modifiées avec l'horodatage de changement correspondant. De même, si le champ f3 a changé 100 fois, toutes ses valeurs devraient être sauvegardées. Note: différents champs changent à des moments différents et chaque champ change le nombre variable de fois, ce qui signifie qu'un champ peut changer 1000 fois par jour alors qu'un autre champ peut ne jamais changer du tout.cassandra et des données historiques temps sage

Il s'agit d'un type de données de séries temporelles pour chaque champ. Donc, je veux savoir comment représenter efficacement un tel modèle de données dans Cassandra? Une autre exigence est que je veux récupérer efficacement la valeur la plus récente de tous les champs de la table.

Par exemple:

si f1 a changé 10 fois par jour, pour f1 Je veux sa valeur la plus récente à retourner. Si f2 a changé la semaine dernière, alors pour f2, la valeur la plus récente devrait être retournée, et ainsi de suite pour les autres champs.

Répondre

0

Vous pouvez trouver plus de détails sur le stockage de série chronologique dans Cassandra en lisant les articles this et this. Donc, pour trouver les plus récemment les valeurs facilement, vous pouvez créer la structure de la table comme suit:

CREATE TABLE table1_history (
column_name text, 
change_time timestamp, 
column_value text, 
PRIMARY KEY (column_name, change_time), 
) WITH CLUSTERING ORDER BY (change_time DESC) 

vous pouvez trouver donc la dernière valeur avec des données communes de sélection de votre table.