ストアへの接続

ストア操作を実行するには、クライアント・コードとストア間にネットワーク接続を確立する必要があります。提供する必要のある3つの情報があります。

  • ストアの名前。ここで指定する名前は、ストアをインストールしたときに使用した名前と同一である必要があります。

  • 1つ以上のヘルパー・クラスのネットワーク・アクセス情報。これらは、ストアで現在実行されているノードのネットワーク名とポート情報です。複数のノードを指定できます。1つでも複数でも使用できます。数が多いことによる影響はありません。1つの場合は選択されたホストが一時的にダウンする可能性があるので、複数の使用をお薦めします。

  • プロキシが実行されているホストとポートを識別します。これは、構成オブジェクトを使用して行うこともできます。

セキュア・ストアに接続する場合は、いくつかの認証情報も指定する必要があります。プロキシ・サーバーのセキュリティ・プロパティの設定を参照してください。

たとえば、"kvstore"という名前のOracle NoSQL Databaseストアがあり、そのノードがn1.example.orgのポート5000で実行されているとします。さらに、ポート7010を使用してローカルホストでプロキシを実行しているとします。さらに、次の方法でストアへの接続をオープンおよびクローズします。

//Include nosqldb-oraclejs module
var nosqldb = require('nosqldb-oraclejs');

// Create a configuration object
var configuration = new nosqldb.Configuration();
configuration.proxy.startProxy = false;
configuration.proxy.host = 'localhost:7010';
configuration.storeHelperHosts = ['n1.example.org:5000'];
configuration.storeName = 'kvstore';

// Create a store with the specified configuration
var store = nosqldb.createStore(configuration);

store.on('open', function () {
  console.log('Store opened.');
  // Perform store operations here
  store.close();
}).on('close', function() {
  console.log('Store closed.');
  store.shutdownProxy();
}).on('error', function(error) {
  console.log('Error in the store.');
  console.log(error);
});
store.open(); 

セキュア・ストアへの接続

セキュア・ストアを使用している場合、ストアに対する認証を行うようにプロキシ・サーバーを最初に構成する必要があります。詳細は、Oracle NoSQL Databaseプロキシ・サーバーの保護を参照してください。

プロキシ・サーバーがセキュア・ストアにアクセスできるようになったら、少なくとも、ストアへのアクセスを実行するときにドライバが認証を必要とするユーザーを指定する必要があります。これを行うには、configuration.usernameを使用します。

セキュア・ストアの使用方法の詳細は、セキュア・ストアの使用を参照してください。

//Include nosqldb-oraclejs module
var nosqldb = require('nosqldb-oraclejs');

// Create a configuration object
var configuration = new nosqldb.Configuration();
configuration.proxy.startProxy = false;
configuration.proxy.host = 'localhost:7010';
configuration.storeHelperHosts = ['n1.example.org:5000'];
configuration.storeName = 'kvstore';
configuration.username = 'jsapp-username';

// Create a store with the specified configuration
var store = nosqldb.createStore(configuration);

store.on('open', function () {
  console.log('Store opened.');
  // Perform store operations here
  store.close();
}).on('close', function() {
  console.log('Store closed.');
  store.shutdownProxy();
}).on('error', function(error) {
  console.log('Error in the store.');
  console.log(error);
});
store.open(); 

プロキシ・サーバーの自動的な起動

クライアント・コードは、configuration.proxy.startProxyを使用してストアを開く際にローカル・ホストでプロキシ・サーバーを起動できます。これを行うには、その値をtrueに設定し、configuration.proxy.KVPROXY_JARを使用してkvproxy.jarの場所も指定します。また、configuration.proxy.KVCLIENT_JARを使用してkvclient.jarの場所を指定します。

次に例を示します。

var nosqldb = require('nosqldb-oraclejs');
var configuration = new nosqldb.Configuration();
configuration.proxy.startProxy = true;
configuration.proxy.host = 'localhost:7010';
configuration.proxy.KVCLIENT_JAR = 
            'node_modules/kvproxy/kvclient.jar';
configuration.proxy.KVPROXY_JAR = 
            'node_modules/kvproxy/kvproxy.jar';
configuration.storeHelperHosts = ['n1.example.org:5000'];
configuration.storeName = 'kvstore';

var store = nosqldb.createStore(configuration);

store.on('open', function () {
  console.log('Store opened.');
  // Perform store operations here
  store.close();
}).on('close', function() {
  console.log('Store closed.');
  store.shutdownProxy();
}).on('error', function(error) {
  console.log('Error in the store.');
  console.log(error);
});
store.open(); 

