通常,非关系型数据库写性能相对关系数据库会高一些,比如kv,nosql,mq等等。其中一个重要原因是这些引擎不需要处理数据的详细数据类型和数据之间的约束,甚之事务也无需处理。
在业务系统中,为了提高写性能我们有时会前置增加mq挡住高并发写,然后定时或者异步处理队列的数据。 这种方式业务需要处理异步,以及数据没有持久化到数据库的读取操作。而这个过程比较抽象,基本无业务相关性。
寄快递大家都很熟悉, 找个盒子或者袋子装上需要寄送的东西,然后贴上快递单,就可以寄出去了。当然快递员可能会询问邮寄的内容,甚之会打开查看,但是这样时效性就慢了。
我们这样假定:
1、快递员不拆包检查内容
2、快递员提供快递袋子和快递单
3、收货人检查快递内容,有问题退货
4、寄货人保证快递的东西是合法的
根据上面的例子,存储引擎的思路也就很清晰了:
1、存储引擎预先不检查数据内容
2、按照kv方式预先存储,然后返回存储成功
3、业务触发对存储数据进行拆包,比如将nosql转换为关系数据
4、也可以尝试存储引擎主动异步解包,异常信息作为数据的一部分
5、存储引擎只校验key主键的唯一性
6、事务处理暂不考虑
一般存储使用场景是读多于写,在写上的优化不能以牺牲读为代价。如果要提升写入速度,常见的做法是做拆分,多点写入的结构是可以扩展的。
官方帮助文档地址:阿里云帮助中心
更多参考: 阿里云官网(新用户需注册查看),可领上云红包
一般存储使用场景是读多于写,在写上的优化不能以牺牲读为代价。如果要提升写入速度,常见的做法是做拆分,多点写入的结构是可以扩展的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。