Loading...

Skytable 0.8 GA

March 1, 2024
By Sayan Nandan

Blog post image

We’re extremely happy to announce that Skytable 0.8 is now generally available. The initial release of Skytable 0.8 was made back in December last year and over four betas and a lot of testing, we’re finally releasing it into the stable channel. Let’s take a quick look at what’s new. If you’re out of time, jump here to get the latest release.

What’s new

Skytable has always been a pure key-value store until the release of Skytable Octave. Our users asked, and we listened.

With Skytable Octave, the key-value engine has been replaced (and in a way augmented) with a new strongly-typed, integrity enforced database engine while the actions API (such as SET and GET commands) has been replaced with a powerful querying experience powered by BlueQL, our very own query language that has built-in injection resistance features and can be called a modern dialect of SQL.

Overall, Skytable Octave is almost like a new database — even for those who have been with us for years.

Spaces and models

Spaces are like containers for different items, such as models, settings and such. Spaces replace the earlier keyspace based design which only allowed tables to be stored. More data models are being worked on that can be stored inside spaces. A model is like a SQL table but with support for advanced data types and is extensible in ways that we could not implement with SQL tables.

Users can now define schemas with complex data types and configurations. Here’s an example:

CREATE MODEL myspace.mymodel(
    username: string,
    password: string,
    null profile_pic: binary,
    notes: list { type: string }
)

New query language

As noted earlier, BlueQL is Skytable’s very own query language that is based on SQL with several changes to allow for more modern syntax such as dictionaries and lists and other collections. It is built to provide injection-resistance, by design1. Overall, BlueQL succeeds the actions API as a powerful, flexible and extensible query language. Many more features have been planned for BlueQL and several of these are already being implemented.

Here are some examples for you to run on skysh:

INSERT INTO apps.jotsy { username: "sayan", password: "password", notes: ["hi"] }
SELECT ALL * FROM apps.jotsy LIMIT 100
UPDATE apps.jotsy SET notes += "second note" WHERE username = "sayan"
DELETE FROM apps.jotsy WHERE username = "sayan"

Note that these examples use literals because skysh auto-parameterizes queries. Read more here.

Internal improvements

Skytable Octave comes with a comprehensive redesign of database internals, including a new storage engine with an advanced delayed-durability transaction design that utilizes diffs for syncing data changes and reducing disk seek, a new protocol with optimized connection stages and extensibility, a new in-memory engine that enables greater throughput, and the Fractal Engine that works as a smart background daemon (Fractal will get many more exciting updates in future releases).

Changes since the first beta

Several things have changed since the first beta including:

  • An entirely new storage engine: yes, we built a storage engine and then built another one on top of it to improve reliability
  • Low-level protocol fixes
  • Fixed some configuration issues
  • Fixed some critical primary index bugs
  • Reduced memory usage during online model data sync
  • Made using the CLI more convenient
  • More miscellaneous fixes

Try it out

Go ahead and download the latest release from our releases page and then read the documentation to get started. If you come across any bugs, please open an issue here.

What’s next

As we also said in our initial release post, this is just the start! A lot of new features and optimizations are planned and we’re now going to quickly ship them, one feature at a time. Things such as new data types, a new realtime interface, improved collections syntax and more are already underway. In the meantime, try out the latest release, let us know if you have any feedback or find any bugs. We’ll see you at the next release!



Last updated on: March 1, 2024
2 min read
Get our source code here
Share this post:
Top