聊聊PingCAP和HTAP

2023-12-26 20:40
文章标签 聊聊 htap pingcap

本文主要是介绍聊聊PingCAP和HTAP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

f51ef66c72d90758895f7bc702dc4390.png

图片来源:pixabay

前几天PingCAP高达2.7亿美金的融资突破了数据库领域融资额记录,刷遍朋友圈,让数据库界创业的朋友们又激动又眼馋。刘奇和东旭都是我前同事(虽然在同事期间压根没见过,都是后来再聊的),我又是从2003年开始做数据库的,PingCAP的成功真是给我们立了一个好榜样,值得好好学习。

我的理解,PingCAP的成功主要是因为几件事。一是作为开源的Spanner,有Google的理论实践基础,足够创新,起点就比较高;二是团队能力强,这么复杂的系统还真就做出来了,当然把Spanner TrueTime这样的复杂玩意砍掉了;三是因为开源,国内一大批互联网头部企业都用了,虽然这些企业估计都是白嫖的,应用规模可能也不大,另外硅谷都有用户,这样用户基数和国际化视野就出来了;四是成功开拓海外云上市场,在AWS、GCP上搞下来一批大客户,这气象就跟如日中天的Snowflake和MongoDB Atlas一个level了。以上路径,简直可以作为所有开源基础软件类创业的模版。

当然以上纯粹我的个人马后炮,我也没跟刘奇或东旭深入沟通过这个话题。

我和东旭沟通比较多,有很多共同理念。比如我们都看好云上市场,都希望国内的公有云能够更快,能力更开放。都很喜欢Snowflake,都认同存算分离的架构。不过存算分离上,似乎我更激进,东旭更注重本地存储。其实没本质区别,至少还是本地存储做为缓存的。

我想重点聊聊的是对HTAP的看法。

HTAP是PingCAP近两年一直提倡的概念,意思是用一个系统既支持OLTP,又支持OLAP。HTAP的概念感觉开始有些影响力了,今年VLDB上,PingCAP和PingCAP曾经的老师Google还不约而同的都发表了论文讲HTAP。HTAP概念往前可以追溯到图灵奖得主Stonebraker在2005年发表的C-Store论文。你看讲这个概念的都是牛皮哄哄的名字啊。Stonebraker在C-Store里提出了糅合行存和列存两套存储引擎的HTAP路线,PingCAP TiDB也就是这么做的,更关键的一点是TiDB是在分布式架构下这么做,C-Store还是单机架构。(顺便说句题外话,C-Store后来没有取得特别大的成功,我觉得是没有抓住分布式这个大趋势)

个人观点,HTAP应该有比较大的市场,因为对数据库数据做分析查询的需求普遍存在。回想起2005年底,还没有正式入职网易,就被将来的丁老板喊去优化网易点卡数据库的统计查询,因为晚上跑不出来了。这就是一个数据库既做交易又做分析的案例,但是因为点卡用的Oracle数据库不是HTAP设计,虽然OLTP天下无敌,但跑分析查询就不够快。点卡的统计查询还是晚上跑的,如果需要在交易期间跑分析查询,还会影响到交易的性能。所以这一直是一个普遍的痛点问题。

在HTAP概念之前,一般有两种手段。一是读写分离,主库做OLTP,备库做OLAP;另一种是拉到专用于分析的Hadoop、Spark之类的大数据系统跑OLAP。这两种手段操作运维比较复杂,硬件成本也比较高,第二种方案还存在数据不实时的问题,因为大数据技术体系一直支持不了实时更新,也就最近才发展了一点这方面的技术。HTAP能够比较好的解决这些问题,所以应该是比较有价值的。

不过,当前的HTAP也存在两个局限。

一,是要分析的数据现在大量的并不是来自于交易数据库,比如日志数据的量通常比数据库数据量大得多,这个时候HTAP就没意义。

二,是面向分析的数据仓库维度模型和面向交易的范式模式是完全不同的两种模型。两种模型的不同是逻辑上的,行列存混合的HTAP技术是物理层面的,无法解决模型层面的问题。从我们的业务实践看,数据仓库的数据量和分析负载远大于对数据库的分析。

我的观点是,HTAP是一个好的概念,但还需要不同的技术手段,解决不同类型的HTAP场景。我们正在开发一个方案:

1. 基于Iceberg支持大数据的实时更新和事务性,且支持所有主流的分析引擎,解决面向分析的存储问题;

2. 基于网易NDC实现数据库到大数据体系的全自动秒级同步,解决OLTP和OLAP数据同步问题;

3. 基于网易易数,增强可视化建模等AutoETL技术,降低数据仓库建设的技术门槛的复杂度,弱化范式模式和维度模型不匹配问题;

4. 通过缓存、预计算等技术,提升分析查询性能,降低对数据仓库维度建模的需求。

这样的方案也是一种实现HTAP的思路,虽然远比TiDB这样一套系统就全自动实现HTAP复杂,解决的也没那么漂亮,但是应用范围可能更广。

