skytable / skytable

Skytable is a modern scalable NoSQL database with BlueQL, designed for performance, scalability and flexibility. Skytable gives you spaces, models, data types, complex collections and more to build powerful experiences

Home Page:https://skytable.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Docs: upgrade and downgrade processes

zamazan4ik opened this issue · comments

Hi.

After reading the documentation it is not clear for me, how upgrade and downgrade processes should be performed over the database. Could you please describe somewhere in the documentation:

  • How to upgrade the database to the newer version (hopefully with no downtime)
  • How to downgrade the database to the older version (hopefully with no downtime)
  • Maybe some compatibility policies and notes between versions

Thanks in advance!

commented

Data upgrades are automatically handled by Skytable, and the next release will do the same.

An exception to this is version 0.6 to 0.7, however; for this upgrade you'll need to use the migration tool that is provided in the bundle.

In all other cases, the moment you start the database up, it will scan metadata and automatically perform the required upgrades without user intervention. Also, there is no such thing as a downgrade, and if you want to go back from say 0.7 to 0.6, you'll have to manually export data and do it, although we strictly advise against it. Also, newer releases support newer data types/models which makes returning to an older version infeasible.

So could you explcitly mention that you do not support downgrade process? And if a user wants to perform rollback, they need to do a fresh install of the old version and then import the data.

commented

I will have this documented. Also, do note that bi-directional compatibility is hard to attain especially because, for example, 0.7.1 supports lists, but 0.7.0 doesn't. In that case, when you move back from 0.7.1 to 0.7.0 it will exit with an error stating that the data type is unsupported. The important thing to note is, there is no plausible way for us to evaluate or parse a list as a string, making forwards compatibility hard to support (so by exporting data from 0.7.1, you'll have to define custom logic to "turn a list into a string," which is something the database server cannot guess). However, per our guarantees, backwards compatibility is always maintained for storage formats; this means that you should never have trouble when going from an earlier version to a newer version.

I completely understand preserving bi-directional compatibility is a really hard job. When you will document the downgrade in details somewhere, I guess the issue could be closed.

Thank you a lot for your efforts!

commented

I have written about this here in the docs. Feel free to add anything there if you like.