...
Pegasus targets to be a simple, robust key-value database with stable&predictable latency. To achieve the performance requirement, we use C++ for the Pegasus "kernel", aka MetaServer along with i.e MetaServer and ReplicaServer.
However, C++ is notorious for its inefficiency (in development) and high learning curve, which ultimately eventually leads to a high contribution barrier.
Pegasus can act as a building block of other sophisticated database systems. But in the kernel, it should always be kept no more than a key-value systemWe expect the C++ codebase, including the functionalities of Pegasus kernel, can be simpler, smaller, and more stable.
Build an ecosystem around Pegasus
As Pegasus grows, we have learned that it's impossible to maintain a monolithic system bundled with sophisticated features. So we need an ecosystem with a variety of useful tools, controllers, surrounding the kernel and altogether manages the clusters more intelligently.
Improve the stability of Pegasus
Performance is usually the main reason people choose Pegasus,
Key Results
- admin-cli: use golang to build a more user-friendly administration command-line tool.
- meta-proxy: a stateless proxy in front of MetaServer that lets the users unaware of the specific address of MetaServer.
- pegasus-cpp-client: maintain the client as a separate project.
- backup-manager: a service that manages backup externally.
- bulkload-manager: a service that manages bulk-load externally.
- pegic: a command-line tool that reads pegasus data in a user-friendly way.