OceanBase 数据库代理 ODP(OceanBase Database Proxy,又称 OBProxy)是 OceanBase 专用的代理服务器,OceanBase 用户的数据会以多副本的形式存放在各个 OBServer 上,ODP 则负责接收用户发过来的 SQL 请求,转发用户 SQL 请求到最佳目标 OBServer 上,并将执行结果返回给客户。

作为 OceanBase 数据库的关键组件,ODP 具有以下特性:

  • 高性能转发:ODP 完整兼容 MySQL 协议,并支持 OceanBase 自研协议,采用多线程异步框架和透明流式转发的设计,保证了数据的高性能转发,同时确保了自身对机器资源的最小消耗。
  • 连接管理:针对一个客户端的物理连接,ODP 维持自身到后端多个 OBServer 的连接,采用基于版本号的增量同步方案维持了每个 OBServer 连接的会话状态,保证了客户端高效访问各个 OBServer。
  • 易运维:ODP 本身无状态支持无限水平扩展,支持同时访问多个 OceanBase 集群。可以通过丰富的内部命令实现对自身状态的实时监控,提供极大的运维便利性

在 OceanBase MySQL 模式下,用户可以直接使用 MySQL 官方提供的 Connector 来使用 OceanBase 数据库(暂不支持 8.0 的驱动),在 OceanBase Oracle 模式下,需要使用 OceanBase 自研的数据库驱动。OceanBase 数据库驱动同时支持 OceanBase 的 MySQL/Oracle 两种协议,在使用时可以自动识别 OceanBase 的运行模式是 MySQL 还是 Oracle,无需额外设置。OceanBase 支持各类语言的数据库驱动,下面介绍几种常见的语言及标准。

OCI 驱动

样例代码:

JDBC 驱动

OceanBase 提供了基于 Java JDBC 标准的数据库驱动,JDBC(Java Database Connectivity) 是 Java 应用程序访问数据库的标准 API(应用程序编程接口),数据库驱动的实现会将 JDBC 标准编程接口转换成对应数据库厂商的 SQL 实现。OceanBase JDBC 驱动兼容 JDBC 4.0、4.1、4.2 标准。

JDBC 连接串的前置为 jdbc:oceanbase,其他使用和标准 JDBC 方式保持一致。样例代码:

OceanBase 提供了基于 ODBC 标准的数据库驱动,ODBC (Open Database Connectivity)和 JDBC 标准一样,提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统,目前已经被业界广泛接受。

目前 OceanBase 提供了 Linux 版本和 Windows 版本的 ODBC 驱动,样例代码:

.NET 驱动

OceanBase 提供了基于 .NET 的数据库驱动,驱动提供了对 Entity Framework Core 和 Entity Framework 6.x 的兼容能力,用户可以使用 OceanBase .NET 驱动结合 Entity Framework 快速开发应用程序。.NET 驱动兼容 .NET Framework 4.5、.NET Framework 4.6、.NET Core 2.0 版本。