Oracle NoSQL Database Cドライバのビルド手順

Oracle NoSQL Database Cドライバにより、CアプリケーションがThriftベースのプロキシ・サーバーを使用してOracle NoSQL Databaseにアクセスできるようになります。Cドライバはソース・コードとして提供されるため、ターゲット・プラットフォームに合せてビルドする必要があります。プロキシ・サーバーはこのダウンロード・パッケージにJava JARファイルとして含まれています。

このドキュメントでは、Cドライバ・ライブラリのビルド方法について説明します。アプリケーション・コードでCドライバを使用する方法の詳細は、クイック・スタート・ガイドおよびC APIリファレンスを参照してください。

  1. 「ドライバのビルドの前提条件」
  2. 「実行およびテストの前提条件」
  3. 「ドライバ・ライブラリのビルド」
  4. 「テスト」
  5. 「サンプルの実行」
  6. 「ドライバ・ライブラリのインストール」
  7. 「アプリケーションのビルドと実行」

Cドライバのビルドの前提条件

次の依存関係のいくつかは、バイナリ・ディストリビューションとして提供されないためコンパイルが必要です。

  1. CMake

    様々なLinuxディストリビューション用にすぐにインストールできるプリコンパイル済バイナリが用意されています。

    http://www.cmake.org/cmake/resources/software.html

  2. Thrift v0.9.2 for C++

    次のWebサイトからソースをダウンロードします。

    http://thrift.apache.org/download

    Thriftライブラリのビルドおよびインストールの詳細は、http://thrift.apache.org/docs/BuildingFromSourceを参照してください。前提条件は次のとおりです。

    Thriftの要件の詳細は、http://thrift.apache.org/docs/install/を参照してください

Cアプリケーションの実行およびテストの前提条件

  1. NoSQL Databaseおよびプロキシjarファイルのパス。

  2. Javaランタイム(Java 7以上、Oracle NoSQL DatabaseはJava 7で動作保証されています)。

  3. Thrift C++ライブラリのインストール。

ビルド

  1. ビルド・ディレクトリを作成します。簡単にクリーンアップできるようにすべてのビルドとCMakeアーティファクトをここに配置します。Cライブラリ・ソースの場所をCMakeに知らせるかぎり、ビルド・ディレクトリはどこに作成してもかまいません。

    $ mkdir build
    $ cd build

  2. 必ず最上位のCドライバ・ソース・ディレクトリを指定して、CMakeを実行します。たとえば、Cドライバ・パッケージが次の場所にあるとします。

    /home/me/kv-c-driver-3.3.5

    このとき、少なくとも次のようにCMakeコマンドを呼び出します。

    cmake /home/me/kv-c-driver-3.3.5/c

    次のコマンドライン・オプションが役立つ場合があります。

    KV_BUILD_TYPEがstaticの場合、バイナリ・インストール・パッケージをビルドできます。次に示すコマンドライン・オプションを使用してインストール・パッケージを構成できます。KV_PACKAGE_PROXY_LIBが設定されると、Cドライバ・パッケージとプロキシ・パッケージの2つがビルドされます。設定されない場合、Cドライバ・パッケージのみがビルドされます。

  3. CMakeが正常に終了したら、次のようにドライバ・ライブラリをビルドします。

    $ make

    問題がある場合は、次の方法で詳細情報(使用されている特定のコンパイラ・フラグなど)を取得できます。

    $ VERBOSE=1 make

    ビルド・アーティファクトの宛先はbuild/build/{bin,lib,include}です。ドライバで必要なライブラリは、lib/libkvstore*と前提条件ライブラリlibthrift*です。テスト・スイートとサンプル・バイナリの宛先は、binディレクトリです。これらはデプロイメントには必要ありません。

  4. 次のようにバイナリ・インストール・パッケージをビルドします。

    $ make package

    または、次のコマンドを使用してパッケージをビルドできます。

    $ cpack -G <package type>

    サポートされるパッケージのタイプはRPM、DEBおよびTGZです。Debianベースのディストリビューションではパッケージ・タイプとしてDEBまたはTGZを指定できます。RPMベースのディストリビューションではパッケージ・タイプとしてRPMまたはTGZを指定できます。RPMパッケージをビルドするにはrpmbuildツールが必要です。

テスト