如果要分析的数据来自交易数据库,并且也没有强的维度建模分析需求,那就用行列存混合一体化的HTAP数据库;如果要分析的数据不仅来自数据库,或维度建模分析需求强,那就可以参考我们的思路。

这篇关于聊聊PingCAP和HTAP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/540710

相关文章

聊聊说话的习惯

1 在日常生活中,每个人都有固定的说话习惯。心理学研究表明,通过一个人的说话习惯,也可以分析出他的性格特点。对于每一个人来讲,说话习惯已经融为他们生活中的一部分。在社交活动中,一些不良的说话习惯很可能会给他们带来麻烦。因此,了解说话习惯对心理活动的影响是十分有必要的。 2 具有顺畅的说话习惯的人,大多思路清晰、语速适中、用词准确并且声声人耳,是典型的顺畅型说话方式这种类型的人要么不说话,要么

聊聊分布式,再讨论分布式解决方案

前言 最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。 接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事

聊聊资源调度

资源调度 般分为两个阶段: 是实现物理资源的虚拟化(即资源的抽象)于当前机器的性能越来越好,硬件配置越来越高,直接用物理机跑业务比较浪费,所以将物理机分割成更小单位的虚拟机,这样可以显著提升机器的利用效率,在公司内部一般采用容器技术来隔离资源 是将资源虚拟化后进 步在时间和空间上实现更细粒度的编排 ,优化资源的使用。 1 .一些数据 如果公司的几万台机器都是物理机,那么资源的使用率稍低: CP

聊聊Spark中的宽依赖和窄依赖

开门见山,本文就针对一个点,谈谈Spark中的宽依赖和窄依赖,这是Spark计算引擎划分Stage的根源所在,遇到宽依赖,则划分为多个stage,针对每个Stage,提交一个TaskSet: 上图:一张网上的图: 基于此图,分析下这里为什么前面的流程都是窄依赖,而后面的却是宽依赖: 我们仔细看看,map和filter算子中,对于父RDD来说,一个分区内的数据,有且仅有一个子RDD的分区来

聊聊灰度发布

有没有在北京面试java的小伙伴,每家公司面试问的问题都不一样,昨天面试官问到了灰度发布,一脸懵,好像在哪儿听说过,毕竟我都没发布过,之前都是项目组长在干这些事儿,所以聊聊,了解一下 什么是灰度发布 全量发布:把旧服务kill掉,把新服务启动,这个过程就可以理解为全量发布 回滚周期长 如果我们更新完应用之后,我们做线上回归测试的时候发现有BUG,这个时候就要做回滚,过程就是把新服

聊聊随机测试和猴子测试

目录 随机测试的特点 1.不可预测性 2.缺乏针对性 3.自动化 4.资源密集型 猴子测试 随机测试 (Random Testing) 猴子测试 (Monkey Testing) 特点: 区别 1.控制程度 2.目标差异 3.实现方式 在我们测试的过程中,通常会使用到随机测试和猴子测试,其中随机测试侧重于人工测试,猴子测试侧重于借助工具执行命令进行测试。 随机测试

【聊聊经济社会】论阶级跨越

为什么要在市场中寻求自由,在市场中寻求洒脱,原因不胜其数,其中便有一条,现实生活中多是xx,可能社会属性本身就具备党同伐异,像是一股意志,平庸一切不平庸,中和一切特立独行,最终以达到一种变态的稳定. 消其意志,断其未来,耗其钱财 ,而我称之为阶级壁垒 阶级之所以难以跨越,主要也在于这三点 一:没有这样的志向,像那种羡慕有钱,或者羡慕有权,权当做梦。这样的志向,正常人只停留于羡慕的层次,而一旦受到丁

聊聊PC端页面适配

聊聊PC端页面适配  目也pc端有适配的需求:目前我们pc项目的设计稿尺寸是宽度1920,高度最小是1080。 适配目标: 1.在不同分辨率的电脑上,网页可以正常显示 2.放大或者缩小屏幕,网页可以正常显示 对于宽度的适配   对于宽度适配: 首先设置html,body{width:100%;overflow-x:hidden;} 然后我们可以把页面分解为背景层(

来聊聊我用go手写redis这件事

写在文章开头 网上有看过一些实现redis的项目,要么完全脱离go语言的理念,要么又完全去迎合c的实现理念,也不是说这些项目写的不好,只能说不符合笔者所认为的那种"平衡",于是整理了一段时间的设计稿,自己尝试着用go语言写了一版"有redis味道"的mini-redis。 截至目前,笔者已经完成了redis服务端和客户端交互的基本通信架构和实现基调,如下所示,可以看到笔者已经实现了ping

供应链劫持?聊聊什么是RepoJacking

介绍        近几个月来,对开源存储库的主要威胁就包括存储仓库劫持,通常称为RepoJacking。RepoJacking 是指恶意攻击者通过一定手段接管托管存储库的所有权或维护者的账户。通过获取对账户的访问权限,攻击者可以将恶意代码注入到使用对应仓库作为依赖项的项目中。 RepoJacking 如何攻击?        存储库攻击,也称为供应链攻击,通常利用 GitH