ScyllaDB's company blog covers its Cassandra-compatible database, the Seastar framework, benchmarks, and Linux performance topics.
Commenters praise the team's engineering, citing Seastar's thread-per-core design and ScyllaDB's performance and scalability.
The best scalability I knew about was JanusGraph running on ScyllaDB. You can also run JanusGraph on Cassandra, which is horizontally scalable. ScyllaDB will be more performant and vertically scalable.
• Docs: https://docs.janusgraph.org/storage-backend/scylladb/
• Detailed use case: https://www.scylladb.com/2019/05/14/powering-a-graph-data-system-with-scylla-janusgraph/
• Video: https://www.youtube.com/watch?v=7WZyVUTwYJ4
Note this was a few years ago. I haven't seen a TigerGraph vs. JanusGraph head-to-head. The TigerGraph people are pretty sharp. If anyone has deeper knowledge would love to see comparative benchmarks.
Both JanusGraph and TigerGraph are rated about the same in terms of popularity on DB-engines.com (between 100-150 rankings). Neo4j is still far more popular/well-known, at rank #21 this past month. But there are other options you can explore.
> Cloud-managed NoSQL databases is the potential for zero-downtime maintenance.
Aah yes... that magical "zero-downtime" cloud, lots of promises are made by the cloud providers in that area but all eventually broken at some point. Its a fact of life with technology unfortunately. :)
No need for the cloud with ScyllaDB[1], CockroachDB[2] and others all being used in production.
LetsEncrypt chose their setup for perfectly valid reasons they described on their blog[3]. Please describe your expertise for saying they're "doing it wrong", because its clear from their blog they put a lot of time thinking about it.
[1]https://www.scylladb.com/
[2]https://www.cockroachlabs.com/
[3]https://letsencrypt.org/2021/01/21/next-gen-database-servers.html
> The JVM world tends to solve this problem by using off-heap caches. See Apache Ignite [0] or Ehcache [1].
Yeah, but I really do not bite your argument.
When you are reduced to do manual memory management and fight the GC of your language, maybe you should simply not use a language with GC in the first place.
They are right to use rust ( or C/C++) for that. It's not for nothing that redis (C) is so successful in the LRU domain.
> It's worth mentioning that Apache Cassandra itself uses an off-heap cache.
And still ScyllaDB (C++) is able to completely destroy Cassandra in term of AVG latency [0]
[0]: https://www.scylladb.com/product/benchmarks/
>> Easier for who?
For any decent SRE out there.
>> magnitudes more performance which is not possible by just tuning Cassandra
Magnitudes?? Are you talking about the order of magnitude? You should read the ScyllaDB performance report first.
https://www.scylladb.com/product/benchmarks/aws-i3-metal-benchmark/
Avg. 99.9% Latency (ms): 9.9
vs.
Avg. 99.9% Latency (ms): 474.4
While there is no significant latency difference in lover percentile tiers. Where Scylla really shines is TCO. Some companies trade SRE time for license cost, some other companies tune GC.
B+ Trees (which store data at leaves) rather than B-Trees are what you want for good iteration performance usually.
An ordered B-Tree iteration would jump between different arrays in the tree often, but a B+ Tree would only have you jump to another array once you’re done iterating over all the elements in the current array.
The following article says the same. https://www.scylladb.com/2021/11/23/the-taming-of-the-b-trees/#:~:text=There%20are%20two%20different%20ways,keys%20from%20its%20left%20subtree.
Yes most software is limited cores (example: encoding videos).
The best (efficient) way to utilize that many cores IS to have 1 pinned process/thread per-core: https://www.scylladb.com/ https://github.com/scylladb/seastar/
That would be the same in Python too. A problem is that you can't share the kernel pages for the code, and you need to have a shared-cache. Probably 0-mem-copy with no deserialization example: lmdb + Flat Buffers.
Nicer is to have 1/2x cores, but each core being 2x faster ;)