NewSQL分布式数据库发展策略讨论

NewSQL分布式数据库发展策略讨论,第1张

作者 石默研

本文对新一代NewSQL分布式数据库发展策略中的普遍困扰进行讨论,包括云原生(Cloud Native)与本地部署(On Premise)、HTAP进展方向、分布式与单机需求等分布式数据库商业与技术发展中难以决策的问题。

1. 困扰

分布式NewSQL数据库近年来蓬勃兴起,其原因显而易见:切中了业务与数据量不断增长的用户对关系型数据库RDBMS需求,这在传统RDBMS到大数据的发展阶段中,有相当一段时间是空白。同时,随着互联网技术的不断发展与普及,用云计算模式满足IT需求似乎已经成为未来 社会 产业互联网发展的明确趋势,也就是说,有一种共识:不久的将来,绝大多数产业的IT服务是从公共的、行业的或者私有的、混合的云计算中心提供的。这一共识又带来了云原生(Cloud Native)概念与技术的兴起,而分布式NewSQL数据库自然也应该是云原生的,这决定了其相当多的产品设计决策应以符合这一趋势为原则。然而,在当今的现实中,满足业务与数据量不断增长的RDBMS需求的用户,与云原生的用户,除了互联网企业外,大多数情况下,并不重合,需要On-Premise部署的用户仍然占有很大比重,这就带来了第一个困扰:云原生(Cloud Native)与本地部署(On Premise)对产品发展要求的矛盾。

另一个困扰,是关于HTAP,即交易与分析混合负载。HTAP是当今非常火的一个概念与技术,在交易库上直接进行分析,而不再是将“数据从交易库搬下来,挪到另一个数据库中去”这样的繁琐过程。可以毫不夸张的说: 历史 上规模性企业IT复杂度的相当一部分,都来自于“搬数据”,这导致了数据采集、实时采集、全增量合并、数据传输、数据加载、数据建模、数据质量、数据标准、企业级元数据管理等繁杂多样的技术环节的产生,导致了企业数据分布、数据流向、数据模型、主数据、基础数据平台、ODS/数据仓库/数据集市、数据治理等复杂的数据架构设计优化领域,导致了由于多系统大规模数据搬迁而带来的如数据交换平台之类的复杂调度工程......。咋眼一看,感觉该企业的数据技术好厉害,相关各领域的技术产品好丰富,技术人员的相关技能也好受欢迎。但如果在交易库就能直接满足分析需求而不影响生产效能的话,这些复杂高级的技术环节不都成了“自己给自己造了一座山,还说自己爬的好辛苦”?然而,现实却是,问题并不这么简单,除了在交易库中进行分析会影响业务效能外,还有很多原因导致这一现象产生:交易库并不需要存储那么长的 历史 数据,而分析往往是需要建立在大量 历史 数据之上的;交易库的模型往往并不适合分析需求,多数情况下需要重要建模,如非常流行且价值不菲的各行业数仓主题模型;用于交易的OLTP数据库与用于分析的OLAP数据库,其技术体系完全不同;以及大型企业已固化的内部业务结构并没有留给交易/分析整合可实施的可行空间......等等。由于, 历史 积累的企业级数据体系相当复杂,HTAP的发明者迄今为止都没有系统表达完全替代数据分析需求、自顶而下重构企业数据体系的架构级策略,而是将产品重点定位在技术优化层面:在交易库上直接完成实时统计分析,满足高并发需求且不影响业务效能;或者是为实时分析统计/查询而建设的数据服务中间平台。然而,即使是暂时没有这种策略性的意向,在面向AP的产品具体研发中,又会发现明确的界限确实不好把握,随着一个个具体功能的不断完善,似乎假以时日,技术上也不是没有完全替代纯OLAP平台的可能性。那么,HTAP究竟如何定位呢?

再者就是规模化的分布式需求,与小规模的单机数据库需求(这里指逻辑上的单机)之间的矛盾:分布式数据库,自然而然是要应对规模化的数据管理需求的,长尾的小规模需求当然不应在产品设计考虑之列,同时,大炮轰苍蝇经常还打不好;然而,分布式NewSQL数据库又应该是云原生的,如果把云原生的业务含义理解为“全自助”,它应该以支持什么样的需求为主呢?现实看来,小规模长尾业务对云原生数据库的需求最起码应该是占据相当大的比重的。显而易见,如果是大规模的数据管理需求,即使是部署在云上,DBPaaS的“全自助”是其核心需求吗?这种规模化的业务,如果是云上的On-Premise又需要做出哪些方面的改变?从互联网与云计算发展的 历史 来看,“云自助”,其最核心的商业动机当然包括给用户侧的运维带来了方便,但更重要的可能是给云服务运营商应对海量长尾客户的安装与运维带来了极大的成本优势。这正如银行的小微及个人消费贷款都要走互联网线上模式,而重客、大客甚至中小企业信贷仍然是以线下为主的策略一样,本质是成本问题,而不是客户方便性问题。于是,矛盾显而易见:分布式是面向规模客户的,起码是中、大型客户,而云原生却有可能、最起码相当一段时间内是要以长尾客户为主要服务对象的。

以上困扰实质上,都涉及到了NewSQL分布式数据库的产品发展策略问题。

2. 讨论

问题是客观而又普遍的,但分析与应对策略往往包含主观因素:人们的一个决定与决策,很多情况下并不由严格推理而来,而是心中已经有一个答案,再来找理由支持它。这里的讨论或许也并不能例外。

首先,来看看Cloud Native与On Premise。云原生本应是数据库即服务,然而目前真正有规模化数据增长需求的NewSQL应用相当多的情况下却是付费On Premise与免费On Premise区别,很多互联网企业的应用也可能只是部署在云基础设施上而已,真正的云原生更多是一些实验性、尝试性的需求。但云原生数据库在公有云、行业云以及大型私有云上已经逐渐在形成一种意识上的共识,其商业前景不可限量。也就是说,未来的数字化转型进程中,产业互联网的数据库部署,会逐渐向云基础设施迁移,长在云上。它可能是公有云,也可能是行业云,也可能是私有云,它们都是被定义为云原生NewSQL数据库的市场范围。当然,肯定还会有相当一部分数据库长在云下,这也不用纠结,将其排除在云原生市场战略目标之外即可,就是说,不需要考虑这部分客户需求对产品规划的影响,因为前一部分的份额已经足够大了。这样看来,以云原生为目标进行产品规划的逻辑没有问题,不过,还是要明确一点:长在云上的数据库是不是一定符合我们对“云原生”的既有理解?这里认为,即使未来,在云上形成了产业互联网数据库市场的主体,需要“全自助”的数据库即服务可能也是以面向长尾客户最为迫切、必不可少并且是核心本质,而对中大型以上的需求,“全自助”的意义相对有限,同时比较而言商业模式的转变或者更关键些。那么,如果是以“长在云上”为市场目标,似乎可以将其定义为“广义的云原生”,同时,只要是“长在云上”,那么“云原生”概念中高d性、高可用、低成本、快速迭代、存算分离等技术优势也都能方便获得。而对“云原生”策略中“云原生”一词的理解不同,对产品规划决策的影响也应该有所不同:一是目前被认为是On Premise的客户需求,或许也就是未来“云原生”主体市场的需求;二是NewSQL数据库关于云原生服务的产品策划,对用户侧“自助”水平的决策或许可以更灵活实用。高水平自助确实可以减轻客户对IT的依赖程度,但这里认为,云原生与用户自行在云上购买资源进行On-Premise部署相比,最关键的价值在于商业模式的改变,能自助多少,不一定是最重要的,因为成为云服务商后,运营运维的工作只会更多,责任可能会更大,甚至有时连IaaS的运维也需要PaaS服务商兜底。但从一个个客户的本地服务,变成集中化云服务,就已经是本质性的模式转变了。总之,需要就事论事,回到原点,仔细分析后决策,而不是用概念教条的判断,因为概念本身的定义并不见得准确对应实际的业务需求。

再来看看HTAP,对这个问题,正如在其它文章中表达过的一样,本文的观点较为明确。一是随着计算能力与架构的升级,从技术上讲,AP与TP的界限会越来越模糊;另外特别是在云原生的新世界里,数据库的这一特性又犹为重要,因为云原生的重要作用之一就是要让客户尽量摆脱对IT运维的依赖,将越来越多的精力集中到自己的业务发展上来;同时端到端的能力提升对云原生商业模式的贯彻也至关重要(需要仔细分析下目前DBPaaS的技术要求是否完全符合这一原点的、本质性的动力),过去与纯OLAP数据库的优势比较纠结在这里也可以得到正面支持;再者,既然架构上已经走向了AP,就很难做到在产品规划上时刻厘清纯AP与混合负载的需求后,再将前者排除在外。于是,以“混合负载满足部分AP需求”应该是由于投入与阶段性市场策略导致的阶段性产品规划,而长远来讲,以一套技术架构满足大多数需求,应该是云原生NewSQL数据库的追求。

接下来,就是关于规模化分布式与小规模单机需求的矛盾了。现在看来,经过上面的讨论,这一点已经不是什么问题了:因为“长在云上”、从分散服务向集中服务的商业模式转变就是指广义的云原生,而不一定要以小微的、迫切需要全自助的长尾为主流,那么,云原生NewSQL数据库仍然应以规模化分布式为其主体的需求方向,而小规模单机则暂时可以不做为重点来考虑。

最后指出一点,希望也能引发进一步的思考:我们所批判的主机,也声称自己是分布式架构,暂且不论其是否客观,但在现实中主机需要被替代的核心问题并不是有没有分布式,而是:一、扩展不灵活带来成本问题:“我只需要扩展一个节点,你却让我再买一台主机”;二、不自主可控;三、往往是软硬件结合的设计策略,包括内存、网络、存储与IO上的软硬融合设计,而这一点,是否需要云原生数据库从广义的定义出发进行学习参考,也是需要进一步讨论的。

应该说,现在是国产分布式数据库发展的利好时期。在讨论发展前景前,首先要先看看分布式数据库的发展方向。

大家把传统关系型数据库称作oldSQL,给人感觉要被淘汰似的。但其实数据量不是很大或者事务处理的场景夏,关系型数据库的还是占优的。

关系型数据库的主要问题在于:

性能瓶颈,

单一模型(关系模型),只适合OLTP

应对业务的灵活性不够,

d性扩充能力不够,

两地三中心和双活等问题上不足。

随着互联网和手机的飞速发展,无论从用户规模、使用频率、还是场景多样性都使得这些问题浮出水面。其实Oracle在92年就开始尝试转向分布式,还当时引起了业界的巨大争论,最后失败。更何况过去CPU、内存、存储、带宽的高成本导致分布式数据库的性价比并不高,只能停留在学术阶段,限制了分布式的发展。

新分布式数据库首先是要避免和传统关系型数据库的竞争,这是明智的选择,能够轻装上阵。因此从几个方面入手,应对海量数据处理、分析、缓存、流式处理、开发模式等等。相对应列式,KV,Document等多种存储数据结构。

所有这些都被称为NoSQL数据库,放弃ACID和事务能力还换取性能。然而,NoSQL又收到了大量的批评反对意见,主要是说把数据库应该处理的问题交还给了开发是种发展的倒退。这些问题包括,索引、版本、SQL支持、事务支持等等。市场上超过90%的开发员都需要SQL,而且SQL也是非常有效和成熟。于是大家无论底层是什么存储结构又开始支持SQL,形成了NewSQL。

这里插一句题外话,在硅谷已经不再用SQL、NoSQL、NewSQL来划分数据库了。理由很简单,SQL是一种语言,从来没有SQL数据库的说法,自然也不应该有NoSQL数据库的说法。NewSQL数据库就更不合理,用的SQL并非什么“New“的新东西。所以专业上用关系型和非关系型数据库来划分,分布式数据库主要都是非关系型数据库。

回过头来看国内分布式数据库市场需求,中小企业不满足Mysql的性能,分库分表又很难搞,也不彻底;大型企业被Oracle等垄断支付高额成本,而且又不解决实际碰到的瓶颈问题。因此,用户都在寻找新的解决方案。小型用户、云计算的用户、大型企业都需要对应的分布式数据库产品。

再加上国产自主和去IOE浪潮,更加推动了国产分布式数据库的发展利好。值得注意的是,数据库研发是个严肃的事情,没法短平快。

作者 石默研

在云计算基础设施IaaS服务中,“存”与“算”的分界是清晰的,客户会分别为“存”与“算”按需消费。不只是专门的存储服务如S3、对象存储、文件存储、NAS等,即使是在最基本的虚拟机服务ECS上,“存”也需要由消费者进行选择,而选择的对象是云盘,即位置对用户透明,不需要消费者关心是否在计算节点的本地:其实连计算节点本身位于何处也是无需关心,又何谈本地。随着云计算服务的持续发展,“存”与“算”的界限,无论是从消费模式上,还是从技术上,都呈现出越来越清晰的趋势。