プロキシがセキュア・ストアに接続している場合は、認証対象のユーザーも指定する必要があります。また、セキュリティ・プロパティ・ファイルがプロキシ・サーバーが実行されているホスト上のどこにあるかを指定する必要があります。これを行うには、configuration.usernameおよびconfiguration.proxy.securityFileを使用します。

var nosqldb = require('nosqldb-oraclejs');
var configuration = new nosqldb.Configuration();
configuration.proxy.startProxy = true;
configuration.proxy.host = 'localhost:7010';
configuration.proxy.KVCLIENT_JAR = 
            'node_modules/kvproxy/kvclient.jar';
configuration.proxy.KVPROXY_JAR = 
            'node_modules/kvproxy/kvproxy.jar';
configuration.storeHelperHosts = ['n1.example.org:5000'];
configuration.storeName = 'kvstore';
configuration.username = 'jsapp-username';
configuration.proxy.securityFile = 'KVROOT/security/client.security';

var store = nosqldb.createStore(configuration);

store.on('open', function () {
  console.log('Store opened.');
  // Perform store operations here
  store.close();
}).on('close', function() {
  console.log('Store closed.');
  store.shutdownProxy();
}).on('error', function(error) {
  console.log('Error in the store.');
  console.log(error);
});
store.open(); 

セキュア・ストアに接続するようにプロキシ・サーバーを構成する方法の詳細は、Oracle NoSQL Databaseプロキシ・サーバーの保護を参照してください。

Configurationクラス

Configurationクラスは、Storeハンドルのプロパティを記述するのに使用されます。ほとんどのプロパティはオプションですが、ストア名とヘルパー・ホストを指定する必要があります。

Configurationを使用して指定できるプロパティは次のとおりです。

  • connectionAttempts

    失敗するまでドライバがサーバーへの接続を試行する回数。

  • defaultConsistency

    一貫性は、レプリカ・ノードから読み取られたレコードがマスター・ノードに格納されている同じレコードと同一であることを表すプロパティです。一貫性保証を参照してください。

  • defaultDurability

    永続性は、マスター・ノードで実行される書込み操作が、マスター・ノードに障害が起きたり、異常終了した場合でも失われないことを表すプロパティです。永続性保証を参照してください。

  • iteratorBufferSize

    イテレータまたはストリームによってバッファされる行の数。

  • proxy

    プロキシ・サーバーの構成。次の項を参照してください。

  • readZones

    読取りゾーンとして使用するゾーン名の配列。管理者ガイドを参照してください。

  • requestTimeout

    クライアントが操作の完了を待つ、タイムアウトまでの時間を構成します。

  • storeHelperHosts

    ヘルパー・ホストは、ストア内のノードにアクセスする場所を識別するホスト名とポートのペアです。複数のホストは、文字列の配列を使用して識別できます。通常、アプリケーション開発者は、これらのホスト名/ポートのペアの情報を、ストアの開発者または管理者から入手します。次に例を示します。

    var config = new nosqldb.Configuration();
    config.storeHelperHosts=['n1.example.org:3333','n2.example.org:3333']
  • storeName

    ストアの名前を識別します。

  • username

    ストアに対して認証するユーザーの名前。このプロパティは、セキュア・ストアに接続するようにプロキシ・サーバーを構成する場合にのみ使用します。

ProxyConfigurationクラス

ProxyConfigurationクラスは、ストアへの接続に使用するプロキシ・サーバーに関するプロパティを記述するために使用されます。

設定する最も一般的なプロパティを次に示します。完全なリストは、Node.jsドライバAPIリファレンスを参照してください。

  • startProxy

    プロキシ・サーバーがまだ実行されていない場合に、ドライバがプロキシ・サーバーを自動的に起動するかどうかを示すブール。

  • host

    プロキシ・サーバーに接続するために使用するhostname:portペア。

  • securityFile

    セキュア・ストアへの接続に必要なセキュリティ情報を含むプロパティ・ファイル。セキュア・ストアおよびセキュリティ・プロパティの詳細は、プロキシ・サーバーのセキュリティ・プロパティの設定を参照してください。

  • KVCLIENT_JAR

    kvclient.jarファイルが配置された場所へのパス。この情報は、プロキシ・サーバーを自動的に起動しようとする場合にのみ必要です。

  • KVPROXY_JAR

    kvproxy.jarファイルが配置された場所へのパス。この情報は、プロキシ・サーバーを自動的に起動しようとする場合にのみ必要です。