NoSQLハンドルの取得
Oracle NoSQL Databaseドライバを使用した表へのアクセス方法について学習します。NoSQLハンドルを作成することにより、アプリケーションの開発を開始します。NoSQLHandleを使用して表にアクセスし、すべての操作を実行します。
NoSQLHandleで表される接続を作成するには、NoSQLHandleFactory.createNoSQLHandle
メソッドとNoSQLHandleConfig
クラスを使用してハンドルを取得します。NoSQLHandleConfig
クラスを使用すると、アプリケーションでハンドル構成を指定できます。詳細は、Java APIリファレンス・ガイドを参照してください。
/* Configure a handle for the desired Region and AuthorizationProvider.
* By default this SignatureProvider constructor reads authorization
* information from ~/.oci/config and uses the default user profile and
* private key for request signing. Additional SignatureProvider
* constructors are available if a config file is not available or
* desirable.
*/
AuthorizationProvider ap = new SignatureProvider();
/* Use the us-ashburn-1 region */
NoSQLHandleConfig config = new NoSQLHandleConfig(Region.US_ASHBURN_1, ap);
config.setAuthorizationProvider(ap);
/* Sets a default compartment for all requests from this handle. This
* may be overridden in individual requests or by using a
* compartment-name prefixed table name.
*/
config.setDefaultCompartment("mycompartment");
// Open the handle
NoSQLHandle handle = NoSQLHandleFactory.createNoSQLHandle(config);
// Use the handle to execute operations
ハンドルには、メモリーとネットワーク・リソースがあります。ハンドルを使用してアプリケーションを完了するときには、NoSQLHandle.close
メソッドを使用してリソースを解放する必要があります。
ネットワーク・アクティビティおよびリソースの割当てと割当て解除のオーバーヘッドを最小限に抑えるために、ハンドルを繰り返し作成してクローズすることは避けるのが賢明です。たとえば、操作のたびにハンドルを作成およびクローズすると、アプリケーションのパフォーマンスが低下します。1つのハンドルで同時操作が許可されているため、マルチスレッド・アプリケーションの表にアクセスするには、1つのハンドルで十分です。複数のハンドルを作成してもパフォーマンス上の利点はまったくありません。
ハンドルは、最初にborneo.NoSQLHandleConfig
インスタンスを作成して、通信エンドポイント、認可情報、およびハンドル構成のデフォルト値を構成することで作成されます。borneo.NoSQLHandleConfig
は、サービスへの接続を表します。作成後は、リソースをクリーンアップするために、メソッドborneo.NoSQLHandle.close()
を使用してクローズする必要があります。ハンドルはスレッドセーフで、共有するためのものです。
from borneo import NoSQLHandle, NoSQLHandleConfig, Regions
from borneo.iam import SignatureProvider
# create AuthorizationProvider
provider = SignatureProvider()
# create handle config using the correct desired region
# as endpoint, add a default compartment.
config = NoSQLHandleConfig(Regions.US_ASHBURN_1).
set_authorization_provider(provider).
set_default_compartment('mycompartment')
# create the handle
handle = NoSQLHandle(config)
ノート:
ハンドル作成のリソース使用率とオーバーヘッドを削減するには、borneo.NoSQLHandle
インスタンスの作成やクローズが過剰に発生しないようにすることをお薦めします。
go
アプリケーションの最初のステップは、サービスへのリクエストの送信に使用されるnosqldb.Client
ハンドルを作成することです。クライアントハンドルのインスタンスは、複数のgoroutinesによる同時使用に安全であり、マルチゴロチンアプリケーションで共有されることを意図しています。ハンドルは、資格証明およびその他の認証情報を使用して構成されます。provider, err := iam.NewSignatureProviderFromFile(cfgfile, profile, passphrase, compartment)
cfg := nosqldb.Config
{
Region: "us-phoenix-1", AuthorizationProvider: provider,
}
client, err := nosqldb.NewClient(cfg)
// use client for all NoSQL DB operations
NoSQLClient
クラスは、サービスへのメイン・アクセス・ポイントを表します。NoSQLClient
のインスタンスを作成するには、適切な構成情報を指定する必要があります。この情報はConfig
オブジェクトで表され、NoSQLClient
クラスのコンストラクタに提供できます。または、この情報をJSON構成ファイルに格納し、NoSQLClient
コンストラクタをそのファイルへのパス(絶対パスまたはアプリケーションの現在のディレクトリに対する相対パス)とともに格納することもできます。メソッドの詳細は、NoSQLClientクラスを参照してください。
Config
オブジェクトを使用してCloud ServiceのNoSQLClient
のインスタンスを作成します。また、デフォルトのコンパートメントが追加され、構成オブジェクトのデフォルトのタイムアウト値がオーバーライドされます。import { NoSQLClient, Region } from 'oracle-nosqldb';
let client = new NoSQLClient({
region: Region.US_ASHBURN_1,
timeout: 20000,
ddlTimeout: 40000,
compartment: 'mycompartment',
auth: {
iam: {
configFile: '~/myapp/.oci/config',
profileName: 'Jane'
}
}
});
2番目の例では、同じ構成をJSONファイルconfig.JSON
に格納し、それを使用してNoSQLClient
インスタンスを作成します。
{
"region": "US_ASHBURN_1",
"timeout": 20000,
"ddlTimeout": 40000,
"compartment": "mycompartment",
"auth": {
"iam": {
"configFile": "~/myapp/.oci/config",
"profileName": "Jane"
}
}
}
import { NoSQLClient } from 'oracle-nosqldb';
let client = new NoSQLClient('config.json');
クラスNoSQLClient
は、サービスへのメイン・アクセス・ポイントを表します。NoSQLClient
のインスタンスを作成するには、適切な構成情報を指定する必要があります。この情報は、NoSQLClient
のコンストラクタにインスタンスを提供できるNoSQLConfig
クラスで表されます。または、構成情報をJSON構成ファイルに格納し、そのファイルへのパス(絶対パスまたは現在のディレクトリに対する相対パス)を取得するNoSQLClient
コンストラクタを使用することもできます。
NoSQLConfig
を使用してCloud ServiceのNoSQLClient
のインスタンスを作成します。また、デフォルトのコンパートメントが追加され、NoSQLConfig
のデフォルトのタイムアウト値がオーバーライドされます。var client = new NoSQLClient(
new NoSQLConfig
{
Region = Region.US_ASHBURN_1,
Timeout = TimeSpan.FromSeconds(10),
TableDDLTimeout = TimeSpan.FromSeconds(20),
Compartment = "mycompartment",
AuthorizationProvider = new IAMAuthorizationProvider(
"~/myapp/.oci/config", "Jane")
});
2番目の例では、同じ構成をJSONファイルconfig.JSON
に格納し、それを使用してNoSQLClient
インスタンスを作成します。
config.json
{
"Region": "us-ashburn-1",
"Timeout": 20000,
"TableDDLTimeout": 40000,
"compartment": "mycompartment",
"AuthorizationProvider":
{
"AuthorizationType": "IAM",
"ConfigFile": "~/myapp/.oci/config",
"ProfileName": "Jane"
}
}
var client = new NoSQLClient("config.json");
関連項目