2016-03-25 6 views
1

Ich benutze Cassandra-Einheit zum Testen in meinem Projekt (Java) und es ist großartig, aber das Problem ist: Laden von Testdaten dauert ziemlich lange (100 Sekunden für ~ 25 000 einfache Einsätze).Der schnellste Weg, Testdaten in die Cassandra-Einheit zu füllen?

Ich habe einige Ideen, aber sie scheinen nicht für cassandra Einheit machbar zu sein:

  • Verwendung so etwas wie cqlsh Befehl COPY FROM zu kopieren Daten aus csv
  • Backup vorbereitet Datenordner und geben Sie es an CU bei der Initialisierung.

Haben Sie andere Ideen? Danke.

+0

Hängt davon ab, ob die genannten Daten geändert werden, aber z Sie können eine eigenständige Instanz mit diesen Daten haben, die von diesen Tests gelesen werden. Sie können auch prüfen, wie die Chargen mit der Cassandra-Einheit funktionieren würden, nur erinnern, dass Chargen in der Cluster-Umgebung nicht für Multi-Teil-Einsätze geeignet sind. – mmatloka

Antwort

1

Die Art und Weise auf einmal eine Menge Daten zu laden, bis die verwenden unlogged batch mechanism:

BEGIN UNLOGGED BATCH 
INSERT INTO ...; 
INSERT INTO ...; 
INSERT INTO ...; 
... 
APPLY BATCH; 

Es ist nicht schnell sein, aber für Testzwecke sollte es kein Problem sein, und Sie sollten Timeouts vermeiden Es wird wahrscheinlich ein einfacher Satz von INSERT generiert (weil Sie die Protokolldatei füllen und Cassandra danach keine Daten mehr akzeptiert).

+0

Solcher Ansatz gibt mir einen Fehler: nicht übereinstimmende Eingabe ';' erwartet K_APPLY Entfernt ';' nach 'UNLOGGED BATCH' ist der Fehler dann: nicht übereinstimmender Eingang '' erwartet K_APPLY – Jack

+0

Tut mir leid, ich hätte das '' '' 'nach dem' BATCH' Schlüsselwort nicht einfügen sollen. Außerdem bedeutet "..." nur, dass Sie nach Bedarf weitere 'INSERT' hinzufügen, also würde ich mir vorstellen, dass Sie das nicht in Ihre Anweisungsliste aufgenommen haben. Der Link gibt Ihnen zusätzliche Dokumentation (mit 'BATCH' sind weitere Funktionen verfügbar. Auch dies sollte mit Cassandra 2.0 und höher funktionieren. –

Verwandte Themen