Logo
技术架构

技术架构 #

SphereEx-DBPlusEngine 内置的可插拔架构划分为 3 层,分别是 L1 内核层、L2 功能层、L3 生态层。SphereEx-DBPlusEngine 整体架构如下图所示。

设计哲学

  • L1 内核层

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

  • L2 功能层

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

  • L3 生态层

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

SphereEx-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 访问的数据库。

SphereEx-DBPlusEngine-Proxy #

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

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