2016-07-25 17 views
2

Ich habe für die neuesten am Beispiel Trigger-Code wurde fallowing Cassandra https://github.com/apache/cassandra/blob/trunk/examples/triggers/src/org/apache/cassandra/triggers/AuditTrigger.java freigeben, und ich mag im Grunde die gleiche Logik ausführen, aber ich habe stapeln, weil mein Schema einen zusammengesetzten Schlüssel enthält.Cassandra 3.x Trigger erstellen Verbundpartitionsschlüssel

Die Frage ist, wie kann ich den zusammengesetzten Schlüssel erstellen und in RowUpdateBuilder innerhalb des Triggers übergeben?

Das Schema der Audit-Tabelle sieht aus, als Brachen:

CREATE TABLE audit_table (

    aggregate bigint, 
    create_date timeuuid, 

    ... 

    PRIMARY KEY(aggregate, create_date) 
) WITH CLUSTERING ORDER BY (create_date ASC); 
+0

Wie ist die Struktur Ihres zusammengesetzten Schlüssels? Hat es eine Cluster-Komponente? Könnten Sie bitte das Schema für die Tabelle veröffentlichen? – mikea

Antwort

0

Nachdem Sie Sie sind RowBuilderUpdate erstellt haben, können Sie dann die clustering Funktion aufrufen, die Clustering-Schlüssel zu setzen. Danach verwendest du es wie gewohnt.

public Collection<Mutation> augment(Partition update) { 
    ... 

    int cluster = 1; 
    ... 

    RowUpdateBuilder audit = 
     new RowUpdateBuilder(Schema.instance.getCFMetaData(auditKeyspace, auditTable), 
          FBUtilities.timestampMicros(), 
          (java.lang.Object)key); 

    audit = audit.clustering(cluster); 

    ... 
    return Collections.singletonList(audit.build()); 
} 

Auch wenn Sie den Schlüssel aus dem Datensatz erhalten, die es ausgelöst Besuche this answer.