今週始め Microsoft の Cihan Biyikoglu 氏は,近く登場する SQL Azure フェデレーション (Federation) の接続モデルをサポートするために,開発者たちが自身のコードを適応させる方法に関する プレビューを公開 した。SQL Azure フェデレーションでは,連合データ (Federated Data) を扱うための FILTERING と呼ばれる新たな接続方法の導入と,完全可用性をサポートする再パーティショニングコンポーネントの提供が予定されている。今回のプレビューは開発者に対して,連合データおよび/あるいはマルチテナント型のアプリケーションを扱う上での安全なモデルの提供を意図したものだ。
SQL Azure フェデレーション以前のデータ断片化
SQL Azure Federation のリリースを前にした今日の Azure 開発者とアーキテクトたちには,フェデレーションデータを扱う上で克服しなければならない大きな課題が2つある – コネクションプール管理とキャッシュ一貫性 (Coherency) だ。コネクションプール管理する上で,開発者の最大の関心事は断片化 (Fragmentation) である。コネクションには時間の経過によって無効になる性質があるからだ。データが断片を移動する間,キャッシュ一貫性を維持することは難しく,開発者には移動の発生に同期して断片のマップを正しく扱う賢明さが要求される。
フェデレーションがもたらすもの
フェデレーションは断片化された個々のコネクション管理から開発者を開放し,代わって Cihan の下記プレビューにあるような USE FEDERATION 文を提供する。
USE FEDERATION orders_federation(customer_id=55) WITH RESET, FILTERING=ON
フィルタリングを有効にすることにより,希望する述語 (Predicate) が開発者に代わって自動的に適用される。例では customer_id=55 がそれである。フィルタリングを無効に設定する必要があるのは,バルク操作を実行する場合や,多数のアトミックなデータクエリを実行する場合などに限定される。
フェデレーションの備える断片化機能は,アプリケーションのマルチテナント化も強力にサポートするものと考えられる。時間が経つにつれ,維持管理の必要なデータベースの個数を減少する効果をもたらすことだろう。SQL Azure チームからは,SQL Azure フェデレーションのリリース期日はまだ発表されていない。