【KV存储(1)】KV存储总体设计及简介


前言

本文将引入KV存储,并对其架构设计进行分析。


一、项目背景

1.1 基础KV存储介绍

KVStore 是一种简单的数据存储模型,它以键(Key)和值(Value)的形式来存储和检索数据。就像是一个字典,通过一个特定的 “键” 来查找对应的 “值”。

1.2 项目的意义

目前优秀的KV存储开源项目有很多,比如redis、MongoDB和Memcached,但是自己实现一个基础的KV存储组件仍然是有意义的。比如在当前的项目中,我们只需要用到key到value的映射关系,那么自己实现该基础组件可以为公司项目带来更多的价值:

  1. 业务简单,不需要用到复杂的功能;
  2. 可以将性能做到极致,对比redis会更好;
  3. 可以用来申请发明专利;
  4. 体现了当前团队良好的技术氛围。

二、KV存储架构设计

接下来实现这个“数据库”!本项目采用C语言,默认键值对都是char *类型。首先我们希望在客户端发送相应指令到服务端,服务端收到合法指令后执行相应的操作并返回OKEXISTNO EXIST等给客户端。所以本项目架构设计如下:

image.png

网络层:设计了三种网络方案,可以通过宏定义进行切换;
协议层:基本参考了redis的方案;
核心层:对客户端的数据进行解析,并调用不同的处理函数;
接口层:将相应数据结构的接口进行封装,并对内存管理模块进行独立设计;
引擎层:目前实现了四种存储引擎,都具备增删改查等操作。

2.1 kv存储协议层对应的数据结构及命令

操作/数据结构插入查找修改删除存在
arraySET key valueGET keyMOD key value2DEL keyEXIST key
rbtreeRSET key valueRGET keyRMOD key value2RDEL keyREXIST key
hashHSET key valueHGET keyHMOD key value2HDEL keyHEXIST key
skiplistZSET key valueZGET keyZMOD key value2ZDEL keyZEXIST key
备注返回OK、ERROR或EXIST返回对应的value返回OK、ERROR或EXIST返回OK、ERROR或EXIST返回True/False

2.2 本项目使用到的技术栈

  • 网络框架
    1. 协程
    2. io_uring(异步io)
    3. reactor网络模型
  • 数据结构
    1. 红黑树
    2. 跳表
    3. 哈希表
  • Makefile
  • 内存池
  • 线程池
  • 日志库

总结

本文对KV存储做了简单介绍,并对项目的架构进行了设计。在接下来的文章中,将逐步介绍网络层设计、KV引擎详细设计、利用内存池等进行存储性能提升和测试KV存储项目的性能。

参考链接:
https://github.com/0voice
https://blog.csdn.net/weixin_46258766/article/details/136228729

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值