匯出 (0) 列印
全部展開

Azure SQL Database 中的同盟

更新日期: 2014年4月

Microsoft Azure SQL Database (Azure SQL 資料庫) 中的同盟是達成更大擴充性及管理您應用程式的資料庫層中容量限制的方法。資料庫中一或多個表格是跨多個資料庫的水平分割表格,稱為同盟成員。這種類型的水平資料分割通常稱為「分區化」。本主題提供同盟的概觀。

Important重要事項
目前的同盟實作將汰換 Web 和 Business 服務層。請考慮部署自訂的分區化解決方案以最大化擴充性、靈活性及效能。如需有關自訂分區化的詳細資訊,請參閱向外延展 Azure SQL Database

同盟架構

同盟是指同盟散發配置 (稱為同盟配置) 所定義之資料庫資料分割的集合。同盟配置會定義同盟散發索引鍵,這個索引鍵會決定如何將資料散發至同盟內的資料分割。同盟散發索引鍵必須是 INT、BIGINT、UNIQUEIDENTIFIER 或 VARBINARY (最多 900 個位元組) 並且指定範圍值。一個同盟只能有一個同盟配置和一個同盟散發索引鍵。

同盟內的資料庫資料分割稱為同盟成員,而且每個成員都會涵蓋同盟散發索引鍵之資料類型所涵蓋的部分或所有值範圍。同盟資料表是指散佈在同盟成員之間的資料表。每個同盟成員都具有自己的結構描述,並且包含對應至同盟成員之範圍的同盟資料表資料列。同盟成員中符合特定同盟索引鍵值的所有資料列集合稱為同盟不可部分完成單位。每個同盟成員都包含許多同盟自動單位。同盟成員也可以包含參考資料表,這些資料表無法感知同盟。參考資料表完全包含在成員內,而且通常包含結合同盟資料所擷取的參考資訊。

同盟成員會在它所包含的資料與其他成員中儲存的資料之間提供實體分隔。每個同盟成員都具有自己的結構描述,因此可能會由於成員特定的處理 (例如在所有成員之間執行輪流結構描述升級),暫時與其他成員的結構描述有所差異。

雖然同盟成員會以實體方式實作成資料庫,不過它們都會以邏輯方式在應用程式層當做同盟索引鍵值的範圍參考。例如,包含與同盟索引鍵值 50-100 相關聯之資料列的同盟成員資料庫就會透過指定該範圍內的索引鍵值而非指定資料庫名稱,以邏輯方式進行存取。

同盟是透過同盟根資料庫進行存取,表示同盟的應用程式界限。它會根據指定的同盟索引鍵值將連接路由至適當的同盟成員,藉以運作成要連接至同盟之應用程式的邏輯端點。每個根資料庫都可以包含多個同盟,而且每個同盟都有自己的同盟結構描述。此外,它也可以包含全域資料,例如使用者、密碼、角色或其他應用程式特定的資料。

下圖說明同盟的邏輯和實體模型:

同盟邏輯模型的圖表 同盟實體模型的圖表

設計考量

設計同盟時,其中一個最重要的設計決策就是組成同盟所依據的值。最理想的狀況是,您想要選取索引鍵,以便將多個相關資料表中的資料組成同盟,進而讓相關資料列儲存在一起。以多用戶應用程式為例,您可能會選取 tenant_id。同盟表格中指定相同 tenant_id 值的每一列會儲存在相同的同盟自動單元中。

您也必須考量如何插入新的記錄,以便平均使用所有同盟成員,而非將所有新的記錄都儲存在單一成員中。在同盟成員之間如何散發新資料的決定必須在應用程式層進行處理。

由於不同的同盟成員中包含的資料具有實體分隔,而且 SQL 資料庫 不支援跨資料庫進行聯結作業,您的應用程式必須實作邏輯以聯結來自多個同盟成員或多個同盟的資料。例如,需要聯結來自兩個同盟之資料的查詢就必須針對每個同盟執行個別的查詢,並且在應用程式內聯結資料。這點同樣適用於在單一同盟內跨多個分區彙總資料的情況,例如取得同盟所包含之所有資料列的計數。

開放規格承諾書 (Open Specification Promise)

描述用於資料分區化之其他 SQL 功能的一種新規格,現在可在 Microsoft Open Specification Promise 下取得。如需詳細資訊,請參閱 Azure SQL Database 同盟規格。

另請參閱

社群新增項目

新增
顯示:
© 2014 Microsoft