2017-08-11 3 views
0

Ich habe einen Spring-Boot-Mikroservice erstellt, der Aggregation in einem Datenstrom ausführt und in verschiedene Cassandra-Tabellen schreibt. Ich suche nach einer Java-Bibliothek ähnlich Flyway, die Cassandra-Schema mit der Existenz eines Skripts in einem Ressourcenordner migrieren wird. Hat jemand Empfehlungen, vorzugsweise für eine Bibliothek, die Sie persönlich in der Produktion verwendet haben?Cassandra-Migrationsbibliothek in Java

+0

vielleicht könnten Sie [liquibase Erweiterung] versuchen (https://github.com/liquibase/liquibase-cassandra) – bilak

+0

und vielleicht [Säule] (https://github.com/comeara/pillar) – bilak

Antwort

0

benutzte ich builtamont:

<dependency> 
     <groupId>com.builtamont</groupId> 
     <artifactId>cassandra-migration</artifactId> 
     <version>0.9</version> 
    </dependency> 

Migration in Code:

import com.builtamont.cassandra.migration.CassandraMigration; 
import com.builtamont.cassandra.migration.api.configuration.KeyspaceConfiguration; 
import org.springframework.beans.factory.InitializingBean; 

class CassandraDataSourceMigration implements InitializingBean { 
    private final String ip; 
    private final String clusterName; 
    private final Integer port; 
    private final String keyspaceName; 
    private final String migrationsPath; 

    public CassandraDataSourceMigration(String ip, String clusterName, Integer port, String keyspaceName, String migrationsPath) { 
     this.ip = ip; 
     this.clusterName = clusterName; 
     this.port = port; 
     this.keyspaceName = keyspaceName; 
     this.migrationsPath = migrationsPath; 
    } 

    // getters/setters 

    @Override 
    public void afterPropertiesSet() throws Exception { 

     final KeyspaceConfiguration keyspaceConfig = new KeyspaceConfiguration(); 
     keyspaceConfig.setName(keyspaceName); 
     keyspaceConfig.getClusterConfig().setContactpoints(new String[]{ip}); 
     if (port != null) { 
      keyspaceConfig.getClusterConfig().setPort(port); 
     } 

     final CassandraMigration migrationProcessor = new CassandraMigration(); 
     migrationProcessor.setLocations(new String[]{migrationsPath}); 
     migrationProcessor.setKeyspaceConfig(keyspaceConfig); 
     migrationProcessor.migrate(); 
    } 
} 

application.properties

cassandra.ip=127.0.0.1 
cassandra.cluster=My cluster 
cassandra.keyspace=saya 
cassandra.migration=classpath:db/migration 
cassandra.port=9042 

Und das Migrationsskript unter Ressourcen/db/Migration V1_0__Init_table.cql