> This is the first release of Skytable Octave, and it changes the query API entirely making all previous versions incompatible
> excluding the data files which are automatically upgraded per our backwards compatibility guarantees
Additions
BlueQL query language
- DDL:
- `space`s are the equivalent of the `keyspace` from previous versions
- `model`s are the equivalent of `table`s from previous version
- The following queries were added:
- `CREATE SPACE [IF NOT EXISTS] ...`
- `CREATE MODEL [IF NOT EXISTS] ...`
- Nested lists are now supported
- Type definitions are now supported
- Multiple fields are now supported
- `ALTER SPACE ...`
- `ALTER MODEL ...`
- `DROP SPACE [IF EXISTS] ...`
- `DROP MODEL [IF EXISTS] ...`
- `USE <space>`:
- works just like SQL
- **does not work with DDL queries**: the reason it works in this way is to prevent accidental deletes
- `INSPECT ...`:
- `INSPECT global`: can be used to inspect the global state, seeing all spaces currently present on the system, users and other information. Some information is limited to the root account only (as JSON)
- `INSPECT space <space>`: can be used to inspect a single space, returning a list of models and relevant information (as JSON)
- `INSPECT model <model>`: can be used to inspect a single model, returning declaration and relevant information (as JSON)
- DML:
- **All actions removed**: All the prior `SET`, `GET` and other actions have been removed in favor of the new query language
- The following queries were added:
- `INSERT INTO <space>.<model>(col, col2, col3, ...)`
- Insert queries can use several ways of insertion including:
- a standard order of declared columns like this:
sql
INSERT INTO myspace.mymodel(col1, col2, col3, ...)
- using a map:
sql
INSERT INTO myspace.mymodel { col1: val1, col2: val2, col4: val4, col3: val3 }
- Inserts can also make use of function calls during inserts:
- It can be called like this: `INSERT INTO myspace.mymodel(uuidstr, ...)`
- The following functions are available:
- `uuidstr`: returns a string with a randomly generated v4 UUID
- `uuidbin`: same as `uuidstr` but returns it as a blob
- `timesec`: returns a 64-bit integer with the current time in seconds
- `SELECT [ALL] field1, field2, ... FROM <space>.<model> WHERE <primary_key_column> = <value> [LIMIT n]`
- New data manipulation via `UPDATE` allows arithmetic operations, string manipulation and more! Examples:
- `UPDATE <space>.<model> SET col_num += 1 WHERE <primary_key_column> = <value>`
- `UPDATE <space>.<model> SET mystring += " last part of string" WHERE ...`
- `DELETE FROM <space>.<model> WHERE <primary_key_column> = <value>`
- DCL:
- `SYSCTL CREATE USER <name> WITH { password: <password> }`
- `SYSCTL ALTER USER <name> WITH { password: <new password> }`
- `SYSCTL DROP USER <name>`
Fractal engine
- The fractal engine is the start of the development of advanced internal state management in Skytable
- Effectively balances performance and reliability tasks
Skyhash 2 protocol
- The `Skyhash-2` protocol now uses a multi-stage connection sequence for improved security and performance
- Seamless auth
- More types
- Fewer retransmissions
Storage engines
- **New `deltax` storage engine for data**:
- The `deltax` storage engine monitors the database for changes and only records the changes in an append only file
- The interval can be adjusted per requirements of reliability
- Faster and hugely more reliable than the previous engine
- **New DDL ACID transactions with with the `logx` engine**:
- DDL queries are now fully transactional which means that if they are executed, you can be sure that they were complete and synced to disk
- This largely improves reliability
New shell
- The new client shell easily authenticates based on the Skyhash-2 protocol
- More reliable
Benchmark tool
- New benchmark engines to enable more efficient and real-world load testing
- New benchmark engines use far lesser memory
- New engines can handle midway benchmark crashes
Breaking changes
- `skyd`:
- **The entire query API has changed as actions have been removed**
- **Spaces and models**: replace keyspaces and models respectively
- **Configuration**:
- The configuration system now uses YAML instead of TOML for better readability
- The configuration options have changed across CLI, ENV and the config file
- Authentication **must be enabled** irrespective of `dev`/`prod` mode
- `sky-bench`:
- New benchmark engines are completely different from the previous engines (see above)
- Configuration options have changed because of how the new Skytable engine works
- `skysh`:
- Configuration options have changed because of how the new Skytable engine works
- `sky-migrate`: **This tool is deprecated and has been removed**. The Skytable engine will now automatically manage data upgrades. (please see [this issue](https://github.com/skytable/skytable/issues/320) for discussion on the same)