在單一應用程式中,建立代表連線到不同管理伺服器的多個 Ndb_cluster_connection
物件,或使用這些物件來建立 Ndb
類別的多個執行個體,並無任何限制。這些 Ndb_cluster_connection
物件(以及基於它們的 Ndb
執行個體)甚至不需要連線到同一個叢集。
例如,完全有可能執行資料的應用程式層級分割,以這樣的方式,符合一組條件的資料會「交給」一個叢集,使用一個 Ndb
物件,該物件使用一個 Ndb_cluster_connection
物件,代表連線到該叢集,而不符合那些條件(或可能是另一組條件)的資料,則可以透過使用 Ndb_cluster_connection
「指向」第二個叢集的另一個 Ndb 執行個體,傳送到不同的叢集。
可以擴展此情境,以開發一個可以存取任意數量叢集的單一應用程式。然而,在這樣做時,必須牢記以下條件和要求:
叢集管理伺服器 (ndb_mgmd) 只能連線到一個叢集,而無需重新啟動和重新設定,因為它必須從組態檔案 (
config.ini
) 讀取資料,告知它哪些資料節點組成叢集。-
Ndb_cluster_connection
物件「屬於」單一管理伺服器,該伺服器的主機名稱或 IP 位址用於建立此物件(作為connection_string
引數傳遞到其建構函式);一旦物件建立,它就不能用於啟動連線到不同的管理伺服器。 -
使用此連線 (
Ndb_cluster_connection
) 的Ndb
物件無法重複使用以連線到不同的叢集管理伺服器(因此無法連線到組成叢集的不同資料節點集合)。任何給定的Ndb
執行個體在建立時會繫結到特定的Ndb_cluster_connection
,而該Ndb_cluster_connection
又在建立時繫結到單一且唯一的管理伺服器。(請參閱Ndb 類別建構函式。)
先前描述的繫結在相關的
Ndb
和Ndb_cluster_connection
物件的生命週期內持續存在。
因此,在設計和實作任何在單一工作階段中存取多個叢集的應用程式時,務必為連線到每個叢集管理伺服器建立個別的 Ndb_cluster_connection
和 Ndb
物件,且不得混淆使用哪個物件來存取哪個 NDB 叢集。
同樣重要的是要記住,不同的叢集之間不可能直接「共用」資料或資料節點。一個資料節點只能屬於一個叢集,且叢集之間的所有資料移動都必須在應用程式層級完成。
如需示範如何在單一應用程式中建立和使用連線到兩個不同叢集的範例,請參閱第 2.5.3 節:「使用同步交易和多個叢集的 NDB API 範例」,以及第 3.6.2 節:「使用多個叢集的 MGM API 事件處理」。