4.1.2 Java 和 NDB Cluster

NDB Cluster被定义为 一个或多个 MySQL 服务器,提供对 NDBCLUSTER存储引擎的访问——即一组 NDB Cluster 数据节点(ndbd 进程)。这里列出了从 Java 到 的三个主要访问路径 NDBCLUSTER

  • JDBC 和 mysqld。  JDBC 通过向 MySQL 服务器发送 SQL 语句并返回结果集来工作。使用 JDBC 时,您必须编写 SQL、管理连接并从结果集中复制您想要在程序中用作对象的任何数据。MySQL 服务器最常使用的 JDBC 实现是MySQL Connector/J

  • Java 持久性 API (JPA) 和 JDBC。  JPA 使用 JDBC 连接到 MySQL 服务器。与 JDBC 不同,JPA 提供数据库中数据的对象视图。

  • 集群J。  ClusterJ使用 JNI 桥接NDB API 以直接访问 NDBCLUSTER. 它采用一种基于域对象模型的数据访问方式,在许多方面类似于 JPA 采用的方式。ClusterJ 不依赖于 MySQL 服务器进行数据访问。

这些路径显示在以下 API 堆栈图中:

图 4.1 NDB 的 Java 访问路径

NDB 的 Java 访问路径

JDBC 和 mysqld。  Connector/J 通过 MySQL JDBC 驱动程序提供标准访问。使用 Connector/J,JDBC 应用程序可以编写为与充当 NDB Cluster SQL 节点的 MySQL 服务器一起工作,其方式与其他 Connector/J 应用程序与任何其他 MySQL 服务器实例一起工作的方式大致相同。

有关更多信息,请参阅第 4.2.3 节,“将 Connector/J 与 NDB Cluster 一起使用”

集群J。  ClusterJ 是 NDBCLUSTER(或 NDB)的原生 Java 连接器,NDB Cluster 的存储引擎,采用 HibernateJPAJDO的风格。与其他持久性框架一样,ClusterJ 使用 数据映射器模式,其中数据表示为域对象,与业务逻辑分离,将 Java 类映射到 NDBCLUSTER存储引擎中存储的数据库表。

笔记

NDBCLUSTER存储引擎通常(在 MySQL 文档和其他地方)简称 为NDB. 术语 NDBNDBCLUSTER是同义词,您可以在 语句中使用ENGINE=NDB 或来创建聚簇表。 ENGINE=NDBCLUSTERCREATE TABLE

ClusterJ 不需要连接到mysqld 进程,可以直接访问 NDBCLUSTER使用包含在动态库中的 JNI 桥libnbdclient。但是,与JDBC不同的是,ClusterJ不支持建表等数据定义操作;这些必须通过其他方式执行,例如 JDBC 或mysql客户端。此外,ClusterJ 仅限于单表查询,不支持关系或继承;如果您需要在您的应用程序中支持这些功能,您应该使用另一种访问路径。