前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于数据库技术的发展思考

关于数据库技术的发展思考

作者头像
jeanron100
发布2020-05-27 14:45:12
4580
发布2020-05-27 14:45:12
举报

这是学习笔记的第 2232 篇文章

读完需要

9

分钟

速读仅需7分钟

现在对于数据库的需求越来越丰富,但是从本质来说,无非就是读和写,如果把这个需求做一些引申,以稳定,高效,安全为基准,会发现有几个地方其实是比较困难的。

1)写需求实现水平扩展相对是比较容易的,如果是日志流水型数据,那么对于insert类的写需求是很容易实现的,如果要考虑略微复杂的场景,多活的数据写入,对于insert类的日志流水型数据依然不是问题,引入类似分布式ID的方案就是一个引子。

2)涉及到状态数据的写扩展就很难了,这类需求通常和select+insert/update类操作组合绑定较多,这里业务需求不复杂的情况,有个分水岭,那就是是否需要引入事务,如果引入,事务模型的考量,分布式事务的支持粒度就是一个重点,如果不引入事务,做事务降维,那么这个复杂度相对会低一些,尽可能考虑的就是幂等的逻辑,幂等的基础需求就是基于主键的模式,在多活的环境中如何高效支持就是一个更精细的事情了,这里所说的精细主要表达的就是延迟,在毫秒及更低的环境中,高并发中对于数据一致性的影响会被放大,也能够影射出很多系统中设计简陋的一面,如果保证数据的一致性,抛开链路的消耗,从根上来说,还是得靠主键的基础依赖,也就意味着简单的数据模型可以做很多的事情。

3)对于还有一类写是跨数据集的写,可以理解为状态和日志数据的分离,比如一个用户的账户信息,状态信息是唯一的1条记录,但是围绕这1条状态信息可以上行下钻出一连串的变更历史,也就是所谓的流水日志,这是从数据模型中比较常见的操作模式,这列需求本质上也可以做拆分,即流水的可扩展写和状态写。

4)强依赖于事务写的业务,基本得和一些关键状态信息有关,大多是和钱相关,比如账户信息等。从业务线的数据流链路中来整体考虑,可能会涉及异构或者多端环境,即需要在多个数据源中寻求一种平衡,难点就是事务回滚的一致性,有分阶段提交,事务补偿机制等,这块着实是个硬骨头,这里也涉及一种折中的方式,那就是有业务层的数据基准,基准数据有相关数据/日志支撑,对于临界状态处理尤其有用,数据库中的很多细节也是这么玩的。

5)现在对数据库的一些需求发生了变化,那就是不光希望数据写得快,可扩展,还应该支持海量数据存储,并且查得快,看似有些矛盾的方案,行业里多见是HTAP方案,我做事情比较喜欢先建立边界,能做什么不能做什么,而不希望交给业务的东西就是一个大杂烩,从这一点来看,我是更希望业务需求对自己的数据模型有一个基本的理解,能够在一些快速增长中,对于数据库的存储和响应有一定的灵活空间,这里可以提供的是支撑能力,而不是眼皮底下的可适配方案,从这一点来说,我比较喜欢冷热数据分离的模式+数据引擎的组合。

6)对于数据查询方向,出了硬通货主键之外,二级索引是一块很大的发展空间,因为主键代表的含义在很多业务场景中是比较单薄的,比如一个表有10个字段,可能id字段仅仅代表的是一个自增的基础属性,更多的业务含义需要从二级索引中挖掘,这里就牵扯出两个比较有意思的问题,为了查询更快,需要更多的索引,为了写入更快,更多的索引会对写入产生副作用,当然没有所谓的银弹,只能是保持一种平衡,在平衡的基调之上,如何建立合适的索引其实是摆在DBA和开发人员面前的一个新的话题,DBA在早期不是很能理解业务特点,所以无法给出有效的建议,开发对于索引的而理解有限,认为有索引就是性能的代名词,所以这就需要达到更高一层的平衡。

7)有人说数据库发展中有所谓的1.0,2.0时代等,不管怎么定义,1.0时代都是过去,参数优化和系统层面的优化空间相对会比较有限了,而对于业务优化的模式其实就是SQL优化,而SQL优化几乎都离不开索引的陪伴,好的,索引的问题是我逐步引出的一个完全摆脱步调的话题,论调始终不变,那就是建立什么样的索引是最匹配,最高效,代价最低的。其实从DBA的角度来说,索引也是不友好的,索引对业务不透明,但是业务逻辑的性能又和索引紧密相连,从存储上索引也是相对独立的存在,从底层来说也需要额外的维护管理,包括碎片管理等。这里我算是抛出一个问题,也是我需要埋头需要做点东西的方向。

8)上面更多提到的还是基于关系型的一些观点,但是把这个视角放开,其实关系型模式这是数据模型中的一个重要分支,还有更多的数据模型,比如基于图的数据模型,半结构化,非结构化的数据模型的解决方案,这些在现在数据业务高速发展的过程中,可以提供更多的思路和更有效的方案。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档