Scylla Summit 2019
I've had the pleasure to attend again and present at the Scylla Summit in San Francisco and the honor to be awarded the Most innovative use case of Scylla.
It was a great event, full of friendly people and passionate conversations. Peter did a great full write-up of it already so I wanted to share some of my notes instead...
This a curated set of topics that I happened to question or discuss in depth so this post is not meant to be taken as a full coverage of the conference.
Scylla Manager version 2¶
The upcoming version of scylla-manager is dropping its dependency on SSH setup which will be replaced by an agent, most likely shipped as a separate package.
On the features side, I was a bit puzzled by the fact that ScyllaDB is advertising that its manager will provide a repair scheduling window so that you can control when it's running or not.
Why did it struck me you ask?
Because MongoDB does the same thing within its balancer process and I always thought of this as a patch to a feature that the database should be able to cope with by itself.
And that database-do-it-better-than-you motto is exactly one of the promises of Scylla, the boring database, so smart at handling workload impacts on performance that you shouldn't have to start playing tricks to mitigate them... I don't want this time window feature on scylla-manager to be a trojan horse on the demise of that promise!
They almost got late on this but are working hard to play well with the new toy of every tech around the world. Helm charts are also being worked on!
The community developed scylla operator by Yannis is now being worked on and backed by ScyllaDB. It can deploy, scale up and down a cluster.
Few things to note:
- it's using a configmap to store the scylla config
- no TLS support yet
- no RBAC support yet
- kubernetes networking is lighter on the network performance hit that was seen on Docker
- use placement strategies to dedicate kubernetes nodes to scylla!
Change Data Capture¶
Oh boy this one was awaited... but it's now coming soon!
I inquired about it's performance impact since every operation will be written to a table. Clearly my questioning was a bit alpha since CDC is still being worked on.
I had the chance to discuss ideas with Kamil, Tzach and Dor: one of the thing that one of my colleague Julien asked for was the ability for the CDC to generate an event when a tombstone is written so we could actually know when a specific data expired!
I want to stress a few other things too:
- default TTL on CDC table is 24H
- expect I/O impact (logical)
- TTL tombstones can have a hidden disk space cost and nobody was able to tell me if the CDC table was going to be configured with a lower gc_grace_period than the default 10 days so that's something we need to keep in mind and check for
- there was no plan to add user information that would allow us to know who actually did the operation, so that's something I asked for because it could be used as a cheap and open source way to get auditing!
Another so long awaited feature is also coming from the amazing work and knowledge of Konstantin. We had a great conversation about the differences between the currently worked on Paxos based LWT implementation and the maybe later Raft one.
So yes, the first LWT implementation will be using Paxos as a consensus algorithm. This will make the LWT feature very consistent while having it slower that what could be achieved using Raft. That's why ScyllaDB have plans on another implementation that could be faster with less data consistency guarantees.
User Defined Functions / Aggregations¶
This one is bringing the Lua language inside Scylla!
To be precise, it will be a Lua JIT as its footprint is low and Lua can be cooperative enough but the ScyllaDB people made sure to monitor its violations (when it should yield but does not) and act strongly upon them.
I got into implementation details with Avi, this is what I noted:
- lua function return type is not checked at creation but at execution, so expect runtime errors if your lua code is bad
- since lua is lightweight, there's no need to assign a core to lua execution
- I found UDA examples, like top-k rows, to be very similar to the Map/Reduce logic
- UDF will allow simpler token range full table scans thanks to syntax sugar
- there will be memory limits applied to result sets from UDA, and they will be tunable
Dejan is the text search guy at ScyllaDB and the one who kindly implemented the LIKE feature we asked for and that will be released in the upcoming 3.2 version.
We discussed ideas and projected use cases to make sure that what's going to be worked on will be used!
I've always been frustrated about Redis because while I love the technology I never trusted its clustering and scaling capabilities.
What if you could scale your Redis like Scylla without giving up on performance? That's what the implementation of the Redis API backed by Scylla will get us!
I'm desperately looking forward to see this happen!