2016-04-19 20 views
1

Ich habe zwei Tabellen. Customer_materializedview und Customer_backUp. Ich möchte so funktionieren, dass alle 30 Minuten ein Batch ausgeführt wird, sodass die Tabelle Customer_materializedview in Customer_backUp kopiert wird. Bitte beachten Sie, dass ich die gesamte Tabelle und nicht einzelne Zeilen kopieren muss.Stapelverarbeitung in Cassandra zum Kopieren von Tabellen;

BEGIN BATCH 
COPY events.Customer_materializedview (colm_def,...) TO 'temp.csv'; 

truncate Customer_materializedview; 

COPY event.Customer_backUp (colm_def) FROM 'temp.csv'; 

APPLY BATCH; 
+0

Dies ist nicht verknüpft mit [Tag: Batch-Datei], bitte beachten Sie, dass die Tags angepasst werden müssen; vielleicht meintest du sowas wie [tag: batch-processing]? Wie auch immer, lesen Sie die Tag-Beschreibungen, bevor Sie Tags hinzufügen ... Danke! – aschipfl

Antwort

0

Diese Sicherungsstrategie ist weder sicher noch praktisch. Ich würde vorschlagen, dieses Dokument zuerst zu lesen: https://docs.datastax.com/en/cassandra/2.0/cassandra/operations/ops_backup_restore_c.html

Aber ich werde versuchen, Ihre Frage unabhängig zu beantworten. Sie können einen geplanten Job mithilfe von Tools basierend auf dem von Ihnen verwendeten Betriebssystem erstellen. Zum Beispiel können Sie einen Cron-Job unter Linux einplanen.

Sie würden zwei Dateien benötigen. Eine für cql-Befehle, die Sie auf der db ausführen möchten, und eine für die Ausführung der Befehle.

erste Datei mit dem Namen "cql" würde wie folgt aussehen:

BEGIN BATCH 

COPY events.Customer_materializedview (colm_def,...) TO 'temp.csv'; 

truncate Customer_materializedview; 

COPY event.Customer_backUp (colm_def) FROM 'temp.csv'; 

APPLY BATCH; 

Andere Datei mit dem Namen "copy_job.sh":

cqlsh <host> --username=<username> --password=<password> --cqlversion=<cqlversion> -f cql 

Nun, wenn Sie execute copy_job.sh würde es Ihre kopieren Daten zur Sicherungstabelle.

+0

Hey Murat ... Ich möchte es nur zum Lesen machen, weil die tatsächliche Tabelle viele Schreibvorgänge haben wird. Ist das wirklich unpassend? –

+0

Und wie synchronisiere ich es mit der Zeit? –

+0

Wenn die zweite Tabelle nur zum Lesen dient, ist sie definitiv nicht korrekt. Bitte verwenden Sie diese Strategie nicht. Cassandra ist eine unglaubliche Index-Engine. Das Empfangen von Tonnen von Schreibanforderungen wird Leseanforderungen nicht behindern. Das Sichern von Daten zu Lesezwecken wird Cassandra tatsächlich mehr belasten, da es alle Daten in eine Datei liest und sie in eine andere Tabelle einfügt. Wenn Sie das Gefühl haben, dass Lese- oder Schreibvorgänge nicht so schnell sind, wie Sie benötigen, sollten Sie neue Knoten im Cluster hinzufügen und Ihre Konfigurationen durchgehen. –

0

IMO, Sie können immer in beide Tabellen schreiben.

  • events.Customer_materializedview
  • event.Customer_backUp

Aber für die erste Tabelle, bitte entsprechenden TTL verwenden. Die Daten werden automatisch gelöscht.

Hilft das?