* Bump up version, add changelog and update scripts
* Fix actiondoc
* Drop all `since` keys
Since our docs are now well versioned and doesn't read these keys
anymore, we can safely remove them.
All changes in this project will be noted in this file.
All changes in this project will be noted in this file.
## Version 0.6.0 [2021-05-27]
> Breaking changes!
* Dropped support for Terrapipe 1.0 (reached EOL)
* Added support for Skyhash 1.0 (see [#147](https://github.com/skytable/skytable/pull/147))
* Fixed persistence bugs (see [#151](https://github.com/skytable/skytable/pull/151))
* Fixed bugs in background services (see [#152](https://github.com/skytable/skytable/pull/152))
* Make BGSAVE recoverable (see [#153](https://github.com/skytable/skytable/pull/153))
* Added `lskeys` action (see [#155](https://github.com/skytable/skytable/pull/155))
* Added `compat` module (see [#158](https://github.com/skytable/skytable/pull/158))
* Added backward compatibility for storage formats all the way upto 0.3.0. See [this wiki article](https://github.com/skytable/skytable/wiki/Disk-storage-formats) for more information
### Upgrading existing clients
As Terrapipe 1.0 has reached EOL, all clients have to be upgraded to use the [Skyhash 1.0 Protocol](https://docs.skytable.io/protocol/skyhash).
### Upgrading existing datasets
Please refer to [this wiki article](https://github.com/skytable/skytable/wiki/Disk-storage-formats).
### Improvements in the new protocol (Skyhash)
* Upto 40% lower bandwidth requirements
* Upto 30% faster queries
* Support for recursive arrays
* More robust and well tested than Terrapipe
### Internal codebase improvements
* BGSAVE is now tested by the test suite
* `skysh` and `sky-bench` both use the [Rust client driver for Skytable](https://github.com/skytable/client-rust).
Skytable is an effort to provide the best of key/value stores, document stores and columnar databases, that is, **simplicity, flexibility and queryability at scale**. The name 'Skytable' exemplifies our vision to create a database that has limitless possibilities. Skytable was previously known as TerrabaseDB (and then Skybase) and is also nicknamed "STable", "Sky" and "SDB" by the community.
Skytable is an effort to provide the best of key/value stores, document stores and columnar databases, that is, **simplicity, flexibility and queryability at scale**. The name 'Skytable' exemplifies our vision to create a database that has limitless possibilities. Skytable was previously known as TerrabaseDB (and then Skybase) and is also nicknamed "STable", "Sky" and "SDB" by the community.
Skytable is curently in an alpha stage, but can be used as a **performant**, **secure** and **persistent key-value store**.
Skytable is curently under development, but can be used as a **performant**, **secure** and **persistent key-value store**.
## Getting started 🚀
## Getting started 🚀
@ -42,7 +42,7 @@ You can learn more about installation [here](https://skytable.github.io/docs/get
The project currently maintains an official [Rust driver](https://github.com/skytable/client-rust) and we have plans
The project currently maintains an official [Rust driver](https://github.com/skytable/client-rust) and we have plans
to support more languages along the way!
to support more languages along the way!
If you want to use a different language, for now you'll just need to implement the simple and performant [Skyhash Protocol Spec](https://skytable.github.io/docs/next/protocol/skyhash) or for versions prior to 0.6.0, the [Terrapipe Protocol Spec](https://skytable.github.io/docs/protocol/terrapipe).
If you want to use a different language, for now you'll just need to implement the simple and performant [Skyhash Protocol](https://docs.skytable.io/protocol/skyhash).
"desc": "SET all keys if they don't exist, or UPDATE them if they do exist",
"desc": "SET all keys if they don't exist, or UPDATE them if they do exist",
@ -143,7 +129,6 @@
},
},
{
{
"name": "KEYLEN",
"name": "KEYLEN",
"since": "0.4.4",
"complexity": "O(1)",
"complexity": "O(1)",
"args": "KEYLEN <key>",
"args": "KEYLEN <key>",
"desc": "Returns the length of the UTF-8 string",
"desc": "Returns the length of the UTF-8 string",
@ -151,15 +136,13 @@
},
},
{
{
"name": "MKSNAP",
"name": "MKSNAP",
"since": "0.5.0",
"complexity": "O(n)",
"complexity": "O(n)",
"args": "MKSNAP <SNAPNAME>",
"args": "MKSNAP <SNAPNAME>",
"desc": "This action can be used to create a snapshot. Do note that this action **requires snapshotting to be enabled on the server side**, before it can create snapshots. \nIf you want to create snapshots **without** snapshots being enabled on the server-side, use a second argument (`[SNAPNAME]`) to specify a snapshot name and a snapshot will be create in a folder called `remote` under your snapshots directory. \nFor more information on snapshots, read [this document](/snapshots)",
"desc": "This action can be used to create a snapshot. Do note that this action **requires snapshotting to be enabled on the server side**, before it can create snapshots. \nIf you want to create snapshots **without** snapshots being enabled on the server-side, pass a second argument <SNAPNAME> to specify a snapshot name and a snapshot will be create in a folder called `remote` under your snapshots directory. \nFor more information on snapshots, read [this document](/snapshots)",
"return": "Okay if succeeded, otherwise it returns `err-snapshot-disabled` if snapshotting is disabled or `err-snapshot-busy` if a snapshotting operation is already in progress"
"return": "Okay if succeeded, otherwise it returns `err-snapshot-disabled` if snapshotting is disabled or `err-snapshot-busy` if a snapshotting operation is already in progress"
},
},
{
{
"name": "LSKEYS",
"name": "LSKEYS",
"since": "0.6.0",
"complexity": "O(n)",
"complexity": "O(n)",
"args": "LSKEYS <limit>",
"args": "LSKEYS <limit>",
"desc": "Returns a flat string array of keys present in the database. If no <limit> is given, then a maximum of 10 keys are returned. If a limit is specified, then a maximum of <limit> keys are returned",
"desc": "Returns a flat string array of keys present in the database. If no <limit> is given, then a maximum of 10 keys are returned. If a limit is specified, then a maximum of <limit> keys are returned",