主コンテンツへ
Oracle® TimesTen In-Memory Databaseオープン・ソース言語サポート・ガイド
リリース18.1
F25666-03
 

 

Oracle® TimesTen In-Memory Database

オープン・ソース言語サポート・ガイド

リリース18.1

F25666-03(原本部品番号:F24027-03)

2020年7月

このドキュメントでは、TimesTen In-Memory Databaseリリース18.1でのオープン・ソース言語のサポートについて説明します。このサポートは、TimesTen ClassicとTimesTen Scaleoutの両方に適用されます。現行リリースでは、サポートされている言語はPythonとNode.jsです。

このドキュメントでは次のトピックについて説明します。

オープン・ソース言語のサンプル・プログラムは、GitHubで入手可能です。入手可能なものの概要については、次の場所にあるREADME.mdを参照してください。

https://github.com/oracle/oracle-timesten-samples/tree/master/languages

各言語の詳細が示されている他のREADME.mdファイルもあり、それらについてはこのドキュメント内で後述します。

スタート・ガイド

この項では、TimesTenでサポートされているオープン・ソース言語(PythonおよびNode.js)の使用における、基本的な概念および初期の考慮事項について説明します。

この項には、次の項目が含まれます。

ODPI-Cおよび言語固有のパッケージ

TimesTenでのオープン・ソース言語のサポートには、Oracle Database Programming Interface for C (ODPI-C)が使用されています。ODPI-Cは、オラクル社から提供されているオープン・ソース・ライブラリであり、様々なプログラミング言語からのOracleデータベースへのアクセスを簡略化することを目的としています。詳細は、https://oracle.github.io/odpi/を参照してください。

言語ごとに1つのオープン・ソース・パッケージ、つまりドライバがあります。GitHubから入手可能であり、オラクル社によって保守されます。これらのパッケージを示す用語は言語によって異なります。たとえば、Pythonの場合は拡張モジュールであり、Node.jsの場合はアドオンです。対応するパッケージの詳細は、後述する各サポート対象言語の項を参照してください。ODPI-Cは、各言語のドライバをダウンロードすると、それに含まれています。

ODPI-Cは、Oracle Call Interface (このドキュメントではOCIと呼ばれていますが、Oracle Cloud Infrastructureと混同しないようにしてください)の最上位のレイヤーです。図1にそのアーキテクチャを示します。

図1 オープン・ソース言語のTimesTenアーキテクチャ

図1の説明が続きます
「図1 オープン・ソース言語のTimesTenアーキテクチャ」の説明

オープン・ソース言語のプラットフォーム・サポート

オープン・ソース言語のプラットフォーム・サポートは、TimesTenでサポートされているプラットフォームまたはそれらのサブセットのみに限定されており、言語によって異なる場合があります。

TimesTenでは、PythonとNode.jsの両方について、Linux、macOSまたはWindowsからのクライアント/サーバー・アクセス、またはLinuxでの直接アクセスがサポートされています。

各言語のプラットフォーム・サポートの最新情報については、次の場所で、該当するREADME.mdファイルを参照してください。

https://github.com/oracle/oracle-timesten-samples/tree/master/languages/python

または

https://github.com/oracle/oracle-timesten-samples/tree/master/languages/nodejs

サポートされている具体的なバージョンなど、TimesTenのプラットフォーム・サポートの詳細は、Oracle TimesTen In-Memory Databaseリリース・ノートの「プラットフォームと構成」参照してください。

オープン・ソース言語の要件

ODPI-Cを介してオープン・ソース言語を使用しTimesTenデータベースにアクセスするには、TimesTenソフトウェアに付属しているOracle Instant Clientに含まれる特別なOCIクライアント・ライブラリを使用する必要があります。TimesTenとともに提供されるInstant Clientを使用する必要があるため、ライブラリ・パスを、TimesTen Instant Clientディレクトリ(installation_dir/ttoracle_home/instantclient_12_1)がOracle Databaseライブラリへのパスより前にくるように設定する必要があります。そのパスは、TimesTenのインストールで説明されているようにTimesTenのttenvスクリプト(ttenv.shまたはttenv.csh)を使用すると、適切に設定されます。

