NoSQLハンドルの取得

Oracle NoSQL Databaseドライバを使用した表へのアクセス方法について学習します。NoSQLハンドルを作成することにより、アプリケーションの開発を開始します。NoSQLHandleを使用して表にアクセスし、すべての操作を実行します。

NoSQLHandleで表される接続を作成するには、NoSQLHandleFactory.createNoSQLHandleメソッドとNoSQLHandleConfigクラスを使用してハンドルを取得します。NoSQLHandleConfigクラスを使用すると、アプリケーションでハンドル構成を指定できます。詳細は、Java APIリファレンス・ガイドを参照してください。

次のコードを使用して、NoSQLハンドルを取得します:
/* 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()を使用してクローズする必要があります。ハンドルはスレッドセーフで、共有するためのものです。

Oracle NoSQL Cloud ServiceのNoSQLハンドルを取得する例:
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インスタンスの作成やクローズが過剰に発生しないようにすることをお薦めします。
Oracle NoSQL Database Cloud Serviceの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インスタンスを作成します。

サンプルconfig.jsonファイル:
{ 
"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");