Ndb_cluster_connection
对于在单个应用程序
中实例化表示到不同管理服务器的连接的多个对象没有限制,也没有限制
使用它们来创建Ndb
类的多个实例。这些
Ndb_cluster_connection
对象(以及
Ndb
基于它们的实例)甚至不需要连接到同一个集群。
例如,完全有可能以这样一种方式执行
应用程序级数据分区,即满足一组标准的数据使用一个对象“移交”到一个集群,该对象利用表示与该集群的连接的对象,而不满足这些标准(或者可能是一组不同的标准)的数据可以通过使用“指向”第二个集群的不同 Ndb 实例发送到不同的集群。
Ndb
Ndb_cluster_connection
Ndb_cluster_connection
可以扩展此场景以开发访问任意数量集群的单个应用程序。但是,在这样做时,必须牢记以下条件和要求:
集群管理服务器 ( ndb_mgmd ) 可以连接到一个且只有一个集群,而无需重新启动和重新配置,因为它必须从配置文件 (
config.ini
) 中读取数据,告诉它哪些数据节点组成集群。-
Ndb_cluster_connection
对象 “属于 ”单个管理服务器,其主机名或 IP 地址用于实例化该对象(作为参数传递给connection_string
其构造函数);一旦对象被创建,它就不能用于启动到不同管理服务器的连接。(请参阅 Ndb_cluster_connection 类构造函数。)
-
Ndb
使用此连接 ( ) 的对象Ndb_cluster_connection
不能重新用于连接到不同的集群管理服务器(因此连接到构成集群的不同数据节点集合)。任何给定的实例 在创建时Ndb
都绑定到一个特定的 实例,而这个实例在实例化时又绑定到一个唯一的管理服务器。Ndb_cluster_connection
Ndb_cluster_connection
(请参阅Ndb 类构造函数。)
Ndb
前面描述的绑定在所讨论的和Ndb_cluster_connection
对象 的生命周期内持续存在。
因此,在设计和实现任何在单个会话中访问多个集群的应用程序时,必须实例化一组单独的Ndb_cluster_connection
和Ndb
对象以连接到每个集群管理服务器,并且不会混淆其中的哪一个用于访问哪个 NDB Cluster。
同样重要的是要记住, 不同集群之间不可能直接“共享”数据或数据节点。一个数据节点只能属于一个集群,集群之间的任何数据移动都必须在应用程序级别完成。
有关演示如何在单个应用程序中建立和使用两个不同集群的示例,请参阅 第 2.5.3 节,“使用同步事务和多集群的 NDB API 示例”和 第 3.6.2 节,“MGM API 事件处理与多个集群”。