ストアへの接続

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

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

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

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

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

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

from nosqldb import ConnectionException
from nosqldb import Factory
from nosqldb import StoreConfig

import logging
import sys

storehost = "n1.example.org:5000"
proxy = "localhost:7010"

# configure and open the store
def open_store():
    try:
        kvstoreconfig = StoreConfig('kvstore', [storehost])
        return Factory.open(proxy, kvstoreconfig)
    except ConnectionException, ce:
        logging.error("Store connection failed.")
        logging.error(ce.message)
        sys.exit(-1) 

Factory.open()は、ストアに対するほとんどの操作を実行するために使用するStoreクラス・オブジェクトを返します。このハンドルを使用したら、close()メソッドを使用して閉じます。

store = open_store()

...
# Do store operations here
...

store.close() 

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

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

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

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

# configure and open the store
def open_store():
    try:
        kvstoreconfig = StoreConfig('kvstore', [storehost])
        kvstoreconfig.set_user("pythonapp-user")
        return Factory.open(proxy, kvstoreconfig)
    except ConnectionException, ce:
        logging.error("Store connection failed.")
        logging.error(ce.message)
        sys.exit(-1) 

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

まだ動作していない場合、kvclient.jarファイルとkvproxy.jarファイルを検出できるかぎり、ストアを開くときに、クライアント・コードによってローカル・ホスト上のプロキシ・サーバーが自動的に起動されます。これらはnosqldbドライバをインストールするときに自動的にインストールされるため、ドライバによってプロキシ・サーバーが自動的に起動されるようにするために、通常は何も追加しないでください。

ただし、標準以外の場所にnosqldbドライバをインストールした場合、またはシステムにインストールされているデフォルトのjarファイルをオーバーライドする場合は、これらのjarファイルが存在するドライバに明示的に指定できます。

  1. これらがProxyConfigコンストラクタのパラメータとして指定されている場合、その場所が使用されます。

  2. この情報がコンストラクタに対して指定されていない場合は、KVSTORE_JARおよびKVPROXY_JARの環境変数から取得されます。

  3. 前述のいずれのメソッドも使用されていない場合、ドライバは、<python-site-packages-dir>/nosqldb/kvproxy/libにインストールされているデフォルトのjarファイルを使用します

次の例では、2つの環境変数は次のように定義されます。

export KVSTORE_JAR="/d1/nosqldb-x.y.z/kvproxy/lib/kvclient.jar"
export KVPROXY_JAR="/d1/nosqldb-x.y.z/kvproxy/lib/kvproxy.jar"

これらの環境変数が設定されているため、ProxyConfigコンストラクタはjarファイルの場所としてこれらを自動的に使用します。

# configure and open the store
def open_store():

    kvstoreconfig = StoreConfig('kvstore', [kvlite])
    kvproxyconfig = ProxyConfig()

    return Factory.open(proxy, kvstoreconfig, kvproxyconfig)

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

# configure and open the store
def open_store():

    kvstoreconfig = StoreConfig('kvstore', [kvlite])
    kvstoreconfig.set_user("pythonapp-user")
    kvproxyconfig = ProxyConfig()
    kvproxyconfig.set_security_properties_file("/etc/proxy/sec.props")

    return Factory.open(proxy, kvstoreconfig, kvproxyconfig)

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

StoreConfigクラス

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

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

  • set_consistency()

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

  • set_durability()

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

  • set_max_results()

    イテレータがバッファリングする行数。

  • set_read_zones()

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

  • set_request_timeout()

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

  • set_helper_hosts()

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

    conf.set_helper_hosts(['n1.example.org:3333','n2.example.org:3333'])
  • set_store_name()

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

  • set_user()

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

ProxyConfigクラス

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

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

  • set_security_props_file()

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

  • set_kv_store_path_to_jar()

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

  • set_kv_proxy_path_to_jar()

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