Java アプリケーションからエラスティック プールの Azure SQL データベースを管理するManage Azure SQL databases in elastic pools from your Java applications

このサンプルでは、1 つのプランで複数のデータベースのリソースを管理したりスケーリングしたりできるエラスティック プールを使って SQL データベース サーバーを作成します。This sample creates a SQL database server with an elastic pool to manage and scale resources for mulitple databases in a single plan.

サンプルを実行するRun the sample

認証ファイルを作成し、そのファイルのコンピューター上における完全なパスを保持する環境変数 AZURE_AUTH_LOCATION を設定します。Create an authentication file and set an environment variable AZURE_AUTH_LOCATION with the full path to the file on your computer. 次に、以下を実行します。Then run:

git clone https://github.com/Azure-Samples/sql-database-java-manage-sql-dbs-in-elastic-pool
cd sql-database-java-manage-sql-dbs-in-elastic-pool
mvn clean compile exec:java

GitHub で完全なコード サンプルを見るView the complete code sample on GitHub

Azure での認証Authenticate with Azure

認証ファイルを作成し、環境変数 AZURE_AUTH_LOCATION と認証ファイルの完全なパスをコマンド ラインでエクスポートします。Create an authentication file and export an environment variable AZURE_AUTH_LOCATION on the command line with the full path to the file.

export AZURE_AUTH_LOCATION=/Users/raisa/azure.auth

Azure リソースを定義、作成、構成するために管理ライブラリで使用されるエントリ ポイント Azure オブジェクトを構成するために、この認証ファイルが使用されます。The authentication file is used to configure the entry point Azure object used by the management libraries to define, create, and configure Azure resources.

// pull in the location of the security file from the environment 
final File credFile = new File(System.getenv("AZURE_AUTH_LOCATION"));

Azure azure = Azure
        .configure()
        .withLogLevel(LogLevel.NONE)
        .authenticate(credFile)
        .withDefaultSubscription();

Azure Management Libraries for Java を使用する際の認証オプションの詳細については、こちらを参照してください。Learn more about authentication options when using the Azure management libraries for Java.

エラスティック プールを使用した SQL Database サーバーの作成Create a SQL database server with an elastic pool

SqlServer sqlServer = azure.sqlServers().define(sqlServerName)
                    .withRegion(Region.US_EAST)
                    .withNewResourceGroup(rgName)
                    .withAdministratorLogin(administratorLogin)
                    .withAdministratorPassword(administratorPassword)
                    // Use ElasticPoolEditions.STANDARD as the edition
                    // and create two databases
                    .withNewElasticPool(elasticPoolName, ElasticPoolEditions.STANDARD, 
                        database1Name, database2Name)
                    .create();

現在のエディションの値については、ElasticPoolEditions クラスのリファレンスを参照してください。See the ElasticPoolEditions class reference for current edition values. エディションごとのリソース特性を比較するには、SQL データベースのエラスティック プールに関するドキュメントを参照してください。Review the SQL database elastic pool documentation to compare edition resource characteristics.

エラスティック プールのデータベース トランザクション ユニット (DTU) 設定の変更Change Database Transaction Unit (DTU) settings in an elastic pool

// Set an pool of 200 eDTUs to share between the databases
// and ensure that a database always has 10 DTUs available but never uses more than 50
elasticPool = elasticPool.update()
                    .withDtu(200)
                    .withDatabaseDtuMin(10)
                    .withDatabaseDtuMax(50)
                    .apply();

SQL データベースへのリソース割り当ての詳細については、DTU と eDTU のドキュメントを参照してください。Review the DTUs and eDTUs documentation to learn more about allocating resources to SQL databases.

新しいデータベースの作成とエラスティック プールへの追加Create a new database and add it to an elastic pool

// Add a newly created database to the elastic pool
SqlDatabase anotherDatabase = sqlServer.databases().define(anotherDatabaseName).create();
elasticPool.update().withExistingDatabase(anotherDatabase).apply();            

この API は、先頭のステートメントで、S0 レベルanotherDatabase を作成しています。The API creates anotherDatabase at S0 tier in the first statement. anotherDatabase をエラスティック プールに移動すると、そのプールの設定に基づいて、データベース リソースが割り当てられます。Moving anotherDatabase to the elastic pool assigns the database resources based on the pool settings.

エラスティック プールからのデータベースの削除Remove a database from an elastic pool

// Assign an edition since the database resources are no longer managed in the pool 
anotherDatabase = anotherDatabase.update()
                     .withoutElasticPool()
                     .withEdition(DatabaseEditions.STANDARD)
                     .apply();

withEdition() に渡す値については、DatabaseEditions クラスのリファレンスを参照してください。See the DatabaseEditions class reference for values to pass to withEdition().

