SQL Azure 聯邦(Federations) 功能介紹

在雲端運算的世界,關聯式資料庫的定位與應用一直有許多討論(可參考:Is the Relational Database Doomed?)。SQL Azure目前提供的最大容量是50GB,針對需要大型資料庫的應用系統可能會覺得不夠,或者需要大量資料存取的應用系統可能也會希望有方式可以提高存取效能。

因此針對SQL Azure的系統延展性(Scalability)需求一般建議會透過Shard的設計技巧來滿足。所謂Shard就是將資料切分成一個個小組(small chunks),再將各小組分佈到多個SQL Azure Instance上。透過適當的邏輯切分讓資料的查詢與更新需求盡可能平均分配到每個Instance上。實際上做法會先定義資料的Sharding Key(通常對應到資料的Primary Key),透過Sharding Key將資料分組依固定邏輯(如地區別)放到多個資料庫。

資料庫Sharding的好處是系統可以透過Scale Out的方式成長,隨著資料量的增加只要在加購SQL Azure Instance就可以擴展資料庫,同時也可以透過資料庫Instance的增加將資料庫存取運算分擔到多台機器上,通常這種擴展方式也可以減少採購高規格硬體的需求,減少建置成本。

但缺點是自行建置Sharding的資料庫對應用程式的設計帶來相當的複雜度,為了解決這個問題SQL Azure在下一版會增加聯邦(Federations)功能。

 在SQL Azure聯邦(Federations)中有以下幾個元素:

  • Federation: 代表被Shard的資料,如客戶資料
  • Federation Key: 代表用來決定資料分布的Key值,客戶ID
  • Atomic Unit: 代表有相同Federation Key的資料,也就是會被放在一起的資料
  • Federation Member: 包含一群Atomic Unit的群組,如客戶ID1~100跟100~488,分別為兩組Federation Member
  • Root: 包含整個Federatoin 目錄的資料庫

在SQL Azure Federations功能下,資料庫Sharding可以透過SQL 語法來管理跟使用(如Federation建置、資料分割、合併、Schema定義),減少應用程式去實做Sharding機制的負擔。

目前SQL Azure Federation 預計在2011年年底上市,屆時想在Azure平台上建置大型資料庫應用的客戶將可以透過此技術來降低開發成本並提高應用程式效能。