テストを実行する方法は2つあります。-DKV_PATH_TO_JARおよび-DKVPROXY_PATH_TO_JARコマンドライン・オプションをCMakeに指定した場合は、次のようにmakeでテストを実行できます。

$ make test

make testの出力は、Testing/Temporary/LastTest.logファイルに生成されます。成功または失敗の詳しい情報を調べることができます。

注意: make testは異常終了する場合があります。その場合は、テストを直接呼び出してください。

テストを実行するもう1つの方法としては、次のようにkvsuiteユーティリティを使用してテストを直接呼び出します。

$ build/bin/kvsuite -r <path-to-kvroot> -k <path-to-kvstore.jar> -d <path-to-kvproxy-jar> -v

注意:

サンプルの実行

ドライバ・ライブラリがビルドされるとサンプルが自動的にビルドされます。これらを実行するには、Oracle NoSQL Databaseストアを実行していることが必要です。

ストアを作成する最も単純な方法はKVLiteユーティリティの使用です。これによって1ノードのデプロイメントが作成されます。ローカル・マシンでKVLiteを使用するには、kvstore.jarおよび附属するjarファイルにアクセスする必要があります。

次のコマンドによって、examplesという名前のOracle NoSQL Databaseストアがローカル・マシンにデプロイされます。このストアはホスト名としてlocalhostを使用するため、ローカルのみでアクセスできます。リモートでアクセスできるストアが必要な場合は、有効なホスト名を使用します。

$ mkdir kvroot
$ nohup java -jar <path-to-kvstore.jar> kvlite -root kvroot -store examples -host localhost -port 5000 -admin 5001

nohupを指定すると、コマンドがバックグラウンドで実行されます。これは省略可能です。

ビルド・ディレクトリから、このストアに対してhelloサンプルを実行するには次のようにします。

$ build/bin/hello -store examples -host localhost -port 5010 -helper-hosts localhost:5000 \
-kvproxy kv-c-driver-3.3.5/kvproxy/lib/kvproxy.jar \
-kvclient kv-c-driver-3.3.5/kvproxy/lib/kvclient.jar

プログラムがプロキシを起動するまでに数秒かかり、その後、サンプル・アプリケーションが実行されます。出力はstdoutに送られます。

ドライバ・ライブラリのインストール

ドライバのビルドが確認されたら、CMakeの引数で指定した場所にインストールできます。デフォルトでは/usr/localが使用されます。

$ make install

インストール・ディレクトリで追加の権限が必要な場合は、次を使用できます。

$ sudo make install

アプリケーションのビルドと実行

  1. 共有ライブラリの使用

    ビルドするには、コンパイル行がドライバ・ディストリビューションのインクルード・ディレクトリを参照し、次を含む依存ライブラリとリンクしている必要があります。

    正確なコンパイル行の例は、サンプル・コードのコンパイル行を参照してください。次を実行すると、ビルド・ディレクトリにすべてを再ビルドできます。

    $ make clean

    $ VERBOSE=1 make

    VERBOSE=1と指定すると、ビルドによってコンパイル行が表示されます。

    サンプルのコンパイル行を次に示します(ローカル・インストールに合せて変更します。)このケースでは、libkvstore*とlibthrift*はすべて/usr/local/lib (デフォルト)にインストールされます。

    gcc -o myprog myprog.c -lkvstore -Wl,-rpath,/usr/local/lib

    ライブラリが標準以外の場所にインストールされる場合は、アプリケーションを実行する際に、その場所をLD_LIBRARY_PATH環境変数に指定してください。

  2. 静的ライブラリの使用

    ビルドするには、コンパイル行がドライバ・ディストリビューションのインクルード・ディレクトリを参照し、libkvstore-static.aとリンクしている必要があります。

    libkvstore-static.aにはC++コードがあるため、場合によってはリンカーとしてg++を使用する必要があります。

    サンプルのコンパイル行を次に示します(ローカル・インストールに合せて変更します。)このケースでは、libkvstore-static.aは/usr/local/lib (デフォルト)にインストールされます。

    gcc -o myprog.c.o -c myprog.c
    g++ myprog.c.o -o myprog -lkvstore-static -lpthread

    libkvstore-static.aが標準以外の場所にインストールされている場合、アプリケーションをビルドする際に、-L<path-to-installation>を使用して検索ディレクトリを指定してください。