Uploaded image for project: 'Hawkular Metrics'
  1. Hawkular Metrics
  2. HWKMETRICS-361

Add support for schema change management

    Details

    • Type: Task
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 0.15.0
    • Component/s: Core, REST
    • Labels:
      None

      Description

      We currently lack a way to apply incremental schema changes. Our schema is maintained in a file, schema.cql, that will be executed on the initial deployment of Hawkular Metrics. If we make any schema changes, you have to drop the target keyspace and start fresh in order to get the changes. It should also be noted that the changes in schema.cql are applied only if the target keyspace does not exist. This means if the keyspace exists without any tables, the changes in the script will not be applied.

      There are popular tools for relational databases such as Liquibase, Flyway, and Rails migrations. These tools are not a good fit though as Cassandra is not an RDBMS. When we first started integrating Cassandra into RHQ, I spent time working on a patch to add support for Cassandra in Liquibase. I wound up abandoning the effort after it became clear that substantial changes would be required to the core Liquibase code base.

      I have started working on a schema change management tool named Cassalog that I want to integrate into Hawkular Metrics. It currently lives in its own repo because it is not Hawkular specific and is intended to be usable particularly by any JVM based project using Cassandra.

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                john.sanda John Sanda
                Reporter:
                john.sanda John Sanda
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: