[JavaScript, Database] Node-oracledb 2.0.13-Development is now on GitHub

原文はこちら。
https://blogs.oracle.com/opal/node-oracledb-2013-development-is-now-on-github

Node-oracledb 2.0.13-DevelopmentがGitHubから利用いただけるようになりました。Node-oracledbはNode.jsでOracle Databaseを使うためのインターフェースです。

Top features:

  • Version 2はODPI-C抽象化レイヤーをベースにしています。
    ODPI Oracle Database Programming Interface for Drivers and Applications
    https://github.com/oracle/odpi
  • サポートされるデータ型が増えました。
完全な変更履歴(Changelog)は以下をご覧ください。
Change Log
https://github.com/oracle/node-oracledb/blob/dev-2.0/CHANGELOG.md
node-oracledb 2.0.13-Developmentのドキュメントは以下からどうぞ。
node-oracledb 2.0 Documentation for the Oracle Database Node.js Add-on
https://github.com/oracle/node-oracledb/blob/dev-2.0/doc/api.md
是非テストいただき、2.0 Development リリースサイクルの間に、出来るだけ早期に問題をレポートいただきたく思います。
node-oracledb Issue tracker
https://github.com/oracle/node-oracledb/issues
これはDevelopment Releaseなので、まだ粗い部分があることは承知しています。GitHubのIssueを使ってトラッキングを開始します。
Tracking node-oracledb 2.0.13-Development issues
https://github.com/oracle/node-oracledb/issues/716
完全なインストール手順は以下からご覧いただけます。
Installing node-oracledb Version 2
https://github.com/oracle/node-oracledb/blob/dev-2.0/INSTALL.md
しかし、node-oracledb 2.0はまだnpmに上がっていませんので、GitHubから以下のようにインストールする必要があります。
oracledb on npm
https://www.npmjs.com/package/oracledb
npm install oracle/node-oracledb.git#dev-2.0
Oracle Client 12.2、12.1、11.2のいずれかのライブラリ(例えばOracle Instant Client BasicもしくはBasic Lightパッケージ)をPATHもしくはLD_LIBRARY_PATH(またはそれに相当するもの)に通す必要があります。
Oracle Instant Client
http://www.oracle.com/technetwork/database/features/instant-client/
macOSをご利用の場合、Oracle Clientライブラリを~/libもしくは/usr/local/libに配置する必要があります。ODPI-Cを利用するとインストールが少々簡単になります。OracleのHeaderファイルはもう必要ありません。OCI_LIB_DIRとOCI_INC_DIRという環境変数は不要になっています。C++11をサポートするコンパイラ、Python 2.7は必要ですが、node-oracledbバイナリ1個だけでOracle Client 11.2、12.1、12.2で動作し、node-oracledbビルドをマシン間でコピーする際の移植性が向上しています。 古いクライアント・ライブラリがサポートしていない新しいOracle Databaseの機能を使用しようとすると、ランタイム・エラーが発生するため、デプロイメント環境に似た環境でテストを行ってください。
このリリースにおけるその他の変更は以下の通りです。
  • Lob.close()close()メソッドの非同期版ではなく、LOBを即座に無効にします。そのため、他のメソッド呼び出しは全て無効になります。
  • Version 1で、LOB、ResultSetまたはその他のデータベース操作を実行中に接続を閉じようとした場合、この正しくないアプリケーション・ロジックの結果NJS-030、NJS-031またはNJS-032の「接続を解放できません」というエラーが発生していました。Version 2では接続を閉じることができますが、開いている接続に依存する操作は失敗します。
  • 一部のNJSおよびDPIのエラーメッセージと番号が変更されました。これは特に、ODPI-C使用によるDPIエラーに当てはまります。
  • 現在、Node.js 4、6、および8と互換性があります。
  • (Stringとして)カラム型LONGと(Bufferとして)LONG RAWを取得できるようになりました。これらの型のストリーミングはサポートされていないため、Node.jsとV8のメモリ制限に達すると、DBに格納された値を完全に取得できない場合があります。ストリーミングできるLOBを使用するようにアプリケーションを変換する必要があります。
  • TIMESTAMP WITH TIME ZONE日付型のサポートが追加されました。これらは、LOCAL TIME ZONEを使用してnode-oracledb内のDateオブジェクトにマッピングされます。TIME ZONEコンポーネントは、Node.jsのDateオブジェクトでは使用できません。
  • ROWIDのサポートが追加されました。明示的なfetchAsStringは必要なくなりました。データはデフォルトでStringとして取得します。
  • Added support for UROWIDのサポートが追加されました。データはStringとして取得します。
  • NCHAR 列および NVARCHAR2 列のクエリがサポートされました。データベース文字セットおよびデータベースの各国語文字セットによってはDMLのバインディングでデータを正しく挿入できないことがあります。
  • NCLOB 列のクエリがサポートされるようになりました。NCLOB データをストリームもしくはStringとして取得できます。データベース文字セットおよびデータベースの各国語文字セットによってはDMLのバインディングでデータを正しく挿入できないことがあります。
  • LOB fetchAsString およびfetchAsBuffer クエリ、LOBバインドにおけるサイズ制限がなくなりました。Node.jsおよびV8のメモリ制限ゆえに一度に大きなLOBを操作できないのは今まで通りです。V1では11.2クライアントライブラリを使ってnode-oracledbと紐付けたユーザーにのみ制限が影響しました。
  • エラーを生成するステートメントを、ステートメント・キャッシュから削除するようになりました。表定義が変更されている間に実行されているアプリケーションは、古くなったキャッシュエントリのために、使用不能なSQL文で終わらなくなっています。アプリケーションはまだエラーが発生することがありますが、それをトリガーにして無効なキャッシュエントリを削除し、以降の実行が成功するようにします。ODPI-Cには、いまの説明よりもずっと優れた方法でやる仕組みが備わっていますが、お尋ねになると、退屈させることになるかもしれません。もしくはODPI-Cのソースコードをチェックすることができます。
    ODPI-Cソースコード(odpi/src/dpiStmt.c)
    https://github.com/oracle/odpi/blob/v2.0.0-rc.1/src/dpiStmt.c#L535-L536
    ご注意いただきたいのは、Oracleのベスト・プラクティスは、アプリケーション実行中に決して表定義を変更しない、ということです。いくつかのテストフレームワークが表定義を変更することを知っていますが。。
