sider | 中文
The goal of sider is to build a redis-like kv store that scales using nvme ssd while maintaining similar speeds.
int
main(int argc, char **argv) {
start_db(argc, argv)([](){
return forever()
>> flat_map(wait_connection)
>> concurrent()
>> flat_map([](int fd){
return start_on(random_core())
>> until_session_closed(make_session(fd))(
read_cmd()
>> concurrent() >> pick_cmd() >> execute()
>> sequential() >> send_res()
);
})
>> reduce();
});
return 0;
}
sider has developed its own framework called "pump" to handle asynchronous and concurrent logic. This is an implementation of c++ std::execution(p2300).
sider uses spdk to implement kernel bypass technology, taking full advantage of nvme's concurrency to speed up io.
- For learn more about spdk, see here;
- In the function apply you can see how to combine asynchronous and concurrent tasks using the operators provided by pump.
- basic std::execution framework
- spdk-based io
- basic kv functions (get,put,scan)
- ycsb test and iops reaches hardware limit.
- batch
- io_uring-based network
- cuda support
- cold and hot data separation
Looking for job opportunities in c++ or database development (beijing or remote)