Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to manage Cassandra schemas #1119

Open
yurishkuro opened this issue Oct 15, 2018 · 1 comment
Open

How to manage Cassandra schemas #1119

yurishkuro opened this issue Oct 15, 2018 · 1 comment

Comments

@yurishkuro
Copy link
Member

Requirement - what kind of business use case are you trying to solve?

There are some PRs in progress that alter the database schema (e.g. #979, #793).

Problem - what in Jaeger blocks you from solving the requirement?

We do not have established process on versioning the schema.

Proposal - what do you suggest to solve the problem or improve the existing situation?

n/a

Any open questions to address

  • Do we want a new versioned file for every change in the schema?
  • How do we do evolutions?
@jpkrohling
Copy link
Contributor

Do we want a new versioned file for every change in the schema?

Yes.

How do we do evolutions?

There are quite a few solutions out there for RDMBS that would apply here as well, at least conceptually. One popular choice is liquibase (looks like they do support Cassandra!). Basically, whenever the script runs, it checks a "version" table and see which migrations need to be executed. For most operations, there should be a "up" (apply) and a "down" (rollback) step.

For Kubernetes environments, I'm expecting the Operator to handle this, by running the create-schema batch job backed by the docker image jaegertracing/jaeger-cassandra-schema.

Should we provide data migration scripts, e.g. to rewrite dependencies in #793?

What happens if we don't? Would the data store be left in an unusable state?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants