作者 石默研
本文对新一代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上的软硬融合设计,而这一点,是否需要云原生数据库从广义的定义出发进行学习参考,也是需要进一步讨论的。
特点:数据独立性与位置透明性 数据独立性是数据库方法追求的主要目标之一,分布透明性指用户不必关心数据的逻辑分区,不必关心数据物理位置分布的细节,有了分布透明性用户的应用程序书写起来就如同数据没有分布一样。当数据从一个场地移到另一个场地时不必改写应用程序。
目的:集中和节点自治相结合 在分布式数据库中,局部共享即在局部数据库中存储局部场地上各用户的共享数据这些数据是本场地用户常用的。全局共享即在分布式数据库的各个场地也存储可供网中其它场地的用户共享的数据,支持系统中的全局应用。
分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。
数据库与hadoop与分布式文件系统的区别和联系
1 用向外扩展代替向上扩展
扩展商用关系型数据库的代价是非常昂贵的。它们的设计更容易向上扩展。要运行一个更大
的数据库,就需要买一个更大的机器。事实上,往往会看到服务器厂商在市场上将其昂贵的高端机
标称为“数据库级的服务器”。不过有时可能需要处理更大的数据集,却找不到一个足够大的机器。
更重要的是,高端的机器对于许多应用并不经济。例如,性能4倍于标准PC的机器,其成本将大大
超过将同样的4台PC放在一个集群中。Hadoop的设计就是为了能够在商用PC集群上实现向外扩展
的架构。添加更多的资源,对于Hadoop集群就是增加更多的机器。一个Hadoop集群的标配是十至
数百台计算机。事实上,如果不是为了开发目的,没有理由在单个服务器上运行Hadoop。
2 用键/值对代替关系表
关系数据库的一个基本原则是让数据按某种模式存放在具有关系型数据结构的表中。虽然关
系模型具有大量形式化的属性,但是许多当前的应用所处理的数据类型并不能很好地适合这个模
型。文本、和XML文件是最典型的例子。此外,大型数据集往往是非结构化或半结构化的。
Hadoop使用键/值对作为基本数据单元,可足够灵活地处理较少结构化的数据类型。在hadoop中,
数据的来源可以有任何形式,但最终会转化为键/值对以供处理。
3 用函数式编程(MapReduce)代替声明式查询(SQL )
SQL 从根本上说是一个高级声明式语言。查询数据的手段是,声明想要的查询结果并让数据库引擎
判定如何获取数据。在MapReduce中,实际的数据处理步骤是由你指定的,它很类似于SQL
引擎的一个执行计划。SQL 使用查询语句,而MapReduce则使用脚本和代码。利用MapReduce可
以用比SQL 查询更为一般化的数据处理方式。例如,你可以建立复杂的数据统计模型,或者改变
图像数据的格式。而SQL 就不能很好地适应这些任务。
4
分布式文件系统(dfs)和分布式数据库都支持存入,取出和删除。但是分布式文件系统比较暴力,
可以当做key/value的存取。分布式数据库涉及精炼的数据,传统的分布式关系型数据库会定义数据元
组的schema,存入取出删除的粒度较小。
分布式文件系统现在比较出名的有GFS(未开源),HDFS(Hadoop distributed file system)。
分布式数据库现在出名的有Hbase,oceanbase。其中Hbase是基于HDFS,而oceanbase是自己内部
实现的分布式文件系统,在此也可以说分布式数据库以分布式文件系统做基础存储。
共享文件与分布式文件系统的区别分布式文件系统(Distributed File System,DFS)
如果局域网中有多台服务器,并且共享文件夹也分布在不同的服务器上,这就不利于管理员的管理和用户的访问。而使用分布式文件系统,系统管理员就可以把不同服务器上的共享文件夹组织在一起,构建成一个目录树。这在用户看来,所有共享文件仅存储在一个地点,只需访问一个共享的DFS根目录,就能够访问分布在网络上的文件或文件夹,而不必知道这些文件的实际物理位置。
ftp server和分布式文件系统的区别换个思路,使用mount --bind把目录加载过来就可以了 先将数据盘挂载 mount /dev/sdb1 /mnt/d 在ftp目录下建一个文件夹data mount --bind /mnt/d data
FTP server和分布式文件系统的区别, 分布式文件系统和分布式数据库有什么不同分布式文件系统(dfs)和分布式数据库都支持存入,取出和删除。但是分布式文件系统比较暴力,可以当做key/value的存取。分布式数据库涉及精炼的数据,传统的分布式关系型数据库会定义数据元组的schema,存入取出删除的粒度较小。
分布式文件系统现在比较出名的有GFS(未开源),HDFS(Hadoop distributed file system)。分布式数据库现在出名的有Hbase,oceanbase。其中Hbase是基于HDFS,而oceanbase是自己内部实现的分布式文件系统,在此也可以说分布式数据库以分布式文件系统做基础存储。
hadoop是分布式文件系统吗是的
Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。要理解HDFS的内部工作原理,首先要理解什么是分布式文件系统。
1分布式文件系统
多台计算机联网协同工作(有时也称为一个集群)就像单台系统一样解决某种问题,这样的系统我们称之为分布式系统。
分布式文件系统是分布式系统的一个子集,它们解决的问题就是数据存储。换句话说,它们是横跨在多台计算机上的存储系统。存储在分布式文件系统上的数据自动分布在不同的节点上。
分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理来自网络和其它地方的超大规模数据提供所需的扩展能力。
2分离元数据和数据:NameNode和DataNode
存储到文件系统中的每个文件都有相关联的元数据。元数据包括了文件名、i节点(inode)数、数据块位置等,而数据则是文件的实际内容。
在传统的文件系统里,因为文件系统不会跨越多台机器,元数据和数据存储在同一台机器上。
为了构建一个分布式文件系统,让客户端在这种系统中使用简单,并且不需要知道其他客户端的活动,那么元数据需要在客户端以外维护。HDFS的设计理念是拿出一台或多台机器来保存元数据,并让剩下的机器来保存文件的内容。
NameNode和DataNode是HDFS的两个主要组件。其中,元数据存储在NameNode上,而数据存储在DataNode的集群上。NameNode不仅要管理存储在HDFS上内容的元数据,而且要记录一些事情,比如哪些节点是集群的一部分,某个文件有几份副本等。它还要决定当集群的节点宕机或者数据副本丢失的时候系统需要做什么。
存储在HDFS上的每份数据片有多份副本(replica)保存在不同的服务器上。在本质上,NameNode是HDFS的Master(主服务器),DataNode是Slave(从服务器)。
文件系统与数据库系统的区别和联系
其区别在于:
(1)
文件系统用文件将数据长期保存在外存上,数
据库系统用数据库统一存储数据。
(2)
文件系统中的程序和数据有一
定的联系,数据库系统中的程序和数据分离。
(3)
文件系统用 *** 作系
统中的存取方法对数据进行管理,数据库系统用
DBMS
统一管理和控
制数据。
(4)
文件系统实现以文件为单位的数据共享,数据库系统实
现以记录和字段为单位的数据共享。
其联系在于:
(1)
均为数据组织的管理技术。
(2)
均由数据管理软
件管理数据,程序与数据之间用存取方法进行转换。
(3)
数据库系统
是在文件系统的基础上发展而来的。
数据库系统和文件系统的区别与联系文件系统和数据库系统之间的区别:
(1) 文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;
(2) 文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离;
(3) 文件系统用 *** 作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据;
(4) 文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
文件系统和数据库系统之间的联系:
(1) 均为数据组织的管理技术;
(2) 均由数据管理软件管理数据,程序与数据之间用存取方法进行转换;
(3) 数据库系统是在文件系统的基础上发展而来的。
什么是Hadoop分布式文件系统分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。
Hadoop是Apache软件基金会所研发的开放源码并行运算编程工具和分散式档案系统,与MapReduce和Google档案系统的概念类似。
HDFS(Hadoop 分布式文件系统)是其中的一部分。
大约10年前,我加入了Amazon Web Services,在那里我第一次看到了在分布式系统中进行权衡的重要性。在大学里,我已经了解了一致性和可用性之间的权衡(CAP定理),但实际上,频谱要比这深得多。任何设计决策都可能涉及延迟,并发性,可伸缩性,耐用性,可维护性,功能性, *** 作简便性以及系统其他方面之间的权衡,而这些权衡会对应用程序的功能和用户体验产生有意义的影响,并且即使是业务本身的有效性。
也许在权衡需求最明显的分布式系统中最具挑战性的问题是构建分布式数据库。当应用程序开始需要可以在许多服务器上扩展的数据库时,数据库开发人员开始做出极端的权衡。为了在许多节点上实现可伸缩性,分布式键值存储(NoSQL)抛弃了传统关系数据库管理系统(RDBMS)提供的丰富功能集,包括SQL,联接,外键和ACID保证。由于每个人都想要可伸缩性,因此RDBMS消失只是时间问题,对吗?实际上,关系数据库继续主导着数据库领域。这就是为什么:
在分布式系统(或任何系统)中进行权衡时,要考虑的最重要方面是开发成本。
数据库软件所做出的权衡将对应用程序的开发成本产生重大影响。在高级应用程序中处理需要可用性,可靠性和性能的数据是一个固有地需要解决的问题。成功解决每个小问题所需的工时数量可能很大。幸运的是,数据库可以解决许多这些子问题,但是数据库开发人员也面临成本问题。实际上,要使数据库足以满足大多数应用程序的功能,保证和性能,就需要数十年的时间。那就是建立关系数据库如PostgreSQL和MySQL的地方。
在Citus Data,我们从不同角度解决了数据库可伸缩性的需求。我和我的团队在过去的几年中花费了很多时间将已建立的RDBMS转换为分布式数据库,而又不会失去其强大功能或从基础项目中分叉。通过这样做,我们发现RDBMS是构建分布式数据库的理想基础。
使RDBMS对开发应用程序(尤其是开源RDBMS,尤其是云RDBMS)如此吸引人的原因在于,您可以有效地利用数十年来对RDBMS进行的工程投资,并利用这些RDBMS功能。您的应用,降低了开发成本。
RDBMS为您提供:
这些功能几乎对任何非平凡的应用都很重要,但是要花很长时间才能开发。另一方面,某些应用程序的工作量对于单台计算机来说太过苛刻,因此需要水平可伸缩性。
许多新的分布式数据库正在开发中,并且正在分布式键值存储(“ NewSQL”)之上实现RDBMS功能,例如SQL。尽管这些较新的数据库可以使用多台计算机的资源,但是在SQL支持,查询性能,并发性,索引,外键,事务,存储过程等方面,它们仍远未建立在关系数据库系统上。您遇到许多要在应用程序中解决的复杂问题。
许多大型互联网公司采用的替代方法是RDBMS的手动,应用程序层分片(通常是PostgreSQL或MySQL)。手动分片意味着有许多RDBMS节点,并且应用程序会根据某种条件(例如,用户ID)决定连接到哪个节点。应用程序本身负责如何处理数据放置,架构更改,查询多个节点,复制表等,因此,如果执行手动分片,最终将在应用程序中实现自己的分布式数据库,这可能甚至更多。昂贵。
幸运的是,有一种方法可以解决开发成本难题。
PostgreSQL已有数十年的发展 历史 ,其令人难以置信的重点是代码质量,模块化和可扩展性。这种可扩展性提供了一个独特的机会:无需分叉就可以将PostgreSQL转换为分布式数据库。这就是我们构建Citus的方式。
大约5年前,当我加入一家名为Citus Data的初创公司时,我为在竞争激烈的市场中建立高级分布式数据库而无任何现有基础架构,品牌知名度,进入市场,资本或大量工程师的挑战感到沮丧 。 仅开发成本就似乎是无法克服的。 但是,就像应用程序开发人员利用PostgreSQL来构建复杂的应用程序一样,我们利用PostgreSQL来构建……分布式PostgreSQL。
我们创建了Citus,这是开源的PostgreSQL扩展,而不是从头开始创建分布式数据库,它以提供水平扩展的方式透明地分发表和查询,但是应用程序开发人员需要具备所有PostgreSQL功能才能成功。
通过使用在计划查询时Postgres调用的内部挂钩,我们能够将分布式表的概念添加到Postgres。
分布式表的分片存储在具有所有现有功能的常规PostgreSQL节点中,Citus发送常规SQL命令以查询分片,然后合并结果。 我们还添加了参考表的概念,该参考表可在所有节点上复制,因此可以通过任何列与分布式表连接。 通过进一步增加对分布式事务,查询路由,分布式子查询和CTE,序列,更新等的支持,我们达到了最先进的PostgreSQL功能可以使用的规模,但现在已经可以大规模使用。
Citus相对来说还很年轻,但是已经建立在PostgreSQL之上,已经成为世界上最先进的分布式数据库之一。与PostgreSQL的完整功能集相比,这令人毛骨悚然,还有许多工作要做,Citus现在提供的功能及其扩展方式使其在分布式数据库环境中具有很大的独特性。许多当前的Citus用户最初使用Postgres中的许多高级功能在单节点PostgreSQL服务器上建立业务,然后仅用几周的开发工作就迁移到Citus,以将其数据库模式转换为分布式表和引用表。对于任何其他数据库,从单节点数据库到分布式数据库的这种迁移可能要花费数月甚至数年的时间。
像PostgreSQL这样的RDBMS具有几乎无限的功能和成熟的SQL引擎,可让您以多种方式查询数据。当然,这些功能只有在速度很快时才对应用程序有用。幸运的是,PostgreSQL很快,并且通过诸如实时查询编译之类的新功能不断提高,但是当您拥有大量数据或流量以至于一台机器速度太慢时,那些强大的功能就不再那么有用了……除非您可以结合许多计算机的计算能力。这就是功能成为超级大国的地方。
通过采用PostgreSQL功能并进行扩展,Citus具有许多超级功能,这些功能使用户可以将数据库扩展到任意大小,同时保持高性能及其所有功能。
尽管大多数这些功能对于开发需要扩展的复杂应用程序来说似乎都是必不可少的,但并不是所有分布式数据库都支持它们。下面我们根据公开提供的文档对一些流行的分布式数据库进行比较。
与在分布式数据库中拥有超级功能相比,更重要的是能够组合数据库超级功能来解决复杂的用例。
由于支持查询路由,参考表,索引,分布式事务和存储过程,因此即使最先进的多租户OLTP应用程序(例如Copper)也可以使用Citus扩展到单个PostgreSQL节点之外,而不会在应用程序中做出任何牺牲。
如果将子查询下推与并行的分布式DML结合使用,则可以在数据库内部转换大量数据。一个常见的示例是使用INSERT…SELECT构建汇总表,该表可以并行化以适应任何类型的数据量。结合通过COPY,索引,联接和分区进行的批量加载,您将拥有一个非常适合时间序列数据和实时分析应用程序(如Algolia仪表板)的数据库。
正如Microsoft的Min Wei在谈到Microsoft如何使用Citus和PostgreSQL分析Windows数据时指出的那样:Citus使您能够使用分布式OLTP解决大规模OLAP问题。
Citus与其他分布式数据库有些不同,后者通常是从头开始开发的。 Citus没有引入PostgreSQL中尚未提供的任何功能。 Citus数据库以满足需要扩展的用例的方式扩展了现有功能。重要的是,大多数PostgreSQL功能已经针对各种用例进行了数十年的开发和测试,而当今用例的功能要求最终并没有太大不同;主要是数据的规模和大小不同。因此,在构建现代应用程序时,基于世界上最先进的开源RDBMS(PostgreSQL!)构建的分布式数据库(如Citus)可以成为您的武器库中最强大的工具。
原文:>
以上就是关于NewSQL分布式数据库发展策略讨论全部的内容,包括:NewSQL分布式数据库发展策略讨论、分布式数据库有什么特点、什么是分布式数据库系统它有什么特点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)