几类历史数据沉淀的方案过渡

从数据层面来理解,数据可以分为几个维度,比如流水型数据,状态型数据库,配置型数据。流水型数据的依赖最低,基本就是时间维度的扩展,所以从数据的安全角度来说,如果丢数据对业务的影响还是有限的,配置型数据是数据字典级别的,影响范围更是小很多。关键的就是状态型数据,这是非常核心的,因为只是标识状态的变化,如果换做一个场景,比如是金额,那这个维度的影响是很大的。

从数据架构的角度来说,尽可能希望把一些状态型数据的变化,通过流水数据的方式来做一个历史沉淀,我们暂且成为历史数据吧。

比如 更新状态数据,余额为200

Account_id, balance,effective_date, expire_date, status

100 100 20171004010100 20181104010200 1

可以改造为:

Account_id, balance,effective_date, expire_date, status

100 100 20171004010100 20171104010200 0 -->update语句

100 200 20171104010200 20181104010200 1 -->insert语句

所以显而易见的,一个update被改造为了两条语句,从数据生命周期来看,确实有了一定的保障,这也是我们需要和开发同学强调的一种设计方式。

然后我们看一下这种历史数据的处理方案和想法。

一般来说,从设计的角度,尽可能是希望这样来处理历史数据的变化,即从程序层面来解读这个数据的变化情况,可以包装在一个事务里,也可以根据需求来拆分成为异步的方式。当然这种方式是一种看起来很自然的方式,其实也是一种相对来说最理想的方式,从我刻意来画的图来看,是强应用型的。

如果换一个角度来说,对于应用来说,历史数据的生成对于他们是透明的,即他们不需要刻意关注这个逻辑,那么这个逻辑就会下沉到数据库层面,所以我画的图中,HIST的部分就会放大,这个逻辑如果在数据库层面来处理,一种自然的方式就是存储过程,当然会对应有一系列的逻辑处理,比如一类业务需要这些历史数据的生成方式,其他类似的业务也是这种思路,那么就需要有一种更加通用的方式,其实从数据库层面来说,这种算是重系统层面的实现,因为数据库层面如果绑定了这个逻辑,那么如果来做扩展就是一个难题了。

还有一种方式,可能折衷一些,即程序可能下沉到数据处理层,数据库处理层不用刻意去关系数据的意义,数据层可以做数据的写入和流转,可以通过程序层来包装事务来生成历史数据或者是透明的通过OLTP数据生成历史数据,但是关键的一点是,历史数据和OLTP的数据是放在一起的,当然这个表的数据会放大,所以我们需要做一种偏离线的数据归档,比如保留近7天的数据即可。而历史数据可能保留有几个月甚至几年,这样一来历史的数据倒是可以实现分布式存储,可能实际的意义和成本需要做平衡。

当然如果你有其他好的建议,也欢迎提出。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2018-04-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

NoSQL再次败北——坚持使用SQL的原因

【编者按】NoSQL拥有可扩展性和超高吞吐量的能力,然而这却没有发挥实际的优势,同时它不具备关系数据库所有的智能操作,虽然具有无模式存储的优势,却无形中增加了代...

206100
来自专栏知晓程序

微信新出的「功能直达」效果如何?我们采访了两家头部小程序

21950
来自专栏测试驿栈

<转>性能测试浅谈

本文主要针对WEB系统的性能测试。不涉及具体的执行操作,只是本人对性能测试的一点理解和认识。

24250
来自专栏云计算D1net

为企业内部部署的应用程序创建一个云开发环境

借助来自许多成熟的公有云服务的精心策划部署策略的内置工具,企业组织机构的IT团队可以——而且也应该将他们的测试/开发迁移到公共云服务了。 即使您企业在短期内不会...

29140
来自专栏WeTest质量开放平台团队的专栏

【腾讯内部工具分享】U3D资源优化工具

本工具依据官方提供的U3D资源的设计建议,对手游的安卓客户端(apk)进行静态扫描、分析,并生成资源优化报告,最终以Web形式呈现给开发者。本工具的整体设计思路...

18920
来自专栏云计算D1net

破译混合云架构的关键点:云数据传输

混合云架构融合了私有云和公有云,如何部署混合云已经成为IT圈里面最热门的话题之一。大部分数据中心团队都发现这种架构在技术上具有极大的挑战,这些挑战主要源于各种工...

43880
来自专栏腾讯大数据的专栏

腾讯云分析支持微信告警啦!

在过去的一个月里,微信公众平台开放了图文分析等数据统计功能。眼尖的人也许早就发现,在微信公众平台的图文分析右上角,出现了"数据由 腾讯云分析 提供"字样. 通过...

28090
来自专栏软件测试经验与教训

软件测试从零开始

42090
来自专栏Laoqi's Linux运维专列

饿了么的架构设计及演进之路(转)

21660
来自专栏无原型不设计

更巧妙的表单设计与登陆访问

以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具 你觉得一个普通人每天会使用多少次登陆功能呢?数据显示至少1...

32740

扫码关注云+社区

领取腾讯云代金券