エラスティック プールにおける現在のデータベース アクティビティの列挙List current database activities in an elastic pool

// get a list of in-flight elastic operations on databases in the pool and log them 
for (ElasticPoolDatabaseActivity databaseActivity : elasticPool.listDatabaseActivities()) {
    System.out.println("Database " + databaseActivity.databaseName() 
        + " performing operation " + databaseActivity.operation() + 
        " with objective " + databaseActivity.requestedServiceObjective());
}

データベース アクティビティには、エラスティック プール内のデータベースの追加、削除、更新が含まれます。Database activities include moving a database in or out of an elastic pool and updating databases in an elastic pool.

エラスティック プール内のデータベースの一覧表示List databases in an elastic pool

// Log a list of databases in the elastic pool 
for (SqlDatabase databaseInServer : elasticPool.listDatabases()) {
    System.out.println(databaseInServer.name());
}

データベースを照会するための各種メソッドについて詳しくは、com.microsoft.azure.management.sql.SqlDatabase を参照してください。Review the methods in com.microsoft.azure.management.sql.SqlDatabase to query the databases in more detail.

エラスティック プールの削除Delete an elastic pool

sqlServer.elasticPools().delete(elasticPoolName);

エラスティック プールを削除するには、あらかじめそのエラスティック プールを空にしておく必要があります。The elastic pool must be empty before deleting it.

サンプル コードの概要Sample code summary.

このサンプルは、単一のエラスティック プールで管理される 2 つのデータベースを含んだ SQL サーバーを作成します。The sample creates a SQL server with two databases managed in a single elasic pool. エラスティック プール リソースの制限を更新したうえで、別のデータベースをプールに追加しています。The elastic pool resource limits are updated, then additional databases are added to the pool. その後、エラスティック プールの構成と状態を読み込みます。The code then reads the elastic pool's configuration and state.

このサンプルで作成したリソースは、終了前にすべて削除されます。The sample deletes all resources it created before exiting.

サンプルで使われているクラスClass used in sample メモNotes
SqlServerSqlServer Azure における SQL DB サーバー。azure.sqlServers().define()...create() という fluent チェーンによって作成されます。SQL DB server in Azure created by azure.sqlServers().define()...create() fluent chain. エラスティック プールやデータベースを作成したり操作したりするためのメソッドが備わっています。Provides methods to create and work with elastic pools and databases.
SqlDatabaseSqlDatabase SQL データベースを表すクライアント側オブジェクト。Client side object representing a SQL database. sqlServer().define()...create() を使って作成します。Created through sqlServer().define()...create().
DatabaseEditionsDatabaseEditions エラスティック プールの外にデータベースを作成したり、エラスティック プールからデータベースを移動したりする際に、データベース リソースを設定するための静的な定数フィールド。Constant static fields used to set database resources when creating a database outside of an elastic pool or when moving a database out of an elastic pool
SqlElasticPoolSqlElasticPool Azure に SqlServer を作成した fluent チェーンの withNewElasticPool() セクションから作成されます。Created from the withNewElasticPool() section of the fluent chain that created the SqlServer in Azure. エラスティック プールで実行されるデータベース (またはエラスティック プールそのもの) のリソース制限を設定するためのメソッドが備わっています。Provides methods to set resource limits for databases running in the elastic pool and for the elastic pool itself.
ElasticPoolEditionsElasticPoolEditions エラスティック プールで利用可能なリソースを定義する定数フィールドのクラス。Class of constant fields defining the resources available to an elastic pool. 詳細については、SQL データベースのエラスティック プールに関するドキュメントを参照してください。See SQL database elastic pool documentation for tier details.
ElasticPoolDatabaseActivityElasticPoolDatabaseActivity SqlElasticPool.listDatabaseActivities() から取得されます。Retreived from SqlElasticPool.listDatabaseActivities(). この型のオブジェクトはそれぞれ、エラスティック プール内のデータベースに対して実行されるアクティビティを表します。Each object of this type represents an activity performed on a database in the elastic pool.
ElasticPoolActivityElasticPoolActivity SqlElasticPool.listActivities() からリスト形式で取得されます。Retrieved in a List from SqlElasticPool.listActivities(). リストに含まれる各オブジェクトは、(エラスティック プール内のデータベースではなく) エラスティック プールに対して実行されるアクティビティを表します。Each of object in the list represents an activity performed on the elastic pool (not the databases in the elastic pool).

次の手順Next steps

Azure での Java アプリの作成とデプロイの詳細については、Java デベロッパー センターを参照してください。For more information on creating and deploying Java apps on Azure, visit the Java developer center.