而在PaaS层的数据库服务中,则出现两种情况。一种是“存”与“算”也由消费者分别选择并扩缩,而另一种则是购买服务时,“存”与“算”是固定捆绑的架构组合,可以定义大小,但无法相对独立地选择、部署与扩缩。

引发上述数据库服务不同消费模式的因素,实质上是在云中部署的数据库产品本身不同的技术架构,即“存”“算”分离,或“存”“算”一体。由于对单体数据库谈“存”与“算”的分离与一体,并没有多大意义,因此,主要是针对分布式数据库而言,其不同的特性带来了业界较为广泛的讨论。

那么,首先分析一下,在“存”“算”基础设施愈来愈独立清晰的趋势下,建立在其上的数据库服务“存”“算”一体现象从何来呢?不难发现,云平台上这样的数据库服务,大多都是基于“从非云环境中、应企业级On Premise需求产生与发展而来”的数据库产品。也就是说,其产品本初的设计理念就与“云”无关,只是后来为了寻求不同的商业模式而部署在云上而已;而大多数“存”“算”分离的数据库产品,其创始之初,就面向云环境进行设计。这里,顺便澄清一下现在极为流行的云原生概念,相当多的人混淆了云适配部署与云原生的概念,认为只要部署在云上,就是云原生了。其实云原生的概念与其字面意思极为直白契合,就是指在“云环境”中“原生”的,而不是从别的地方迁来的,即 “云原生”就是生长于云上的,而非云原生则是迁移到云上的 。这与要深入理解目前同样火热的NFT,就必须先正确理解“区块链原生”概念的道理是一样的。

相信现在,关于“云”的问题应该是比较清晰了:“存”“算”分离是云原生的架构,而“存”“算”一体则不是,这一点相信读者不会有太多的疑问。那么,接下来的问题是:“云原生”就一定好吗?面向企业级的需求,“存”“算”分离与“存”“算”一体孰优孰劣?

世界上本来就没有绝对的好与绝对的坏,“存”“算”一体架构的设计,也是在满足企业需求的过程中自然产生的,对分布式数据库而言,“存”“算”一体的设计,无论是对传统单体数据库的替代上,还是对采用业务单元化策略的局部性满足上,还是对基于已有成熟数据库体系以二次开发构建分库分表数据库产品的方便性上,都产生了积极的 历史 作用。在那种情况下,不去考虑“云”的趋势与设计需求,也是合理的。

然而,过去几十年的 历史 已经证明,计算机技术的发展是极为迅速的,无论是软件还是硬件,当然包括数据库技术同样如此。

首先,往远处看的话:从计算机科学发展的角度,在云计算大趋势的驱动下,“计算”与“存储”技术相对独立的发展道路已经越来越明显,越来越清晰。可以想见,未来“计算”力相关的技术、架构与产品必将会发展到比如今所有极为先进的状态;未来“存储”相关技术、架构与产品也必将会进展到一个无法完全预计的崭新阶段,同时越来越“智能”。并且从目前的形势看,这个未来并不会太久远,“存”“算”分离无疑是适合那个未来的各种可能的,因为它本身就是为此而原生的,“存”“算”一体在未来或许将变得无从谈起;而从国际上先进数据库技术发展的实际情况来看,绝大多数崭新的、最前沿的数据库相关技术与产品,都是云原生的,换句话说,都是采用“存”“算”分离的架构,这一点,几乎少有例外。

(或许可以猜测,把磁盘挂在本地这种现存商业计算机的架构,也是由企业/个体对计算机使用的商业模式驱动的,而不一定是技术驱动的必然结果)

其次,往近处看:对企业级现阶段数字化转型中,传统单体数据库替换的紧迫需求而言,大量的事实已经证明,云原生架构的数据库完全可以满足各种实际的业务转型需求:

例子还有很多.......

最后还有一点需要强调:对于那些 将“云”策略当成技术与业务核心发展战略 的企业来讲, 云原生架构 无论是面向现在与未来,自然是 最为适合 的;

或许可以这样说,“存”“算”一体的架构是现代分布式数据库技术进化过程中的一个重要过渡阶段,其 历史 作用不可否认,毋庸质疑;而不久的将来,分布式数据库架构向云原生快速发展普及的趋势将会越来越明显,步伐将会越来越加快......

世界潮流,浩浩荡荡;顺之者昌,逆之者亡,顺应 历史 的潮流与趋势的选择一般都是明智的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9995008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存