开放原子开源基金会2020年报
近日,开放原子开源基金会公布了 2020 年报。
我之前跟大家分享了数据库架构(刚哥谈架构 (五) 谈谈数据库架构),今天我们来讨论一下数据库中最为常见的关系型数据库的架构。
我们把主要的开源关系型数据库分为三类,来分别了解一下它们的架构和设计,并了解一下它们各自的优缺点。
OLTP是在线事务处理,在3层体系结构中支持面向事务的应用程序。 OLTP管理组织的日常事务。主要目标是数据处理而不是数据分析。
OLTP的主要特点是:
下面我们就来看看主要的开源OLTP的数据库架构。
MySQL是最为流行的开源关系数据库
MySQL采用了经典的客户端服务器C/S架构,服务器端的主要组件包含:
MySQL架构设计中的一些关键技术包括:
MySQL支持事务,事务是一组原子性的SQL查询,或者说一个独立的工作单元。事务的ACID:
MySQL的大多数存储引擎通过数据快照的形式支持了多版本的并发控制。
优点:
缺点:
开源的MySQL集群软件比较少,例如Myat。而官方的MySQL Cluster不是开源的,它是将线性可伸缩性和高可用性结合在一起的分布式数据库。它提供了跨分区和分布式数据集的事务内一致性的内存实时访问。
因为MySQL被“邪恶”的Oracle收购,社区另开门户,以MySQL的代码创建分支,开发了MariaDB。MariaDB Server是最受欢迎的开源关系数据库之一。它由MySQL的原始开发人员制作,并保证保持开源。它是大多数云产品的一部分,并且是大多数Linux发行版中的默认产品。
书籍推荐:
PostgreSQL是一个功能强大的开源对象关系数据库系统,经过30多年的积极开发,在可靠性,功能强大和性能方面赢得了极高的声誉。
PostgreSQL和MySQL一样使用客户端/服务器模型。
PostgreSQL会话由以下协作过程(程序)组成:
PostgreSQL的物理结构非常简单。它由共享内存以及一些后台进程和数据文件组成。
共享内存
共享内存是指为数据库缓存和事务日志缓存保留的内存。共享内存中最重要的元素是共享缓冲区和WAL缓冲区
共享缓冲区
共享缓冲区的目的是使DISK IO最小化。为此,必须满足以下原则
WAL缓冲区
PostgreSQL有四种进程类型。
PostgreSQL希望做到单栈全功能数据库,包括:
优点:
缺点:
和MySQL相比较,PostgreSQL从底层设计原理不尽相同,在数据量小的时候,数据库更趋于轻量化,MySQL会更适合。但是一旦数据量大的时候,应用场景复杂,或者需要分析的场合,PostgreSQL会是更好的选择。
书籍推荐:
CockroachDB是为现代云应用程序设计的分布式数据库。它与PostgreSQL兼容,并由一个RocksDB或专门创建的派生工具Pebble的键值存储提供支持。
CockroachDB 思路源自 Google 的全球性分布式数据库 Spanner。CockroachDB 既具有 NoSQL 对海量数据的存储管理能力,又保持了传统数据库支持的 ACID 和 SQL 等,还支持跨地域、去中心、高并发、多副本强一致和高可用等特性。支持 OLTP 场景,同时支持轻量级 OLAP 场景。
CockroachDB主要设计目标是可扩展,强一致和高可用 。CockroachDB旨在无人为干预情况下,以极短的中断时间容忍磁盘、主机、机架甚至整个数据中心的故障 。 CockroachDB采用完全去中心化架构,集群中各个节点的地位完全对等,同时所有功能封装在一个二进制文件中,可以做到尽量不依赖配置文件直接部署
Node代表一个CockroachDB进程实例,一般情况下一台物理机部署一个CockroachDB实例,一个CockroachDB实例可以配置多个Store, 单个Store与RocksDB实例一一对应,一般情况下一个Store对应一块物理磁盘。CockroachDB按照范围进行数据切分,最小数据切分单元是Range。Range默认的配置大小是64M, 以3副本的方式分布在各个节点上,副本间通过Raft协议进行数据同步。
CockroachDB底层是RocksDB的KV,在此之上,利用Raft协议来实现分布式的多副本的一致性。节点故障无丢失数据风险。CockroachDB架构上去中心化,没有单点故障:架构不存在集中式模块,单节点故障不影响集群整体的可用性。基于Raft协议,只要半数以上副本存活,则服务可用;当节点异常,数据副本数量少于指定阈值时,自动补齐副本;基于HLC分布式时钟同步算法,任意节点皆可充当事务管理节点,无中心事务管理器。
CockroachDB使用Gossip协议实现节点状态管理,理论上单集群支持10K节点规模。
CockroachDB兼容PostgreSQL协议,对于报文的封装和解析完全按照PostgreSQL的方式进行,所以用户可以直接使用PostgreSQL的客户端访问CockroachDB。
优点:
缺点:
TiDB是支持MySQL语法的开源分布式混合事务/分析处理(HTAP)数据库。TiDB可以提供水平可扩展性、强一致性和高可用性。它主要由PingCAP公司开发和支持,并在Apache 2.0下授权。TiDB从Google的Spanner和F1论文中汲取了最初的设计灵感。
TiDB是国产数据库的翘楚,所属公司 PingCAP于11月宣布完成D轮2.7亿美元融资,创造了全球数据库历史新的里程碑。到目前为止,PingCAP 总计已融资 3.416 亿美元,上一次的 5000 万美元 C 轮融资于2018年9月完成。截止到2020年10月,TiDB项目在GitHub上已总计获得超过25000颗星,近1200位开源代码贡献者,参与企业包括美团、知乎、伴鱼、丰巢、小米、微众银行、UCloud、Zoom、Samsung、Square、PayPay 等行业企业。
HTAP 是 Hybrid Transactional / Analytical Processing 的缩写。这个词汇在 2014 年由 Gartner 提出。传统意义上,数据库往往专为交易或者分析场景设计,因而数据平台往往需要被切分为 TP 和 AP 两个部分,而数据需要从交易库复制到分析型数据库以便快速响应分析查询。而新型的 HTAP 数据库则可以同时承担交易和分析两种智能,这大大简化了数据平台的建设,也能让用户使用更新鲜的数据进行分析。作为一款优秀的 HTAP 数据数据库,TiDB 除了优异的交易处理能力,也具备了良好的分析能力。
TiDB在整体架构基本是参考 Google Spanner 和 F1 的设计,上分两层为 TiDB 和 TiKV 。 TiDB 对应的是 Google F1, 是一层无状态的 SQL Layer ,兼容绝大多数 MySQL 语法,对外暴露 MySQL 网络协议,负责解析用户的 SQL 语句,生成分布式的 Query Plan,翻译成底层 Key Value 操作发送给 TiKV , TiKV 是真正的存储数据的地方,对应的是 Google Spanner ,是一个分布式 Key Value 数据库,支持弹性水平扩展,自动的灾难恢复和故障转移(高可用),以及 ACID 跨行事务。值得一提的是 TiKV 并不像 HBase 或者 BigTable 那样依赖底层的分布式文件系统,在性能和灵活性上能更好,这个对于在线业务来说是非常重要。
和CockroachDB采用了类似的架构设计,TiKV实际上也是基于RocksDB,同样采用了Raft协议来实现分布式的一致性。值得一提的是TiKV用Rust语言开发,是开源社区的网红明星。
优点:
缺点:
SQLite是一种C语言库,可实现小型,快速,自包含,高可靠性,功能齐全的SQL数据库引擎。 SQLite是世界上最常用的进程内,嵌入式数据库引擎。 SQLite内置在所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。
SQLite因为其特点,无法应用与海量数据的场景。
openGauss 是华为开源关系型数据库管理系统,采用木兰宽松许可证 v2 发行。openGauss 内核源自 PostgreSQL,深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。同时 openGauss 也是一个开源的数据库平台,鼓励社区贡献、合作。
OpenGauss因为起步时间短,社区还不成熟,这里就不做详细介绍了。
MySQL是最为流行的开源OLTP数据库,有非常强大的生态。
PostgeSQL支持丰富的功能和扩展性,能应用与各种不同的场景中。
CockroachDB和TiDB同样借鉴了google spanner的架构,底层使用RocksDB作为KV存储,使用raft协议保证分布式的一致性来实现高可用和高扩展,是新一代开源OLTP的代表。
虽然PostgreSQL和TiDB都号称能兼顾OLTP和OLAP的场景,但是我还是把它们都归于OLTP的分类。他们的核心设计都更适合TP的场景。
SQLite是小型的关系型数据库,可用于进程内的部署。
OLAP(Online Analytical Processing)联机分析处理,是指一类软件工具,可为业务决策提供数据分析。 OLAP系统允许用户一次分析来自多个数据库系统的数据库信息。主要目标是数据分析而不是数据处理。
OLAP的主要特点是:
下面我们就来看看主要的开源OLAP的数据库架构。
Hive是基于Hadoop的用于查询和管理大型分布式数据集的数据仓库软件。Apache Hive数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集。可以将结构投影到已经存储的数据上。提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
Hadoop的出现,通过HDFS和Map/Reduce解决了海量数据的存储和计算问题,然而Map/Reduce并不是一个开发者友好的计算和编程接口。Hive的出现解决了这个问题,基于Hadoop,Hive提供一个用户友好的SQL接口,对海量数据进行操作。
从架构上来看,Hive包含:
Hive不提供的某系数据库功能,例如行级更新,快速的查询响应时间和事务,这时候你可能会需要HBase,HBase是一种分布式且可扩展的数据存储,它支持行级更新,快速查询和行级事务(但不支持多行事务)。 HBase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务。因此,它可以对稀疏文件提供极高的容错率。
Hive是查询引擎,而HBase是专门用于非结构化数据的数据存储。Apache Hive主要用于批处理(即OLAP),但HBase广泛用于事务处理,其中查询的响应时间不是高度交互的,即OLTP。与Hive不同,HBase中的操作在数据库上实时运行,而不是转换为mapreduce作业。HBase用于实时查询,Hive用于分析查询。
Hive采用了Schema On Read的模式,当通过加载外部数据,写入查询的输出,执行UPDATE语句等将数据写入传统数据库时,数据库可以完全控制存储。该数据库是“守门人”。数据库可以在写入数据时强制执行模式。这被称为Schema on write。Hive无法控制基础存储。有多种方法可以创建,修改甚至破坏Hive将要查询的数据。因此,Hive只能在读取时强制执行查询。这称为读取模式Schema on read。如果模式与文件内容不匹配怎么办? Hive尽其所能读取数据。如果记录中没有足够的字段来匹配模式,那么将获得很多空值。如果某些字段是数字,并且Hive遇到非数字字符串,它将为这些字段返回null。最重要的是,Hive会尽力从所有错误中恢复。
Hive除了支持Map/Reduce作为计算引擎,也可以使用SparkSQL作为计算引擎。当然SparkSQL也可以脱离Hive,使用其它数据存储来支持SQL查询。这是一种典型的存算分离的数据处理技术。
优点:
缺点
书籍推荐:
建立在PostgreSQL上的分析数据库平台。全名是Pivotal Greenplum数据库。一个用于分析,机器学习和AI的开源大规模并行数据平台
Greenplum数据库是基于PostgreSQL开源技术的。它本质上是多个PostgreSQL面向磁盘的数据库实例一起工作形成的一个紧密结合的数据库管理系统(DBMS)
Greenplum数据库和PostgreSQL的主要区别在于:
Greenplum的最小并行单元不是节点层级,而是在实例层级,每个实例都有自己的postgresql目录结构,都有各自的一套Postgresql数据库守护进程(甚至可以通过UT模式进行单个实例的访问)。正因为如此,甚至一个运行在单节点上的GreenplumDB也是一个小型的并行计算架构,一般一个节点配置6~8个实例,相当于在一个节点上有6~8个Postgresql数据库同时并行工作,优势在于可以充分利用到每个节点的所有CPU和IO 能力。
优点:
缺点:
俄罗斯搜索巨头Yandex开发的面向列存的关系型数据库。ClickHouse是过去两年中OLAP领域中最热门的,并于2016年开源。典型的用户包括著名的公司,例如字节,新浪和腾讯。
ClickHouse是基于MPP架构的分布式ROLAP(关系OLAP)分析引擎。每个节点都有同等的责任,并负责部分数据处理(不共享任何内容)。ClickHouse 是一个真正的列式数据库管理系统(DBMS)。在 ClickHouse 中,数据始终是按列存储的,包括矢量(向量或列块)执行的过程。只要有可能,操作都是基于矢量进行分派的,而不是单个的值它开发了矢量化执行引擎,该引擎使用日志合并树,稀疏索引和CPU功能(如SIMD单指令多数据)充分发挥了硬件优势,可实现高效的计算。因此,当ClickHouse面临大数据量计算方案时,通常可以达到CPU性能的极限。
通常有两种不同的加速查询处理的方法:矢量化查询执行和运行时代码生成。在后者中,动态地为每一类查询生成代码,消除了间接分派和动态分派。这两种方法中,并没有哪一种严格地比另一种好。运行时代码生成可以更好地将多个操作融合在一起,从而充分利用 CPU 执行单元和流水线。矢量化查询执行不是特别实用,因为它涉及必须写到缓存并读回的临时向量。如果 L2 缓存容纳不下临时数据,那么这将成为一个问题。但矢量化查询执行更容易利用 CPU 的 SIMD 功能。将两种方法结合起来是更好的选择。ClickHouse 使用了矢量化查询执行,同时初步提供了有限的运行时动态代码生成。
列式存储和数据压缩,对于一款高性能数据库来说是必不可少的特性。如果你想让查询变得更快,最简单且有效的方法是减少数据扫描范围和数据传输时的大小,而列式存储和数据压缩就可以帮助实现上述两点。列式存储和数据压缩通常是伴生的,因为一般来说列式存储是数据压缩的前提。ClickHouse数据按列进行组织,属于同一列的数据会被保存在一起,列与列之间也会由不同的文件分别保存 。数据默认使用LZ4算法压缩,在Yandex.Metrica的生产环境中,数据总体的压缩比可以达到8:1 ( 未压缩前17PB,压缩后2PB )。列式存储除了降低IO和存储的压力之外,还为向量化执行做好了铺垫。
ClickHouse用C ++编写,具有一个独立的系统,几乎不依赖第三方工具。支持相对完整的DDL和DML。大多数操作可以通过结合SQL的命令行来完成;分布式集群依赖Zookeper管理,并且单个节点不需要依赖Zookeper。大多数配置都需要通过修改配置文件来完成。
ClickHouse通常要求用户在创建表结构时指定分区列。采用数据压缩和纯列存储技术,使用Mergetree分别存储每列并压缩块,同时,数据将始终以碎片的形式写入磁盘。当满足某些条件时,ClickHouse将通过后台线程定期合并这些数据片段。当数据量继续增加时,ClickHouse将合并分区目录中的数据,以提高数据扫描的效率。
同时,ClickHouse为每个数据块提供了一个稀疏索引。处理查询请求时,稀疏索引可用于减少数据扫描并加快速度。
Clickhouse最初架构是基于MySQL实现的,所以在ClickHouse的设计中,能够察觉到一些MySQL的影子,表引擎的设计就是其中之一。与MySQL类似,ClickHouse也将存储部分进行了抽象,把存储引擎作为一层独立的接口。ClickHouse共拥有合并树、内存、文件、接口和其他6大类20多种表引擎。其中每一种表引擎都有着各自的特点,用户可以根据实际业务场景的要求,选择合适的表引擎使用。
优点:
缺点:
https://druid.apache.org/
Apache Druid是开源分析数据库,专为对高维度和高基数数据进行亚秒级OLAP查询而设计,它由广告分析公司Metamarkets创建,到目前为止,已被许多公司使用,包括Airbnb,Netflix,Nielsen,eBay,Paypal和Yahoo。它结合了OLAP数据库,时间序列数据库和搜索系统的思想,以创建适用于广泛使用案例的统一系统。最初,Apache Druid在2012年获得GPL许可,成为开源软件,此后在2015年更改为Apache 2许可,并于2018年加入Apache Software Foundation作为孵化项目。
Druid提供OLAP查询的主要功能包括:
Druid平台依赖于以下三个外部依赖项:
Druid的体系结构由以下处理类型的组件组成:
如前所述,Druid由用于摄取,查询和协调的独立组件组成。每个Druid流程组件都可以独立配置和扩展,从而提供最大的灵活性,并具有强大的容错能力(因为一个组件的故障不会立即影响其他组件)。此外,将深度存储和元数据存储与Druid系统的其余部分分开,可以从一直保留在深度和元数据存储中的数据中重新启动组件或整个集群。
优点:
缺点:
Apache Kylin是用于大数据的分布式分析引擎,提供SQL接口和多维分析(OLAP)并可用于用Hadoop栈。它最初由eBay中国研发中心开发,于2014年开源并为Apache Software Foundation贡献力量,具有亚秒级的查询功能和超高的并发查询功能,被美团,滴滴,携程,壳牌,腾讯,58.com等许多主要制造商采用。
Kylin是基于Hadoop的MOLAP(多维OLAP)技术。核心技术是OLAP Cube;与传统的MOLAP技术不同,Kylin在Hadoop上运行,Hadoop是一个功能强大且可扩展的平台,可以支持大量(TB到PB)数据。它将预先计算(由MapReduce或Spark执行)的多维多维数据集导入到低延迟分布式数据库HBase中,以实现亚秒级的查询响应。最近的Kylin 4开始使用Spark + Parquet代替HBase来进一步简化架构。由于在脱机任务(多维数据集构造)过程中已完成大量聚合计算,因此在执行SQL查询时,它不需要访问原始数据,而是直接使用索引来组合聚合结果并再次进行计算。性能高于原始数据。一百甚至数千次;由于CPU使用率低,它可以支持更高的并发性,特别适合于自助服务分析,固定报告和其他多用户交互式分析方案。
Kylin用Java编写,完全集成到Hadoop生态系统中,并使用HDFS进行分布式存储。计算引擎可以是MapReduce,Spark和Flink。存储引擎可以是HBase,Parquet(与Spark结合使用)。源数据访问支持Hive,Kafka,RDBMS等,多节点协调依赖Zookeeper;与Hive元数据兼容,Kylin仅支持SELECT查询,Schema修改需要在Hive中完成,然后同步到Kylin;传递建模和其他操作Web UI完成,通过Rest API执行任务调度,并且可以在Web UI上查看任务进度。
Kylin使用Hadoop生态系统HBase或Parquet作为存储结构,依靠HBase的行键索引或Parquet的行组稀疏索引来提高查询速度,并使用HBase Region Server或Spark执行器进行分布式并行计算。Kylin通过预聚合计算多维Cube数据,并在查询时根据查询条件动态选择最佳Cuboid(类似于实例化视图),这将大大减少CPU计算和IO读取的数量。在多维数据集构建过程中,Kylin对维值进行某些编码和压缩,例如字典编码,以最大程度地减少数据存储;由于Kylin的存储引擎和架构引擎是可插拔的,因此也存在用于不同存储引擎的存储结构。
Kylin的核心原则是预先计算,利用空间换时间来加速查询:Kylin的计算引擎使用Apache Spark和MapReduce;存储使用HBase和Parquet;SQL分析和后计算使用Apache Calcite。Kylin的核心技术是开发一系列优化方法,以帮助解决尺寸爆炸和扫描数据过多的问题。这些方法包括:设置聚合组,设置维度尺寸,设置派生维度,设置维度表快照,设置行键顺序,按列设置分片等。
Kylin 利用 MapReduce/Spark 将原始数据进行聚合计算,转成了 OLAP Cube 并加载到 HBase 中,以 Key-Value 的形式存储。Cube 按照时间范围划分为多个 segment,每个 segment 是一张 HBase 表,每张表会根据数据大小切分成多个 region。Kylin 选择 HBase 作为存储引擎,是因为 HBase 具有延迟低,容量大,使用广泛,API完备等特性,此外它的 Hadoop 接口完善,用户社区也十分活跃。
优点:
缺点:
Doris是用于报告和分析的基于MPP的交互式SQL数据仓库。它的原始名称是在百度开发时的Palo。捐赠给Apache Software Foundation之后,它更名为Doris。
Doris是一个MPP的ROLAP系统,主要整合了Google Mesa(数据模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存储格式,编码和压缩) 的技术。
Doris定位为:
Doris 的整体架构和 TiDB 类似,借助 MySQL 协议,用户使用任意 MySQL 的 ODBC/JDBC以及MySQL 的客户端,都可以直接访问 Doris。Doris 中的模块包括 FE 和 BE 两类:FE 主要负责元数据的管理、存储,以及查询的解析等;一个用户请求经过 FE 解析、规划后,具体的执行计划会发送给 BE,BE 则会完成查询的具体执行。BE 节点主要负责数据的存储、以及查询计划的执行。目前平台的 FE 部分主要使用 Java,BE 部分主要使用 C++。
Doris的主要设计思路有:
优点:
缺点:
Apache Hive是基于Hadoop的数据仓库解决方案,但是查询性能一般。
Greenplum是基于PostgreSQL开发的MPP架构的开源OLAP解决方案。
Clickhouse是最近最为流行的OLAP开源工具,主要采用了列存,向量化,Mergetree等技术,性能不是一般的强。
Apache Kylin是基于Hadoop的MOLAP,主要采用了预汇聚来实现海量数据的查询性能。
Apache Druid是开源时序OLAP工具,支持高可用可高扩展。Druid也采用了预汇聚的技术。
Apache Doris是百度开源的基于MPP的交互式SQL数据仓库,同样利用了列存和向量化技术,使用Paxos协议实现分布式的一致性。
存算分离是现代数据库区别于传统数据库的主要特点之一,主要是为了
存算分离的架构特别适合云上的部署,能够分别扩展存储和计算资源,做到资源和成本的最大利用和收益。
存算分离后,计算侧就需要一个与存储分离的SQL 查询引擎,常见的开源SQL查询引擎有Facebook的Presto,Apache Drill和SparkSQL。
Presto是一个适用于大数据的分布式SQL查询引擎,使SQL可以访问任何数据源。可以使用Presto通过水平缩放查询处理来查询非常大的数据集。Presto用于对大小从GB到PB的各种数据源运行交互式分析查询。Presto是专为交互式分析而设计和编写的,可在扩展到Facebook之类的组织规模的同时,实现商业数据仓库的速度。
虽然Presto理解并可以有效执行SQL,但是Presto不是数据库,因为它不包括自己的数据存储系统。它并不是要成为通用的关系数据库。Presto并非设计为处理OLTP的场景。
Presto利用众所周知的技术和新颖的技术来进行分布式查询处理。这些技术包括
Presto可以应用在许多的场景下。
Presto是一个分布式SQL查询引擎,类似于大规模并行处理(MPP)样式的数据库和查询引擎。除了依赖于运行Presto的服务器的垂直扩展,它还能够以水平方式在服务器集群中分布所有处理能力。这意味着可以通过添加更多节点来获得更多处理能力。
Presto的架构主要包含:
Presto存储与计算分离的核心是基于连接器的体系结构。连接器为Presto提供了访问任意数据源的接口。连接器的API称为SPI(service provider interface )。
优点:
缺点:
书籍推荐:
适用于Hadoop,NoSQL和云存储的无模式SQL查询引擎。
Apache Drill类似SparkSQL和Presto,Apache Drill可以在不同的数据源上执行SQL查询, 它是一个低延迟的大型数据集的分布式查询引擎,包括结构化和半结构化数据/嵌套。其灵感来自于谷歌的 Dremel,Drill 的设计规模为上千台节点并且能与 BI 或分析环境互动查询。在大型数据集上,Drill 还可以用于短,交互式的临时查询。Drill 能够用于嵌套查询,像 JSON 格式,Parquet 格式以及动态的执行查询。Drill 不需要一个集中的元数据仓库。
Apache Drill 的核心服务是 “Drillbit”,她负责接受来自客户端的请求,处理请求,并返回结果给客户端。Drillbit 服务能够安装在并运行在 Hadoop 集群上。当 Drillbit 运行在集群的每个数据节点上时,能够最大化去执行查询而不需要网络或是节点之间移动数据。Drill 使用 ZooKeeper 来维护集群的健康状态。虽然 Drill 工作于 Hadoop 集群环境下,但是 Drill 不依赖 Hadoop,并且可以运行在任何分布式集群环境下。唯一的先决条件就是需要 ZooKeeper。
Drill的查询性能主要靠以下几点设计来支持:
优点:
缺点:
书籍推荐:
Spark SQL是Apache Spark的用于处理结构化数据的模块。
优点:
缺点:
书籍推荐:
作为SQL查询引擎,SparkSQL是最为流行的,Spark是分布式内存内计算引擎,常被用来取代Map/Reduce做大数据的计算平台,SparkSQL可以用于对结构化数据进行SQL的运算,非常方便。而Presto利用其插件的设计,除了用于SQL计算,还经常被用于SQL的联邦查询,不需要把数据移动到本地存储。Apache Drill的应用不如前两者广泛。
好了,因为开源数据库这块的东西实在是太多了,这里我抛砖引玉,给大家一个参考,希望能对大家选用数据库技术有所帮助。
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。
Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。