オープン・ソース言語の制限事項

ODPI-CはOCIの最上位のレイヤーであるため、OCIに関するTimesTenの制限事項は、ODPI-Cにも適用されます。これらの制限事項は、Oracle TimesTen In-Memory Database C開発者ガイドのTimesTenの制限事項と相違点に記載されています。

また、次の機能はサポートされていません。

  • アプリケーション・コンティニュイティ

  • 連続問合せ通知

  • コール・タイムアウト

  • セッション・タグ付け

  • 起動と停止などのデータベース管理

TimesTenの設定

この項では、TimesTenを設定するための次の処理について説明します。

TimesTenのインストール

まだTimesTenがない場合は、それをhttps://www.oracle.com/technetwork/database/database-technologies/timesten/downloads/index.htmlからダウンロードすることで入手できます


重要:

オープン・ソース言語の完全なサポートには、TimesTenリリース18.1.4.1.0以上が必要です。

TimesTen ClassicとTimesTen Scaleoutの両方のために単一のZIPファイル配布が用意されていますが、それぞれの設定手順は次のように異なります。

  • TimesTen Classicの前提条件、環境設定およびインストールについては、Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドの「TimesTen Classicでのインストール・プロセスの概要」および該当するインストールの章を参照してください。

    インストールの章では、TimesTenインスタンスの作成方法についても説明します。

  • TimesTen Scaleoutの前提条件、環境設定およびインストールについては、Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドのTimesTen Scaleoutの前提条件およびインストールを参照してください。

    このドキュメントのグリッドの設定には、初期管理インスタンスの作成に関する情報が含まれています。

TimesTen環境の設定

TimesTenをインストールしてTimesTenインスタンスを作成した後、timesten_home/binにある適切なttenvスクリプト(ttenv.shまたはttenv.csh)を使用して環境の設定を完了します。

TimesTenデータベースの定義および管理

TimesTen Classicのデータベースの定義と管理については、Oracle TimesTen In-Memory Databaseオペレーション・ガイドのTimesTenデータベースの管理を参照してください。

TimesTen ScaleoutのTimesTenグリッドおよびデータベースの定義と管理については、Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドのメンバーシップ・サービスの設定、グリッドの設定およびデータベースの管理を参照してください。

TimesTenの接続の構成

TimesTenでのオープン・ソース言語のサポートはOCIを介して行われるため、PythonまたはNode.jsから、tnsnamesまたは簡易接続ネーミング・メソッドを使用してTimesTenに接続できます。これらの方法の詳細は、Oracle TimesTen In-Memory Database C開発者ガイドのOCIからのTimesTenデータベースへの接続を参照してください。

次のようなtnsnames.oraエントリがあるとします。たとえば、データベースsampledbに接続する場合です。次に、自分のコード内で、接続文字列でTNS名sampledbconnを指定します。

sampledbconn =(DESCRIPTION=(CONNECT_DATA = (SERVICE_NAME = sampledb)(SERVER = timesten_direct)))

または、tnsnames.oraを使用しないようにするために、myhost/sampledb:timesten_directなどの簡易接続文字列を、自分のコード内で接続文字列として直接使用することもできます。

TimesTenへの直接接続の場合はtimesten_direct、クライアント/サーバー接続の場合はtimesten_clientを使用します。

自分のコード内でのTNS名および簡易接続文字列の使用の例については、PythonでのTimesTenへの接続の構成およびNode.jsでのTimesTenへの接続の構成を参照してください。

TimesTenデータベースに接続するには、TimesTenデータベース・ユーザーが必要です。TimesTenでのユーザーの作成の詳細は、Oracle TimesTen In-Memory Database SQLリファレンスのCREATE USERを参照してください。

次の例では、パスワードをappuserにしてTimesTen内部ユーザーappuserを作成し、appuserがデータベースへの接続時にユーザー・セッションを作成してからデータベース表を作成できるように、CREATE SESSION権限とCREATE TABLE権限を付与します。

CREATE USER appuser IDENTIFIED BY "appuser";

