Challenge Overview

Challenge Overview

  • Create a Liquibase Extension for Cassandra database 

 

Project background

Build a Cassandra database versioning tool that works with Java and  Javascript using Gitlab CI pipeline.

 

 

Technology Stack

 

Individual Requirements

 

Liquibase is tailored for relational databases with JDBC, but there is no native JDBC driver for Cassandra.

 

In this PoC, you are responsible for extending the Liquibase using the DataStax Java Driver, which uses Cassandra's binary protocol and Cassandra Query Language. 

 

Only the formatted SQL (or CQL for Cassandra) changelog needs to be supported in this POC for Cassandra: https://www.liquibase.org/get_started/quickstart_sql.html

 

In the CQL changelog script, user can define statements to manage keyspace, tables, and columns, as well as provide rollback statements to rollback. 

 

Then the user can execute the liquibase command against the Cassandra database to apply or rollback the schema changes defined in the changelog file.

 

When the liquibase connects to the Cassandra database, it will create the changelog and changelog lock table if they don’t exist:

  • all the schema changes will be tracked in the changelog table

  • and lock table is used to ensure only one client can make the changes each time

 

It looks that you will need to provide custom implementation to the following interfaces.

  • liquibase.database.Database

  • liquibase.database.DatabaseConnection

  • and possibly more

 

You should also refer to the following open source repos to see how the schema migration should be properly done for Cassandra database. These repos are all based upon the DataStax Java Driver lib:

 

 



Final Submission Guidelines

Submission Deliverable

  • PoC code

  • Detailed Deployment Guide and Verification Guide

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30122286