Logo
技术架构

技术架构 #

整体架构 #

DBPlusEngine 的可插拔架构划分为 3 层,分别是 L1 内核层、L2 功能层、L3 生态层。

DBPlusEngine 整体架构如下图所示。

L1 内核层 #

是数据库基本能力的抽象,其所有组件均必须存在,但具体实现方式可通过可插拔的方式更换。 主要包括查询优化器、分布式事务引擎、分布式执行引擎、权限引擎和调度引擎等。

L2 功能层 #

用于提供增量能力,其所有组件均是可选的,可以包含零至多个组件。组件之间完全隔离,互无感知,多组件可通过叠加的方式相互配合使用。 主要包括数据分片、读写分离、数据库高可用、数据加密、影子库等。用户自定义功能可完全面向 DBPlusEngine 定义的顶层接口进行定制化扩展,而无需改动内核代码。

L3 生态层 #

用于对接和融入现有数据库生态,包括数据库协议、SQL 解析器和存储适配器,分别对应于 DBPlusEngine 以数据库协议提供服务的方式、SQL 方言操作数据的方式以及对接存储节点的数据库类型。

DBPlusEngine 的接入形态包括驱动端和代理端两种形态,即 DBPlusEngine-Driver 和 DBPlusEngine-Proxy。

DBPlusEngine-Driver #

轻量级的 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。

  • 适用于任何基于 JDBC 的 ORM 框架,如:JPA、Hibernate、Mybatis、Spring JDBC Template 或直接使用 JDBC;
  • 支持任何第三方的数据库连接池,如:DBCP,C3P0,BoneCP,HikariCP 等;
  • 支持任意实现 JDBC 规范的数据库,目前支持 MySQL,PostgreSQL,Oracle,SQLServer 以及任何可使用 JDBC 访问的数据库。

DBPlusEngine-Proxy #

透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL(兼容 openGauss 等基于 PostgreSQL 的数据库)版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端(如:MySQL Command Client、MySQL Workbench、Navicat 及 DBeaver 等)操作数据,对 DBA 更加友好。

  • 向应用程序完全透明,可直接当做 MySQL/PostgreSQL 使用;
  • 适用于任何兼容 MySQL/PostgreSQL 协议的的客户端。

架构优势 #

  • 高性能

驱动程序端历经多年打磨,效率接近原生 JDBC,性能极致。主流竞品中,目前只有 ShardingSphere 提供驱动端接入形态。

  • 高兼容

代理端适用于任何兼容 MySQL/PostgreSQL 协议的的客户端,驱动程序端支持任意实现 JDBC 规范的数据库。

  • 高扩展

面对数据库替换场景,DBPlusEngine 可满足业务平滑迁移,对业务零侵入。

  • 低成本

保留原有数据库技术栈,对 DBA 友好,学习及管理成本低。

  • 安全稳定

不干预数据库内核,基于成熟的数据库底座提供增能力,兼顾安全性及稳定性。

  • 弹性扩展

具备弹性的计算和存储能力,可满足计算及存储层不断变化的需求,在线完成数据库拆分和迁移;

  • 开放生态

可插拔模型,使内核、功能组件以及生态对接完全能够灵活的方式进行插拔式扩展,用户可以像使用积木一样定制适合业务的独特系统。