24 Star 110 Fork 33

GVPHe3DB/He3PG

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README
MulanPSL-2.0

He3DB是什么?

He3DB是移动云开源的云原生数据库产品。

He3DB受Aurora论文启发,基于开源数据库PostgreSQL 改造的云原生数据库产品。架构上实现计算存储分离,主备节点共享一份数据(容量上限100T ),支持一主15备,RTO 绝对时间<30秒,我们打造的核心理念:高性能,低成本。

为什么叫He3DB?

He3 是氦元素同位素,是一种核聚变燃料,具有清洁、安全、高效等特点。和我们He3DB 追求的目标不谋而合。

产品定位:

云上一般小型业务比较看重低成本,更偏向于使用RDS数据库服务。而中大型业务对性能或者可用性要求更高,而不得不选择云原生数据库。当前各大云厂商的云原生数据库从产品力的角度看已经大幅领先RDS,但是市场占有率RDS依然占据大头,最重要的原因就是RDS成本优势。我们团队认为RDS成本和云原生数据库产品力之间存在一个权衡,而正是这种权衡,让我们决定研发He3DB,我们对He3DB的定位既能向下占据部分RDS市场,又能向上承接部分云原生数据库业务。

He3DB不会一味的追求更大,更快,更强,而是会设置一个产品力上限,而这个上限能够满足移动云绝大多数用户使用场景,在这个前提下,我们会把降低成本作为He3DB持续追求的目标。

架构:

图片

He3DB架构分4层: 代理层, 计算层, 高性能存储层, 低性能持久层

中间件:用户通过中间件请求数据库服务,中间件支持PG协议,100%兼容PG SQL。中间最核心的能力就是选择合适的备机节点,保证读写数据的一致性以及备节点负载均衡,未来中间件能够自动感知业务负载,动态扩缩容备节点,保证服务的持续稳定。

计算引擎 :基于Postgresql 源码改造,架构上实现了计算存储分离,主备共享数据。部分模块也做了相关优化:实现Aurora论文中提到的log is database,以及为了RTO时间绝对可控,实现wal 日志的delay replay

存储引擎:实现冷热分层:高性能存储层,以及冷数据持久层。

He3DB 目标实现思路:

高性能

目标:读QPS >100W 写TPS >10W

关健技术:

  • 降低计算层往存储层写的数据量,从而提升写TPS性能。主要删除计算层往数据层写数据页(只写wal日志)以及关闭wal日志为了解决部分写而要写整个数据页的机制. 初步评估,相比PG 本身,写数据量能下降2/3左右
  • 缩短RTO时间。 通过备机的wal delay replay技术(只回放内存中存在数据页的WAL日志),把回放操作由磁盘IO优化为内存IO.从而最大化的降低RTO时间
  • 实现智能化中间件,保证读强一致性(通过记录主备wal replay点实现),最终能够通过增加备机,增加读吞吐能力。
  • 数据冷热分层,我们能够定义每个备节点缓存不同的热数据,通过中间件,保证每一个读请求选择最佳缓存备节点,极端情况下,我们能够保证所有的读请求全部内存命中(需要修改buffer缓存算法,由空间考虑优化为缓存热数据)

低成本:

  • 计算引擎:提供serverless服务,按需扩缩量,保证计算资源的效能最大化,未来考虑进一步拆分CPU和内存资源,能够更精准管控计算资源
  • 存储引擎:业务数据根据使用场景标识温度数,架构上实现冷热数据分层以及支持多种压缩算法。最终目标是保证性能前提下,最大化降低存储成本

高可用,高可靠:

  • 实时备份:备份过程对业务零影响(备份进程独立于计算节点直接操作S3对象存储)
  • 高性能存储层通过Raft算法保证高可用
  • 冷数据持久层基于S3对象存储实现(S3由云服务商保证数据高可用以及高可靠)

扩展性:以下每一层都可以独立基于业务需求完成扩缩容

  • 计算引擎可以通过增加备机,线性增加读吞吐能力
  • 高性能存储层,可以通过增加follower节点或者learner节点增加读吞吐能力
  • s3可以增加节点,增加吞吐以及容量

产品现状:

  当前开源版本为0.6版本,还无法用于生产,这个版本主要验证计算存储分离,以及共享架构的正确性,性能不是我们关心的重点。0.6版本重点是计算引擎以及中间件,存储部分使用的开源juicefs作为共享存储层(做了部分模块的改造,后续会有相关源码分享)。下半年重点开发模块就是高性能存储层,也就是性能将作为最重要的目标。

为什么从0.6版本开始开源,而不是等到年底所有模块开发完成,几方面原因:

  • He3DB年初立项就非常明确会完全以开源的方式运作,我们希望在项目早期就能够吸引开发者进来参与开发以及功能讨论。之所以等到8月份才开源第一个版本0.6,是因为前期需要做大量的论文研读,多种可行性方案验证以及基础框架的开发。
  • 我们希望借助社区的力量,推动整个项目的发展。我们团队也会陆续推进一系列内核分析文章以及视频帮助开发者能够尽快参与到内核开发
  • 我们团队希望尽早能够以完全开源的方式推动项目向前发展,包含后续需求的确认,模块管理,问题沟通的方式,项目月报等。我们希望社区能够看到He3DB的快速发展,相信我们团队的能力

部署:

He3DB 部署步骤

Roadmap

短期

  • 研发高性能存储(重点优化性能) 9-10月
  • 支持冷热分层以及数据压缩(重点降低成本) 10-11月
  • 高可靠,高可用:包含cluster管理,主备切换,网络异常处理等 10-12月      

中长期

  •    多模支持(gis,时序)
  •    去O(主要是SQL兼容性以及生态工具开发)
  •    HTAP 能力(多主,算子下推,共享内存)

Slack:https://join.slack.com/t/dbspecialzone/shared_invite/zt-1fe4g7uf4-iC_rdhnWpQkP0oQl_GUSKQ

木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

About

He3PG是中移(苏州)软件技术有限公司基于PG专为He3DB打造的高性能数据库计算引擎。 expand collapse
C and 6 more languages
MulanPSL-2.0
Cancel

Releases (1)

All

Contributors

All

Activities

Load More
can not load any more
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/he3db/he3pg.git
git@gitee.com:he3db/he3pg.git
he3db
he3pg
He3PG
master

Search