简体   繁体   English

Java中的Cassandra迁移库

[英]Cassandra Migration Library in Java

I have created a Spring Boot microservice which runs aggregation on a stream of data and writes it into various Cassandra tables. 我创建了一个Spring Boot微服务,该服务在数据流上运行聚合并将其写入各种Cassandra表中。 I am looking for a java library similar to Flyway which will migrate Cassandra schema with the existence of a script in a resource folder. 我正在寻找类似于Flyway的Java库,该库将在资源文件夹中存在脚本的情况下迁移Cassandra模式。 Does anyone have any recommendations, preferably for a library which you personally have used in production? 有没有人有任何建议,最好是针对您个人用于生产的图书馆?

I used builtamont : 我用了buildamont

    <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 application.properties

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

And the migration script is under resources/db/migration V1_0__Init_table.cql 迁移脚本位于resources / db / migration V1_0__Init_table.cql下

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM