有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的Cassandra迁移库

我创建了一个SpringBootMicroService,它在数据流上运行聚合,并将其写入各种Cassandra表中。我正在寻找一个类似于Flyway的java库,它将在资源文件夹中存在脚本的情况下迁移Cassandra模式。是否有人有任何建议,最好是针对您个人在生产中使用过的库


共 (1) 个答案

  1. # 1 楼答案

    我用了builtamont

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

    代码迁移:

    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();
        }
    }
    

    申请。属性

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

    迁移脚本位于resources/db/migration V1_0_uinit_表下。cql