GRANT CREATE SESSION TO appuser;
GRANT CREATE TABLE TO appuser;

Pythonのサポート

Pythonは、オブジェクト指向プログラミングをサポートしている、堅牢な標準ライブラリを含む、解釈済の、高水準の汎用言語です。構文規則が単純であるため、Pythonコードは、簡単に解読することやサポートすることができます。

多くのプラットフォームには、Pythonがインストールされています。確認するには、コマンド・プロンプトで「python」と入力します。インストールされている場合は、応答にバージョン番号が含まれています。

https://www.python.orgで、Pythonに関する情報を検索してダウンロードできます

TimesTenでサポートされているPythonのバージョンの詳細は、https://github.com/oracle/oracle-timesten-samples/tree/master/languages/pythonにあるREADME.mdファイルを参照してください

PythonアプリケーションからOracleまたはTimesTenデータベースにアクセスするためのPython拡張モジュールは、cx_Oracleです。このモジュールは、PythonデータベースAPI 2.0の仕様に準拠しています。このモジュールに関する一般的な情報は、https://github.com/oracle/python-cx_Oracleにあります。

TimesTenでサポートされているPython拡張モジュールのバージョンの詳細は、README.mdファイルを参照してください。

この項の後半では、次の内容について説明します。

Pythonの設定

この項では、PythonをTimesTenで使用するための次の設定処理について説明します。

Python拡張モジュールのインストール

Python拡張モジュールをインストールするにはインターネット・アクセスが必要です。ファイアウォールの外部のインターネットにアクセスするために、プロキシ・サーバーを示すようにhttp_proxyおよびhttps_proxy環境変数を設定する必要がある場合があります。

