开发者社区> 问答> 正文

一种高性能存储引擎设计思路

前言

通常,非关系型数据库写性能相对关系数据库会高一些,比如kv,nosql,mq等等。其中一个重要原因是这些引擎不需要处理数据的详细数据类型和数据之间的约束,甚之事务也无需处理。

在业务系统中,为了提高写性能我们有时会前置增加mq挡住高并发写,然后定时或者异步处理队列的数据。 这种方式业务需要处理异步,以及数据没有持久化到数据库的读取操作。而这个过程比较抽象,基本无业务相关性。

现实生活中的一个场景

寄快递大家都很熟悉, 找个盒子或者袋子装上需要寄送的东西,然后贴上快递单,就可以寄出去了。当然快递员可能会询问邮寄的内容,甚之会打开查看,但是这样时效性就慢了。

我们这样假定:
1、快递员不拆包检查内容
2、快递员提供快递袋子和快递单
3、收货人检查快递内容,有问题退货
4、寄货人保证快递的东西是合法的

新的存储引擎思路

根据上面的例子,存储引擎的思路也就很清晰了:

1、存储引擎预先不检查数据内容
2、按照kv方式预先存储,然后返回存储成功
3、业务触发对存储数据进行拆包,比如将nosql转换为关系数据
4、也可以尝试存储引擎主动异步解包,异常信息作为数据的一部分
5、存储引擎只校验key主键的唯一性
6、事务处理暂不考虑

展开
收起
scofier 2017-04-12 14:06:41 4306 0
4 条回答
写回答
取消 提交回答
  • 最新回答:

    一般存储使用场景是读多于写,在写上的优化不能以牺牲读为代价。如果要提升写入速度,常见的做法是做拆分,多点写入的结构是可以扩展的。

    官方帮助文档地址:阿里云帮助中心

    更多参考: 阿里云官网(新用户需注册查看),可领上云红包

    2021-07-08 18:14:34
    赞同 展开评论 打赏
  • 一般存储使用场景是读多于写,在写上的优化不能以牺牲读为代价。如果要提升写入速度,常见的做法是做拆分,多点写入的结构是可以扩展的。

    2019-07-17 21:02:44
    赞同 展开评论 打赏
  • 这样读的性能岂不是会变慢,可以多参考下leveldb的实现。

    2019-07-17 21:02:44
    赞同 展开评论 打赏
  • 自己顶一个

    2019-07-17 21:02:44
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖宝华_开源分布式NewSQL数据库CockroachDB架构及最佳实践 立即下载
PostgresChina2018_汪洋_PG之高可用特性、工具及架构设计 立即下载
PostgresChina2018_胡森_TBase分布式架构以及OLAP性能优化 立即下载