CoroBase:协程式内存数据库引擎指南

CoroBase:协程式内存数据库引擎指南

corobase Coroutine-Oriented Main-Memory Database Engine (VLDB 2021) corobase 项目地址: https://gitcode.com/gh_mirrors/co/corobase

1. 项目介绍

CoroBase 是一个研究性质的数据库引擎,该引擎利用C++20中的栈less协程来隐藏CPU缓存缺失,提高主内存数据库的性能。它在VLDB 2021会议上发表,通过模型化事务为协程以优化并发处理。CoroBase继承了ERMIA的共享一切架构和同步与并发控制协议,并提供了两种设计模式:优化的两层协程到事务转换以及完全嵌套的协程到事务设计。

2. 项目快速启动

环境准备

首先,确保你的系统满足以下软件依赖:

  • cmakeclang编译器(推荐版本8.0以上)及其相关库文件。
  • 安装额外的库如libcxx, libcxxabi, libnuma, libibverbs, libgflags, 和 libgoogle-glog。在Ubuntu环境下可以通过以下命令安装:
    sudo apt-get install -y cmake clang-8 libc++-8-dev libc++abi-8-dev
    sudo apt-get install -y libnuma-dev libibverbs-dev libgflags-dev libgoogle-glog-dev
    

配置内核参数

分配足够的huge pages用于内存映射:

sudo sh -c 'echo [适量页面数] > /proc/sys/vm/nr_hugepages'

并调整mlock限制,在/etc/security/limits.conf中添加:

[用户名] soft memlock unlimited
[用户名] hard memlock unlimited

记得替换[用户名],然后重新登录以应用更改。

编译CoroBase

在源码目录外创建构建目录并执行CMake及make:

mkdir build && cd build
cmake ..
make -j[N] # N是可选的,代表并行编译的线程数

编译完成后,会有两个可执行文件用于运行基准测试。

运行示例

例如,运行一个简单的YCSB基准测试:

./run.sh ./ermia_SI ycsb 10 48 20 \
    "-physical_workers_only=1 -index_probe_only=1 -node_memory_gb=75 -null_log_device=1 -coro_tx=1 -coro_batch_size=8" \
    "-w C -r 10 -s 1000000000 -t simple-coro"

3. 应用案例和最佳实践

CoroBase适用于高性能、低延迟的在线交易处理(OLTP)场景。最佳实践包括:

  • 利用其协程特性,特别是在高并发读写混合工作负载下。
  • 调优coro_batch_size和线程数以适应不同的硬件配置和工作负载。
  • 使用预设的系统级选项和基准特定选项,比如通过-null_log_device避免日志 flushing 成为瓶颈。

4. 典型生态项目

虽然CoroBase本身是一个独立的项目,但在数据库领域,它代表了一种新的并发控制和数据访问方式。研究者和开发者可以借鉴其协程处理机制,应用于其他内存数据库或分布式数据库项目中,以探索改善并发效率和降低延迟的新途径。CoroBase可以与其他数据库中间件或分析工具结合,比如用于实时数据分析的工作流中,实现更高效的数据处理流程。


以上是基于sfu-dis/corobase项目的简要指导文档,旨在帮助开发者快速上手并理解其核心价值和应用场景。实际应用时,请参考项目最新文档及源代码中的详细说明。

corobase Coroutine-Oriented Main-Memory Database Engine (VLDB 2021) corobase 项目地址: https://gitcode.com/gh_mirrors/co/corobase

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹俐莉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值