likes
comments
collection
share

关系数据库开源项目参考

作者站长头像
站长
· 阅读数 11

数据库属于基础软件,基础软件存在一个特点就是随着其发展,趋向于寡头,比如操作系统中的Linux。目前国内数据库的发展很有前景,为了尽快占领市场发展生态等不同因素,选择开源的项目越来越多。作为从业人员,可以向更多的开源项目学习。

基于PG的开源项目

这里列举一些目前基于PG的开源项目,一方面是学习这些开源项目,另一方面,可以关注一下各开源项目都做了那些改动,他们出于什么目的或者需求去做这些改动。如果是我们,是否有这些需求,是否也要做。

openGauss

openGauss是一款华为开源的关系型数据库管理系统,它具有多核高性能、全链路安全性、智能运维等企业级特性。 openGauss内核早期源自开源数据库PostgreSQL,融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及ARM架构上进行了适配与优化。

gitee: gitee.com/opengauss/o… openGauss社区: opengauss.org/zh/

openGauss与PG的对比:openGauss基于PostgreSQL9.2.4内核开发,包括一些PG9.4版本的功能,但PG9.4之后版本的很多功能都没有纳入。(代码由C改为了C++) 下面列一些主要改动点:

  • 多进程改成了多线程(有利有弊)
  • 事务ID由32位改为64位(解决事务ID回卷问题)
  • 增加列存引擎,内存引擎
  • 其他内核增强(不一一列举......)
  • 其他功能(AI调优,透明加密等等不一一列举......)

缺点:

  • 不支持并行(PG9.6开始支持并行)
  • 编译复杂

更多的对比可以参考下面两篇博文:

AntDB

AntDB是一款源自于PG内核的通用分布式事务性关系数据库,是一款面向金融、电信、政务、安全、能源等行业的国产、自主、安全可靠、高性能的企业级分布式事务型关系数据库产品。具备持续的集群自动高可用,秒级在线扩缩容,强大的Oracle兼容(80),异地容灾,SQL语句级自定义分片,分布式事务和MVCC,最大保护最大性能最大可用的自适应切换,全局一致性位点恢复等企业级应用的核心能力。

gitee: gitee.com/adbsql/antd…

2014年开始基于Postgres-XC实现的。还有很多分布式数据库都是PG-XC架构。更多介绍可参考分布式事务型关系数据库-AntDB

相比openGauss,其PG内核较新。

Greenplum

Greenplum 是全球领先的开源大数据平台,是能够提供包含实时处理、弹性扩容、混合负载、云 原生和集成数据分析等强大功能的大数据引擎。Greenplum 基于 MPP(大规模并行处理)架构构建,具有良好的弹性和线性扩展能力,并内置并行存储、并行通讯、并行计算和优化技术。

github: github.com/greenplum-d…

Postgres-XC

基于PostgreSQL实现的分布式数据库。 很多分布式数据库都是基于Postgres-XC开发的,比如antdb,tbase等。

github: github.com/postgres-x2…

更多分布式数据库的内容可参考聊聊主流的分布式数据库

TBase

TBase 是腾讯数据平台团队在开源的 PostgreSQL 基础上研发的企业级分布式 HTAP 数据库管理系统: 具备高性能可扩展的分布式事务能力,支持 RC 和 RR 两种隔离。

github: github.com/Tencent/TBa…

PolarDB-for-PG

PolarDB是阿里巴巴自主研发的下一代云原生关系型数据库。

基于PG的其他项目(包括闭源)
EnterpriseDB

这个单独列一下EnterpriseDB,比较特殊,EnterpriseDB是提供基于PostgreSQL的企业级产品与服务厂商之一(国外的公司)。EnterpriseDB是PostgreSQL的一个分支,在PostgreSQL基础上,针对企业级应用进行了专门的优化,同时,增加了一系列如动态 性能调优(DynaTune)、EDB Loader、高效批量SQL处理等高级特性;在众多功能亮点中,EnterpriseDB的兼容性技术尤为惹眼,可以兼容oracle的数据库。

PipelineDB

PipelineDB是基于PostgreSQL的stream数据库。

PipelineDB is a high-performance PostgreSQL extension built to run SQL queries continuously on time-series data.

github: github.com/pipelinedb/…

TimescaleDB

TimescaleDB是基于PostgreSQL数据库打造的一款时序数据库,插件化的形式,可随着PostgreSQL的版本升级而升级,不会因为另立分支带来麻烦。

github: github.com/timescale/t…

AgensGraph

AgensGraph是一个基于PostgreSQL的图数据库。同时,AgensGraph也是用于现代复杂数据环境的新一代多模型图数据库,它同时支持关系和图数据模型。因此,开发者可以将遗留下来的关系数据模型和灵活的图形数据模型集成到一个数据库中。

github: github.com/bitnine-oss… gitee: gitee.com/mirrors/Age…

CitusDB

Citus是PostgreSQL的扩展(not a fork),采用shared nothing架构,节点之间无共享数据,由协调器节点和Work节点构成一个数据库集群。相比单机PostgreSQL,Citus可以使用更多的CPU核心,更多的内存数量,保存更多的数据。通过向集群添加节点,可以轻松的扩展数据库。

Citus支持新版本PostgreSQL的特性,并保持与现有工具的兼容 Citus使用分片和复制在多台机器上横向扩展PostgreSQL。它的查询引擎将在这些服务器上执行SQL进行并行化查询,以便在大型数据集上实现实时(不到一秒)的响应。

github: github.com/citusdata/c…

为什么基于PG?

可参考这篇文章:AntDB为何选择基于PostgreSQL研发。总结以下几点:

  1. 保持独立性(国内强调自主可控的大环境下,有优势)
  2. 开源许可(类BSD开源协议,用户使用没有任何法律风险,可以随意分发、闭源和开源)
  3. 发展势头良好
  4. 丰富的产品生态

PostgreSQL和Linux一样是纯社区类的开源产品,已经发展了近30年,背后不受任何一家商业公司或某一个国家独立完整控制,主要贡献者来自日本、美国、德国、法国、奥地利、瑞典、英国、俄罗斯等全球各地的企业和个人。其中主要企业有CitusData、VMware、EnterpriseDB、Pivotal、NTT Group、Fujitsu、Google、WAS、IBM、Zalando、Yandex等共24家公司占比63%,个人贡献者占比37%。

其他开源项目(不是基于PG的项目)

其他的开源项目有很多,比如Oceanbase等等,这里只再列一个就是TiDB。TiDB 是一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。至于为啥单列TiDB,看一下github 29.8k的star就懂了。

TiDB官网: pingcap.com/zh/ github: github.com/pingcap/tid…