聯盟資料庫伺服器計畫指導方針
建立資料庫伺服器聯盟,包括設計一組跨伺服器散佈資料的分散式資料分割檢視。如果資料庫中的資料表是分配到相似的資料分割中,在這些資料分割中,任何 SQL 陳述式所要存取的大部份資料列都可以放置在相同的成員伺服器上,則資料分割可以正常的作業。以相關聯的單位叢集資料表。例如,假設某個訂單項目參考 Orders、Customers 與 Parts 資料表,以及所有記錄了客戶、訂單與零件之間關聯性的資料表。如果在邏輯叢集中的所有資料列可以放置在相同成員伺服器上,則資料分割可以達到最佳的執行效果。
對稱式資料分割
如果可以利用下列方式,對稱分割資料庫中的所有資料表,則資料分割可以達到最佳效率:
將關聯的資料放置在相同的成員伺服器上,如此一來,大多數 SQL 陳述式會連線到正確成員伺服器的路徑,且需要用到位於其他成員伺服器上資料的情形 (如果有的話) 將會降到最低。分散式的資料分割檢視之設計目標,可以用 80/20 規則來說明:設計資料分割,使大多數的 SQL 陳述式可以連接到至少具有百分之八十的資料的成員伺服器,而只有百分之二十或更少的資料需要執行分散式查詢。您可以藉由檢視資料分割是否允許將所有資料列,以及其參考的所有外部索引鍵資料列,放置在相同成員伺服器上,來檢驗是否能達成上述目標。可以支援此目標的資料庫設計才適合做資料分割。
資料是均勻地分割並放置在所有成員伺服器上。
例如,假設某公司將北美地區分成若干區域。每個員工各在一個區域工作,而客戶則在他們所居住的州進行大多數購買行為。依據區域來分割 region 與 employee 資料表。依據客戶所居住的州,來分割其區域。雖然某些查詢需要來自多個區域的資料,但是大多數查詢所需的資料是位於伺服器上的某個單一區域。應用程式會依據使用者輸入的內容,將 SQL 陳述式傳送到包含此區域的成員伺服器。
非對稱式資料分割
雖然對稱式資料分割是理想的目標,但是大多數應用程式都具有複雜的資料存取模式,因此無法使用對稱式資料分割。非對稱式資料分割會導致一些成員伺服器採用比其他成員伺服器還要大的角色。例如,資料庫中只有一部份的資料表可以進行分割,未被分割的資料表會保留在原來的伺服器上。非對稱式資料分割可以提供比對稱式資料分割更好的效能,以及下列重要優點:
將資料庫中部份無法進行對稱性資料分割的資料表以非對稱性的方式分割,可以大幅提升資料庫的效能。
執行一系列反覆的、非對稱性改進,可以成功地對現有的大型系統進行資料分割。在每個步驟中所選擇進行分割的資料表,通常是在該時間中可以提供最高效能的資料表。
在非對稱性作業的過程中,原始伺服器通常會保留一些不適合分割結構描述的資料表。這些留下來的資料表之效能通常比在原有系統中更加快速,這是因為成員資料表已經移動到成員伺服器,降低了原始伺服器上的負載。
許多資料庫可以用一種以上的方式進行資料分割。指定用來實作的資料分割,必須最能符合商業服務層所執行之一般範圍 SQL 陳述式的需求。