分类: Rocksdb
恭喜,聪明的你发明了RocksDB的主从复制
本文由原作者归档自微信公众号「两分钟好奇心」,原文发布于 2025-01-06。原文链接:恭喜,聪明的你发明了RocksDB的主从复制。 背景 你是一个 RocksDB 进程,你的名字叫A。 (该图片来自rockdb.org) 很久很久以前,你承担着上层应用的 Put、Get 请求,你勤勤恳恳没有怨言。 突然有一天,你 Put、Get 的执行时间变长了,程序员们疯狂质问你,你为什么变慢了,你解释说是因为 Get 请求太多处理不过来了,要是能有其他 RocksDB 进程帮你承担一些请求就好了。 …
本文由原作者归档自微信公众号「两分钟好奇心」,原文发布于 2025-01-06。原文链接:恭喜,聪明的你发明了RocksDB的主从复制。 背景 你是一个 RocksDB 进程,你的名字叫A。 (该图片来自rockdb.org) 很久很久以前,你承担着上层应用的 Put、Get 请求,你勤勤恳恳没有怨言。 突然有一天,你 Put、Get 的执行时间变长了,程序员们疯狂质问你,你为什么变慢了,你解释说是因为 Get 请求太多处理不过来了,要是能有其他 RocksDB 进程帮你承担一些请求就好了。 …
rocksdb:manifest 文件写流程
本文由原作者归档自知乎,原文发布于 2024-09-24。原文链接:rocksdb:manifest 文件写流程。 零、说明 manifest文件是rocksdb用来管理元信息变动的文件。文件中以VersionEdit为单位。记录了所有SST文件的创建、删除、层级调整等变动行为。 我们都知道,写文件之前需要先将文件open,然后才能写入。所以下文会先介绍manifest文件时怎么open的,然后说明一次变动是如何写入manifest文件中的。 一、open 流程 1.1、一句话概述 一个fd被 …
本文由原作者归档自知乎,原文发布于 2024-09-24。原文链接:rocksdb:manifest 文件写流程。 零、说明 manifest文件是rocksdb用来管理元信息变动的文件。文件中以VersionEdit为单位。记录了所有SST文件的创建、删除、层级调整等变动行为。 我们都知道,写文件之前需要先将文件open,然后才能写入。所以下文会先介绍manifest文件时怎么open的,然后说明一次变动是如何写入manifest文件中的。 一、open 流程 1.1、一句话概述 一个fd被 …
Rockset:将 RocksDB 数据存储到S3上
本文由原作者归档自知乎,原文发布于 2022-12-10。原文链接:Rockset:将 RocksDB 数据存储到S3上。 本文要介绍的是基于RocksDB改造的rocksdb-cloud项目。 首先,可以看下官方的example,这个example展示了如何读写数据,以及如何在无感知的情况下将SST文件上传到S3上。 本人对这段代码进行了debug,并进行深入研究,上传到S3的奥秘如下 实现的方法很巧妙,在执行Mem Table Flush的时候,先将文件写到本地,等RocksDB调用 …
本文由原作者归档自知乎,原文发布于 2022-12-10。原文链接:Rockset:将 RocksDB 数据存储到S3上。 本文要介绍的是基于RocksDB改造的rocksdb-cloud项目。 首先,可以看下官方的example,这个example展示了如何读写数据,以及如何在无感知的情况下将SST文件上传到S3上。 本人对这段代码进行了debug,并进行深入研究,上传到S3的奥秘如下 实现的方法很巧妙,在执行Mem Table Flush的时候,先将文件写到本地,等RocksDB调用 …
Rockset: 源码编译
本文由原作者归档自知乎,原文发布于 2022-03-12。原文链接:Rockset: 源码编译。 说明 官方README.md里面已经有详细的编译说明了。值得注意的是:编译之前要先安装aws的sdk,并且要求安装到/usr/local目录下。为了支持存储到s3上,需要在环境变量里面配置USE_AWS=1。 编译 aws-sdk-cpp 此处建议使用rockset fork出来的仓库,因为aws官方仓库会不断更新,有可能导致rockset不兼容高版本sdk。 本人编译时就发现 …
本文由原作者归档自知乎,原文发布于 2022-03-12。原文链接:Rockset: 源码编译。 说明 官方README.md里面已经有详细的编译说明了。值得注意的是:编译之前要先安装aws的sdk,并且要求安装到/usr/local目录下。为了支持存储到s3上,需要在环境变量里面配置USE_AWS=1。 编译 aws-sdk-cpp 此处建议使用rockset fork出来的仓库,因为aws官方仓库会不断更新,有可能导致rockset不兼容高版本sdk。 本人编译时就发现 …