Open棟梁Project - マイクロソフト系技術情報 Wiki
...工事中...
目次 †
概要 †
RDBMSでのステートフルなデータ処理では難しかった、
拡張性+弾力性をアプリケーションに提供する。
- スケールアウト(水平分散)が可能
- アプリケーションをマルチテナント化する。
- インスタンス横断なトランザクション処理(ACID)
- その際に、アプリケーションの変更は不要。
(ただし、Elastic database client libraryで作成し直す必要がある)
機能 †
Elastic Database tools †
- DB シャーディングの構築と管理。
- 2種類のツールが存在する。
Elastic Database Client Library †
DB シャーディングのクライアント・アプリケーションの開発。
Elastic Database Split-merge tool †
- DB シャーディングのスケールアウト(スケールイン)
- シャード マップの再構築などを行う。
Elastic Database Pools †
- 一定量のDTU (Database Throughput Unit)の管理をする。
- 大量のElastic Database Poolsの性能・コスト管理を容易にする。
- ポータル、PowerShell、.NETライブラリを使用して、
Elastic Database Poolsを管理することができる。
Elastic Database Jobs †
Elastic database client library を使用し、
- Elastic Database Pool と shard setの全データベース横断のTransact-SQL (T-SQL)を実行できる。
- なお、このクエリは、DMLだけではなく、DDL、運用・保守タスクも実行できる。
- スキーマ変更
- 資格情報管理
- 参照データの更新
- パフォーマンスデータの収集
- テナント(顧客)遠隔操作
Elastic Database query †
Elastic database client library を使用し、
- Elastic Database Pool と shard setの全データベース横断のTransact-SQL (T-SQL)を実行できる。
- Microsoftとサードパーティ製のBIツール(Excel, PowerBI, Tableau, etc.)に接続から接続し、データベースを跨いだリモートテーブルへのアクセスが可能。
水平および垂直方向のスケーリング †
クラウド規模のデータベース アプリケーションでは、
容量または全体のパフォーマンスを調整するために、
2 つのスケーリング手法を組み合わせて使用する。
水平方向のスケーリング †
Elastic Database Poolsから、データベースを追加または削除する。
これは、Elastic database client libraryで管理する。
垂直方向のスケーリング †
個々のデータベースのパフォーマンス レベルを増減する。
これには、以下の方法で対応する。
- Azure PowerShell コマンドレットを使用する。
- Elastic Database Poolsのデータベースのパフォーマンス レベルを変更する。
シングルテナント パターンとマルチテナント パターン †
- スケールアウトを目的とする。
- マルチテナント化を目的とする。
※ SaaSのユーザや企業をテナントと呼ぶ。
シングルテナント パターン †
- 各データベース・インスタンスは
特定のテナント ID 値 (または顧客キー値) に関連付けられる。
- テナント ID 値 (または顧客キー値) がデータに存在する必要は無い。
- 要求をデータベースにルーティングするのはアプリケーションの役目。
Elastic database client libraryはこの作業を簡素化できる。
マルチテナント パターン †
参考 †
サンプル †
以下の処理を実行する。
前提 †
- Azure SQL database (V12 servers)
- Visual Studio 2012 or higher with C# is required.
- .NET Framework 4.5 or a later version
- Nuget 2.7 or higher.
- Elastic database client library
Azure SQL databasesの準備 †
Azure SQL databasesの作成 †
- Azure portalからSQL databases(naned ElasticDatabase?)を作成する。
接続文字列を設定する。 †
- ElasticDatabase?をクリックする。
- ダッシュボードから接続文字列を取得する。
ShardMap? †
ShardMap?の作成 †
- 以下のコードは、ShardMap?を作成するためのもの。
- オプションで追加のShardMap?を追加できる。
ShardMap?の確認 †
追加されたShardMap?(SQL ServerのInstance)を確認。
Dependent Routing classで行を挿入 †