Python拡張モジュールをダウンロードする方法はいくつかあります。ご使用の設定と環境に最も適した方法を選択してください。

  • git cloneを使用して、GitHubからソース・ファイルをダウンロードします。これには、ご使用のシステムにgitをインストールする必要があります。https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#install-using-githubでその手順を参照してください


    重要:

    • 設定プロセスではシステムのlibディレクトリにアクセスする必要があるため、管理権限が必要です。

    • ご使用のシステムにPython自体の他にPythonヘッダー・ファイルが存在する必要があり、これには、対応するpython[3]-devel開発パッケージがインストールされている必要があります。


  • Python Pipパッケージ・マネージャを使用して、事前作成済のパッケージをダウンロードします。https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#quick-start-cx-oracle-installationでその手順を参照してください。また、必要に応じて、そのドキュメントのプラットフォーム固有の項を参照してください。

    この方法では、事前作成済のバイナリが用意されていますが、必要に応じてソース・コードをダウンロードしコンパイルしてください。


    重要:

    ソース・コードをコンパイルする必要がある場合は、パッケージpython[3]-develをインストールしておく必要があります。

  • RPMなど、プラットフォーム固有のパッケージ・マネージャを使用して事前作成済バイナリをダウンロードします。

    RPMパッケージ・マネージャは、yumなどのユーティリティを通じて使用できます。

    cx_Oracle RPMパッケージは、Oracle Linux yumサーバー(http://yum.oracle.com/)から入手できます。この詳細は、https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#installing-cx-oracle-rpms-on-oracle-linuxを参照してください


    重要:

    この方法を使用する場合、正常にインストールするにはOracle Instant Clientが必要です。Instant Clientは、ご使用のシステムにまだない場合は提供されます。ただし、ランタイム操作には、オープン・ソース言語の要件で説明さているように、TimesTenに付属しているInstant Clientバージョンが必要です。

すべてのシナリオについての情報は、https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.htmlにあります。


ノート:

3つすべてのケースで、ODPI-Cが含まれています。git cloneの方法の場合は、ODPI-Cを含め、すべての依存関係が自動的にクローニングおよび構築されます。

PythonでのTimesTenへの接続の構成

Oracleのtnsnames.oraを使用する方法、またはデータベースへの接続を設定するための簡単な接続メカニズムの詳細は、TimesTenの接続の構成を参照してください。

この例では、Python接続文字列にTNS名を使用します。

connection = cx_Oracle.connect("appuser", "appuser", "sampledbconn")

この例では、TimesTenへの直接接続を指定する簡易接続文字列を使用します。

connection = cx_Oracle.connect("appuser", "appuser", "myhost/sampledb:timesten_direct")

Pythonに関する追加情報

この項の内容は次のとおりです。

Pythonアプリケーションの型マッピング

表1に、cx_Oracle型(言語拡張モジュールを介して入手可能)とTimesTen SQL型とのマッピングを示します。


ノート:

TimesTenでの暗黙的データ型変換により、追加のTimesTen SQL型をこれらのcx_Oracle型にマップできます。Oracle TimesTen In-Memory Database SQLリファレンスのデータ型変換を参照してください。

現行リリースでのデータ型サポートの最新情報については、https://github.com/oracle/oracle-timesten-samples/tree/master/languages/pythonREADME.mdファイルを参照してください。

表1 cx_Oracleの型マッピング

cx_Oracle型 TimesTen型

cx_Oracle.BINARY

BINARYVARBINARY

cx_Oracle.BLOB

BLOB

cx_Oracle.CLOB

CLOB

cx_oracle.CURSOR

REF CURSOR

cx_Oracle.DATETIME

DATE

cx_Oracle.FIXED_CHAR

CHAR

cx_Oracle.FIXED_NCHAR

NCHAR (TimesTenではこの型はUTF-16のみです。)

cx_Oracle.NATIVE_FLOAT

BINARY_DOUBLEBINARY_FLOAT

cx_Oracle.NCHAR

NVARCHAR2 (TimesTenではこの型はUTF-16のみです。)

cx_Oracle.NCLOB

NCLOB

cx_Oracle.NUMBER

NUMBERTT_BIGINTTT_INTEGERTT_SMALLINTTT_TINYINT

cx_Oracle.ROWID

ROWID

cx_Oracle.STRING

VARCHAR2

cx_Oracle.TIMESTAMP

TIMESTAMPTT_TIMESTAMP


Pythonの障害モード

次のことに注意してください。

  • エラー・メッセージが、同じ条件下でOracleによって生成されるメッセージとは若干異なる場合があります。

  • PythonのメソッドCursor.executemany()については、TimesTenでは、batcherrorsオプションは無視されるためデフォルトのbatcherrors=false設定のみがサポートされています。バッチ内のいずれかの行でエラーが発生した場合は、必ずエラーが返されます。(これに対して、Oracle Databaseではbatcherrors=trueがサポートされており、バッチ内のいずれかの行が成功すると必ず成功が返されます。)また、TimesTenデータベースに対して、1つのバッチ内で複数のエラーが発生した場合、TimesTenではエラーの順序付けは試行されませんが、Oracleデータベースに対して発生した場合にはそれらは順序付けられます。

Pythonのサンプル

この項では、Pythonの単純な例、およびTimesTen Pythonサンプル・アプリケーションのURLを示します。

Pythonの例: TimesTenに接続してSQLを実行する

この単純なサンプル・プログラムでは、TimesTenデータベースに接続し、employeesという表を作成し、その表に3つの行を挿入し、それらの行を選択して表示し、その表を削除し、データベースから切断します。

##
## simple.py
##
from __future__ import print_function
import cx_Oracle
import AccessControl
 
def run():
  try:
    credentials = AccessControl.getCredentials("simple.py")
    connection = cx_Oracle.connect(credentials.user, credentials.password, 
                 credentials.connstr)
      
    cursor = connection.cursor()
    cursor.execute("""
      CREATE TABLE employees(first_name VARCHAR2(20), last_name VARCHAR2(20))""")
    print("Table has been created")
    values = [["ROBERT", "ROBERTSON"], ["ANDY", "ANDREWS"], ["MICHAEL", 
             "MICHAELSON"]]
    cursor.executemany("INSERT INTO employees VALUES (:1, :2)", values)
    print("Inserted ", len(values), "employees into the table")
    cursor.execute("""
      SELECT first_name, last_name FROM employees""")
    for fname, lname in cursor:
      print("Selected employee:", fname, lname)
    cursor.execute("DROP TABLE employees")
    print("Table has been dropped")
    cursor.close()
    connection.close()
    print("Connection has been released")
 
  except Exception as e:
    # Something went wrong
    print("An error occurred", str(e))

run()

結果を次に示します。

% python3 simple.py -u username -p password
Table has been created
Inserted  3 employees into the table
Selected employee: ROBERT ROBERTSON
Selected employee: ANDY ANDREWS
Selected employee: MICHAEL MICHAELSON
Table has been dropped
Connection has been released
TimesTen Pythonサンプル・プログラムのダウンロードと実行

cx_Oracleを使用するPythonのTimesTenサンプル・プログラムは、https://github.com/oracle/oracle-timesten-samples/tree/master/languages/pythonで入手できます

詳細は、その場所にあるREADME.mdを参照してください。

Node.jsのサポート

Node.jsは、Webサーバーなどのスケーラブルなネットワーク・アプリケーションおよびツールを構築するために使用できる、オープン・ソースのJavascriptランタイム環境です。これには、ファイル・システムのI/O、ネットワーキング、データ・ストリームおよび暗号化などの基本機能を扱う、サーバー・アプリケーションの記述の複雑さを軽減するためのモジュールが含まれています。

https://nodejs.orgで、Node.jsに関する情報を検索してダウンロードできます。

TimesTenでサポートされているNode.jsのバージョンの詳細は、https://github.com/oracle/oracle-timesten-samples/tree/master/languages/nodejsにあるREADME.mdファイルを参照してください

Node.jsインストールには、パッケージ・マネージャnpmが含まれています。Node.jsアドオンに関する項で後述されているとおりに、これを使用してNode.jsアドオンをインストールします。

Node.jsアプリケーションからOracleまたはTimesTenデータベースにアクセスするためのNode.jsアドオンは、node-oracledbです。このアドオンに関する一般情報は、https://oracle.github.io/node-oracledb/にあります。

TimesTenでサポートされているNode.jsアドオンのバージョンの詳細は、README.mdファイルを参照してください。

この項の後半では、次の内容について説明します。

Node.jsの設定

この項では、Node.jsをTimesTenで使用するための次の設定処理について説明します。

Node.jsアドオンのインストール

Node.jsアドオンをインストールするにはインターネット・アクセスが必要です。ファイアウォールの外部のインターネットにアクセスするために、プロキシ・サーバーを示すようにhttp_proxyおよびhttps_proxy環境変数を設定する必要がある場合があります。

Node.jsアドオンをダウンロードする方法はいくつかあります。ご使用の設定と環境に最も適した方法を選択してください。

  • git cloneを使用してGitHubからソース・ファイルをダウンロードし(ご使用のシステムにgitをインストールする必要がある)、NPMパッケージ・マネージャを使用してドライバをインストールします。

    node-oracledbは、GitHubからソース・ファイルをダウンロードしてインストールできます。Node.jsをダウンロードし展開した後は、Node.jsのbinディレクトリにあるNPMパッケージ・マネージャを使用して、事前作成済のnode-oracledbバイナリをインストールすることもできます。(自分のパスにNode.jsのbinディレクトリを追加する)。

    https://oracle.github.io/node-oracledb/INSTALL.html#-3-node-oracledb-installation-instructionsの「GitHubからのソース・コード」にあるインストールの手順を参照してください。

  • NPMパッケージ・マネージャを使用して、事前作成済のパッケージをダウンロードします。

    インストールの手順を参照してください。

    この方法では、事前作成済のバイナリのみが用意されています。事前作成済のバイナリを使用できない場合は、ソース・コードをコンパイルする必要があります。これを行うには、Oracle Instant Clientがインストールされている必要があります。これは、TimesTenに付属しているもので十分です。

  • RPMなど、プラットフォーム固有のパッケージ・マネージャを使用して事前作成済バイナリをダウンロードします。

    node-oracledb RPMパッケージは、Oracle Linux yumサーバー(http://yum.oracle.com/)から入手できます。

    インストールの手順を参照してください。


    重要:

    この方法を使用する場合、正常にインストールするにはOracle Instant Clientが必要です。Instant Clientは、ご使用のシステムにまだない場合は提供されます。ただし、ランタイム操作には、オープン・ソース言語の要件で説明さているように、TimesTenに付属しているInstant Clientバージョンが必要です。

すべてのシナリオについての情報は、https://oracle.github.io/node-oracledb/INSTALL.htmlにあります。


注意:

3つすべてのケースで、ODPI-Cが含まれています。git cloneの方法の場合は、ODPI-Cを含め、すべての依存関係が自動的にクローニングおよび構築されます。

Node.jsでのTimesTenへの接続の構成

Oracleのtnsnames.oraを使用する方法、またはデータベースへの接続を設定するための簡単な接続メカニズムの詳細は、TimesTenの接続の構成を参照してください。

この例では、Node.js接続文字列にTNS名を使用します。

// Get connection
function connect(cb) {
    oracledb.getConnection({
      user          :  "appuser",
      password      :  "appuser",
      connectString :  "sampledbconn"
    } ,
    cb);
}

この例では、TimesTenへの直接接続を指定する簡易接続文字列を使用します。

// Get connection
function connect(cb) {
    oracledb.getConnection({
      user          : "appuser",
      password      : "appuser",
      connectString : "myhost/sampledb:timesten_direct"
    } ,
    cb);
}

Node.jsに関する追加情報

この項の内容は次のとおりです。

Node.jsアプリケーションの型マッピング

表2に、言語アドオンを介して入手できるnode-oracledb型とTimesTen SQL型とのマッピングを示します。


注意:

TimesTenでの暗黙的データ型変換により、追加のTimesTen SQL型をこれらのOracle Databaseの型とnode-oracledb別名の型にマップできます。Oracle TimesTen In-Memory Database SQLリファレンスのデータ型変換を参照してください。

現行リリースでのデータ型サポートの最新情報については、https://github.com/oracle/oracle-timesten-samples/tree/master/languages/nodejsREADME.mdファイルを参照してください

表2 node-oracledbの型マッピング

Node.jsの型 Oracle Databaseの型 node-oracledb別名の型 TimesTen型

Number

oracledb.DB_TYPE_BINARY_DOUBLE

該当なし

BINARY_DOUBLE

Number

oracledb.DB_TYPE_BINARY_FLOAT

該当なし

BINARY_FLOAT

Lob

oracledb.DB_TYPE_BLOB

oracledb.BLOB

BLOB

String

oracledb.DB_TYPE_CHAR

該当なし

CHAR

Lob

oracledb.DB_TYPE_CLOB

oracledb.CLOB

CLOB

ResultSet

oracledb.DB_TYPE_CURSOR

oracledb.CURSOR

REF CURSOR

Date

oracledb.DB_TYPE_DATE

oracledb.DATE

DATE

Number

oracledb.DB_TYPE_INTEGER

該当なし

NUMBERTT_BIGINTTT_INTEGERTT_SMALLINTTT_TINYINT

String

oracledb.DB_TYPE_NCHAR

該当なし

NCHAR (TimesTenではこの型はUTF-16のみです。)

Lob

oracledb.DB_TYPE_NCLOB

oracledb.NCLOB

NCLOB

Number

oracledb.DB_TYPE_NUMBER

oracledb.NUMBER

NUMBERTT_BIGINTTT_INTEGERTT_SMALLINTTT_TINYINT

String

oracledb.DB_TYPE_NVARCHAR

該当なし

NVARCHAR2 (TimesTenではこの型はUTF-16のみです。)

Buffer

oracledb.DB_TYPE_RAW

oracledb.BUFFER

BINARYVARBINARY

String

oracledb.DB_TYPE_ROWID

該当なし

ROWID

Date

oracledb.DB_TYPE_TIMESTAMP

該当なし

TIMESTAMPTT_TIMESTAMP

String

oracledb.DB_TYPE_VARCHAR

oracledb.STRING

VARCHAR


Node.jsの障害モード

次のことに注意してください。

  • エラー・メッセージが、同じ条件下でOracleによって生成されるメッセージとは若干異なる場合があります。

  • Node.jsのメソッドconnection.executeMany()については、TimesTenでは、batcherrorsオプションは無視されるためデフォルトのbatcherrors=false設定のみがサポートされています。バッチ内のいずれかの行でエラーが発生した場合は、必ずエラーが返されます。(これに対して、Oracle Databaseではbatcherrors=trueがサポートされており、バッチ内のいずれかの行が成功すると必ず成功が返されます。)また、TimesTenデータベースに対して、1つのバッチ内で複数のエラーが発生した場合、TimesTenではエラーの順序付けは試行されませんが、Oracleデータベースに対して発生した場合にはそれらは順序付けられます。

Node.jsのサンプル

この項では、Node.jsの単純な例、およびTimesTen Node.jsサンプル・アプリケーションのURLを示します。

Node.jsの例: TimesTenに接続する

この単純なサンプル・プログラムでは、TimesTenデータベースに接続し、employeesという表を作成し、その表に3つの行を挿入し、それらの行を選択して表示し、その表を削除し、データベースから切断します。

//
// simple.js
//
var oracledb      = require('oracledb');
var accessControl = require('./AccessControl');
 
async function run() {
 
  let connection;
 
  try {
    let credentials   = accessControl.getCredentials("simple.js");
    connection = await oracledb.getConnection({
      user: credentials['-u'], password: credentials['-p'], connectString: 
            credentials['-c'] 
    });
 
    let result;
 
    await connection.execute("CREATE TABLE employees(first_name VARCHAR2(20), 
          last_name VARCHAR2(20))");
    console.log("Table has been created");
    const values = [["ROBERT", "ROBERTSON"], ["ANDY", "ANDREWS"], ["MICHAEL", 
                   "MICHAELSON"]];
    await connection.executeMany("INSERT INTO employees VALUES(:1, :2)", values);
    console.log("Inserted", values.length, "employees into the table");
    result = await connection.execute("SELECT first_name, last_name FROM 
             employees");
    result.rows.forEach(function(row){
    console.log("Selected employee:", row[0], row[1]);
    });
    await connection.execute("DROP TABLE employees");
    console.log("Table has been dropped");
  }
  catch (err) {
    console.log(err);
  }
  finally {
    if (connection) {
      try { 
        connection.close();
        console.log("Connection has been released");
      }
      catch (err) { console.log(err); }
    }
  }
}

run();

結果を次に示します。

% node simple.js -u username -p password
Table has been created
Inserted 3 employees into the table
Selected employee: ROBERT ROBERTSON
Selected employee: ANDY ANDREWS
Selected employee: MICHAEL MICHAELSON
Table has been dropped
Connection has been released
TimesTen Node.jsサンプル・プログラムのダウンロードと実行

node-oracledbを使用するNode.jsのTimesTenサンプル・プログラムは、https://github.com/oracle/oracle-timesten-samples/tree/master/languages/nodejsで入手できます

詳細は、その場所にあるREADME.mdを参照してください。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWeb サイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。


Oracle TimesTen In-Memory Databaseオープン・ソース言語サポート・ガイド, リリース18.1

F25666-03

Copyright © 2019, 2020, Oracle and/or its affiliates.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial computer software" or "commercial computer software documentation" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.そのようなものとして、i)オラクル社のプログラム(オペレーティング・システム、統合ソフトウェア、提供されたハードウェアに対して組み込まれたか、インストールされたか、アクティブ化されたプログラム、およびそのようなプログラムの変更版など)、ii)オラクル社によるコンピュータ・ドキュメントまたはiii)その他のOracleデータ(またはそれらすべて)の使用、模造、複製、リリース、表示、開示、変更、派生物の準備、または改作(またはそれらすべて)は、適用可能な契約に含まれているライセンスで指定された、権利および制限の対象となります。The terms governing the U.S. Government’s use of Oracle cloud services are defined by the applicable contract for such services.No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Insideは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Epyc、AMDロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社との間で該当する取決めにて別途規定しないかぎり、オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社との間で該当する取決めにて別途規定する場合を除き、オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。