6 ms·
Agreed, but which architectural features are you referring to?
by acconsta 11y ago
Agreed, but which architectural features are you referring to?
- z92 11y agoBasically ditched Java in favor of C++, and used a C++ framework called Seastar. "The Scylla design, right, is based on a modern shared-nothing approach. Scylla runs multiple engines, one per core, each with its own memory, CPU and multi-queue NIC." http://www.scylladb.com/technology/architecture/ http://www.scylladb.com/technology/architecture/
- jandrewrogers 11y agoOver the last decade, the distributed system nature of modern server hardware internals has become painfully evident in how software architectures scale on a single machine. The traditional approaches -- multithreading, locking, lock-free structures, etc -- are all forms of coordination and agreement in a distributed system, with the attendant scalability problems if not used very carefully. At some point several years ago, a few people noticed that if you attack the problem of scalable distribution within a single server the same way you would in large distributed systems (e.g. shared nothing architectures) that you could realize huge performance increases on a single machine. The caveat is that the software architectures look unorthodox. The general model looks like this: - one process per core, each locked to a single core - use locked local RAM only (effectively limiting NUMA) - direct dedicated network queue (bypass kernel) - direct storage I/O (bypass kernel) If you do it right, you minimize the amount of silicon that is shared between processes which has surprisingly large performance benefits. Linux has facilities that make this relatively straightforward too. As a consequence, adjacent cores on the same CPU have only marginally more interaction with each other than cores on different machines entirely. Treating a single server as a distributed cluster of 1-core machines, and writing the software in such a way that the operating system behavior reflects that model to the extent possible, is a great architecture for extreme performance but you rarely see it outside of closed source software. As a corollary, garbage-collected languages do not work for this at all.
- est 11y agoI really appreciate your insight, but I didn't understand why you keep implying "open source" as some kind of lack-behind design?
- ogrisel 11y agoI agree. I suppose that the vast majority of closed source DBs do not follow this shared nothing architecture either.
- jandrewrogers 11y agoIn practice, open source databases use more traditional, simpler architectures for which there is a lot of literature. Ironically, you see a lot more creativity and experimentation in closed source database architectures, and this has accrued some substantial benefits to those implementations. The architecture at the link looks unusual compared to open source databases but it is actually a common architecture pattern in closed source databases with significant benefits, particularly when it comes to performance. There is a lot of what I would call "guild knowledge" in advanced database engine design, much like with HPC, things the small number of experts all seem to know but no one ever writes down. It is a path dependency problem. Most open source databases were someone's first serious attempt at designing a database, a project that turned into a product. This is an excellent way to learn but it would be unrealistic to expect a thoroughly expert design for a piece of software of such complexity on the first (or second, or third) go at it. The atypical quality of PostgreSQL is a testament to the importance of having an experienced designer involved in the architecture.
- cbsmith 11y agoWhat aspect of the architecture seems unusual?
- _benedict 11y agoIt's not exactly guild knowledge, there's just a log of legacy baggage with open source projects that were started by random people and became popular before much thought was given to the architecture. This model has been considered by Cassandra devs for at least the last two years, and there are open JIRA tickets associated with it, it just hasn't been considered a priority.