【视点】混合型事务处理
在线事务处理一般可分为在线交易事务处理(OLTP)和在线分析事务处理(OLAP),也有叫联机交易处理和联机分析处理。而混合型事务处理(HTAP)则融合了上述两种事务类型,即一个系统同时很好的满足OLTP和OLAP的需求。 早在2014年Gartner的报告就明确指出了:“混合型交易/分析事务处理(HTAP)将帮助应用提升场景识别能力,增强业务敏捷性。这将引发由内存计算技术催生的现有架构和IT科技的剧变”。 电子商务领域就有很多混合型事务处理的例子,比如信用卡消费,既要计算当前消费,又要按T+1统计剩余额度;个性化引擎,既要应对当下行为,又要根据偏差调整推荐算法;物联网事件处理器等等。
当然作为这样一套系统,首先它需要满足一些非功能的需求,包括每秒10万次以上的并发处理能力;可以与应用同步线性扩展;零网络延时、零数据丢失。在功能性上,它需要支持纯Java技术栈的业务逻辑以及可以接受来自流处理框架([【观察】常用的流式框架(一)-- Storm与Samza](https://yq.aliyun.com/articles/750868?spm=a2c4e.11155435.0.0.409a33129XlKTs);[【观察】常用的流式框架(二)-- Spark与Flink](https://yq.aliyun.com/articles/750869?spm=a2c4e.11155435.0.0.409a33129XlKTs))的消息,并能对其中的状态信息进行快速识别。
上图的模型是最早的OLTP与OLAP并存模型,没有任何的分离处理,直接面临的问题就是中间关系型数据库在承载多分析模块读取数据的同时,源应用程序的写操作会处理不过来。于是企业的数据架构又会在应用与结构化数据库之间加入一层操作性数据库(ODS)。
ODS确实很好的分解了OLTP与OLAP的资源分配,但是首先会带来数据冗余,其次由于ETL转置需要时间,因此数据仓库中的数据距离实时性一定会有不小的差距,进而就导致报表数据的不及时。并且ETL任意环节的故障都会导致数据仓库的失真。 随着内存计算技术的发展,并且借助多版本并发控制(MVCC)能力,HTAP已经可以将OLTP和OLAP事务放在一个数据库上处理了。
这类数据库市面上的选择还不少,尤以VoltDB,NuoDB和MemSQL为首,程序内置MVCC功能可以对频繁更新的数据记录版本号,以建立缓存序列供OLAP差异化调取。
随着微服务在企业中的普及,不同的微服务可以挂接不同的HTAP数据库以满足多并发更新与读取的需求。当然如果目标微服务没有很大的并发更新量的情况下,多个微服务共享一个HTAP,根据Schema分库分表也不失为企业混合事务处理的有效解决办法。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
浅谈企业数据目录
最近又遇到一个数据相关的咨询项目,为一家企业整理数据服务目录,今天就来讨论下企业数据目录架构和它的部署方式。 企业数据目录(EDC)旨在帮助企业与IT人员通过统一的元数据视图(包括技术元数据、业务元数据、用户释义、关联关系、数据质量和用途)来释放企业数据资产的最大能量。 我们从下至上来看下EDC的一个架构,最下面是存储层,在这一层,EDC包含了传统的结构化数据库用来存储EDC的管理员数据、可视化配置数据、数据域的规则,runtime统计数据等等,其中一部分结构化数据来自于各接入应用的元数据,称为模型库服务(Model Repository Service,MRS)使所有接入的应用可以在一个关系型数据库中进行协同;另一部分结构化数据称为数据剖析仓库(Profiling Warehouse,PWH),用来存储数据剖析信息,例如剖析结果和计分卡结果。在存储层EDC也可以接入各种非结构化数据,例如Hadoop分布式存储系统以及其上的HBASE等开源产品。 往上一层,对于接入的结构化数据的数据源,有剖析引擎(Data Profiling Engine)对数据集的唯一性,特征值频率以及数据集所属的...
- 下一篇
【实战】持续集成与持续交付
今天我们讨论CI/CD,即持续集成(Continuous Integration)与持续部署(Continuous Deployment),这对于软件交付工程师或程序员来说非常重要。 首先我们说CI-持续集成,这是为保证不同功能的开发人员所贡献的代码保持同步,简单的说就是通过自动测试、验证与反馈的方式实现程序员间的协同。比如说开发团队将自己的代码库都放在Github上,然后每个开发人员都Fork了一个副本在本地做开发测试,最终我们希望将每个开发人员的代码段集成到主线(Mainline)中,在这之前我们需要创建测试案例保证程序不仅可以单步运行,也可以按照主线的逻辑运行不至于影响其他模块。在持续集成的场景中,开发人员可以不断拉测试案例来验证程序运行正常,与主线兼容良好,不会在发布时有巨大改动。 再说持续部署,他将持续集成所编译的程序部署到环境中,既然是持续部署,就可以是某个特定项目的多个场景,比如说临时环境(Staging Environment)、测试环境(Testing Environment)、验收环境(Acceptance Environment)最后是生产环境(Productio...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主