これらの改善はすべて、ODPI-Cが基礎部分を取り扱ってくれているおかげです。ODPI-Cの使用は、Node.jsに公開できる数多くのものを既にサポートしているので、将来の機能のための大きな飛躍的進展といえます。ODPI-Cプロジェクトは、以前はnode-oracledbだけが使用するDPI層の拡張でしたが、現在では、ODPI-CはPython cx_Oracle 6で使用されており、他のさまざまなプロジェクトで使用されてきています。
node-oracledb DPI Layer Extension
https://github.com/oracle/node-oracledb/tree/v1.13.1/src/dpi
Python interface to Oracle Database conforming to the Python DB API 2.0 specification
https://github.com/oracle/python-cx_Oracle
たとえば、Tamás Gulácsiは、ODPI-Cを使用するGoドライバを開発してきました(彼のブランチをチェックしてください)。
v5 with ODPI ?
https://github.com/rana/ora/issues/203
An Oracle database driver for the Go programming language.
https://github.com/rana/ora/tree/dpi
Kubo TakehiroもRust以外のプログラミング言語の選択を決める前に、Oracle Rustドライバの開発を開始しました!
Oracle driver for Rust
https://github.com/kubo/rust-oracle-wip
我々が表明しているnode-oracledbの計画では、node-oracledb 1.xのメンテナンスはNode 4のEoLにあわせ2018年4月1日で終了します。そのため、node-oracledb 2.0.13-Developmentのテストを開始します。
Node-oracledb 1.x and 2.x: Plans for 2017
https://github.com/oracle/node-oracledb/issues/601

0 件のコメント:

コメントを投稿