Talent Plan TinyKV Project1 StandaloneKV

本文档介绍了如何实现单机存储引擎StandaloneKV,支持Column Family的Key-Value存储服务。内容涵盖文档翻译、Server实现、Column Family概念及StandAloneStorage的Write和Reader函数。项目使用badger作为存储引擎,并提供了Put、Delete、Get和Scan操作。通过engine_util库实现了Column Family的前缀模拟。同时,Server需要实现原生服务接口,包括Write、Reader.GetCF、Reader.IterCF等。
摘要由CSDN通过智能技术生成

6.824做完了,代码写的乱糟糟,想着重写一遍,整理下思路,后来发现了tinykv,相比于6.824还多了个事务,就准备把tinykv也做一下。

文档翻译

在本项目中,实现一个单机的、支持Column Family的KV存储服务。Column Family表示Key的命名空间,不同Column Family间可以有相同的Key存在。

服务提供Put/Delete/Get/Scan四种基本操作。

本项目可以拆解为两步去实现:

  1. 实现单机的存储引擎。
  2. 实现原生的服务接口。

tinykvpb.proto和kvrpcpb.proto定义了rpc接口和请求响应消息,kv/main.go中注册了RPC服务。

proto文件由protocol-buffer生成,不需要修改。

Server底层由Storage抽象类支持,需要为StandAloneStorage实现Storage的所有接口。

type Storage interface {
    // Other stuffs
    Write(ctx *kvrpcpb.Context, batch []Modify) error
    Reader(ctx *kvrpcpb.Context) (StorageReader, error)
}
复制代码

Storage底层由badger(类似LevelDB或RocksDB的存储引擎)支持,StandAloneStorage即badger的简单封装。

目前不需要考虑kvrpcpb.Context的涵义。

一些提示。

  1. 使用badger.Txn来实现Reader()函数,即badger提供的事务支持。
  2. badger不支持Column Familyÿ
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值