[JavaScript, Database] Node-oracledb 1.9.1 with Promises and Node 6 Support is on NPM

原文はこちら。
https://blogs.oracle.com/opal/entry/node_oracledb_1_9_1

新しいnode-oracledb 1.9.1では、Promiseのサポート、Node.js 6(もちろん以前のリリースも)のサポート、そして安定性の向上のための修正を含んでいます。
Promises in node-oracledb
https://github.com/oracle/node-oracledb/blob/master/doc/api.md#promiseoverview
その他の機能については以下でご紹介します。1.9.0 developmentブランチに対してフィードバック下さった皆様に感謝します。みなさまのおかげでリリースできました。
node-oracledb 1.9.1はNPMからご利用頂けます。インストール、ドキュメントは以下のリンクからどうぞ。
oracledb - Oracle Database driver by Oracle Corp.
https://www.npmjs.com/package/oracledb
Installing node-oracledb
https://github.com/oracle/node-oracledb/blob/master/INSTALL.md
node-oracledb 1.9: Documentation for the Oracle Database Node.js Add-on
https://github.com/oracle/node-oracledb/blob/master/doc/api.md

node-oracledb 1.8から1.9.1での変更点

  • Promiseのサポート
    Promises in node-oracledb
    https://github.com/oracle/node-oracledb/blob/master/doc/api.md#promiseoverview
    全ての非同期関数はPromiseを返すことができます。非同期関数がコールバック関数パラメータを伴って渡されると、いつものコールバックフローを使いますが、コールバックパラメータを含めない場合、Promiseを返します。examplesディレクトリにサンプルがあります。promises.jsとwebapppromises.jsをご覧ください。
    oracle/node-oracledb/examples
    https://github.com/oracle/node-oracledb/tree/master/examples
    promises.js
    https://github.com/oracle/node-oracledb/tree/master/examples/promises.js
    webapppromises.js
    https://github.com/oracle/node-oracledb/tree/master/examples/webapppromises.js
    Node.jsの Promise を使うと、多くのNode.jsユーザーが快適なプログラミング・パラダイムを実現できます。node-oracledb用のPromiseラッパーを自作され、NPMで公開されていた方もいらっしゃいますが、公式に実装したのでPromiseを皆様が利用できるようになっています。PromiseのデフォルトライブラリをNode 0.12、4、5、6で使っていますが、ご自身の実装を取り込みたい場合には簡単にオーバーライドできます。これはネイティブ・ライブラリがないNode 0.10をお使いの場合に有用です。
  • ResultSetの新しいメソッド toQueryStream() 
    toQueryStream()
    https://github.com/oracle/node-oracledb/blob/master/doc/api.md#toquerystream
    Readable Streamsを使ってREF CURSORSをフェッチします。サンプルは以下をご覧ください。
    refcursortoquerystream.js
    https://github.com/oracle/node-oracledb/tree/master/examples/refcursortoquerystream.js
    トップレベルのクエリからResultSetsと一緒に使うこともできます。ResultSetsをストリームに変換します。しかし。既存のconnection.queryStream() メソッドのほうが、このシナリオではより使いやすいでしょう。
    connection#queryStream()
    https://github.com/oracle/node-oracledb/blob/master/doc/api.md#querystream
  • pool.terminate()connection.release() それぞれに対応するエイリアス:pool.close() と connection.close() 
    pool.close()
    https://github.com/oracle/node-oracledb/blob/master/doc/api.md#poolclose
    connection.close()
    https://github.com/oracle/node-oracledb/blob/master/doc/api.md#connectionclose
    これを使うと、接続のリリース、接続の切断、ResultSetのクローズに使用するメソッドを覚えやすくなるでしょう。単にclose()を使えばよいのです。

  • 実験的なクエリquerystream._close()メソッドの追加
    これを使うと全てのデータをフェッチせずにクエリストリームを閉じることができます。現在のNode Streams実装への割り込みの安全性について情報が少ないため、このメソッドは実験的(Experimental)とマークされています。
    必要に応じて、_close() を呼ぶと pause() が呼ばれます。Node 0.10では、たとえ以前にストリームを一時停止したとしても、一時停止イベントを受け取る可能性があります。これはNode 0.10ではisPaused()の呼び出しをサポートしていないためです。

  • Node 6向けにNAN 2.3へアップデート
    これにより、Node 6で発生しうるNAN 2.2以前で生成した非推奨の警告(deprecation warnings)が出なくなります。
    Nodeの旧バージョンではもちろんまだNAN 2.2以前を利用することができます。

  • JavaScriptオブジェクトのGCが早すぎた場合に発生する、迷惑かつ一見ランダムなクラッシュを軽減
     多くのアプリケーションは、通常オブジェクトを使わなくなるまで関連するJavaScriptオブジェクトを保持するのですが、一部のアプリケーションではそうではありません。早くアプリケーションが終了したり、負荷がかかっていたりすると、時期尚早なGCが後者のようなアプリケーションのスクリプトに影響する可能性があります。
    類似の変更をLOBインサート時の使われるLobバッファに対しても実施しました。

  • メモリ利用の改善
    • ResultSet利用時のメモリリークを修正しました
    • Poolキュータイマーマップでのメモリリークを修正しました
    • LOBのクエリとエラー発生時のメモリリリースロジックを修正しました
  • end-of-fetch時のqueryStram()による余計なgetRows() の呼び出しを削除
  • エラーの変更
    • メソッドのパラメータ検証、例えばパラメータ個数やパラメータのデータ型のチェックで、コールバックを使ってエラーを返すのではなく、同汽笛にエラーを返すようにしました。
    • fetchInfo 利用時の検証を改善しました.
    • Oracle Databaseのエラーメッセージのための内部バッファサイズを増やしました
    • node-oracledb NJS-xyz エラーメッセージテキストを変更しました
  • テスト・スィートの手動インストール化
    テスト・スィートは(今後も)ジョジョに大きなサイズになっていきますが、ほとんどのユーザーにとっては、使わないテストスィートの自動インストールは時間の無駄です。GitHubのクローンを使ってテストを実行することはこれまで通り可能です。アップデートされたテストのREADMEにこの手順が記載されています。
    https://github.com/oracle/node-oracledb/blob/master/test/README.md
    テストを移動し、どこでも実行できるようにするためには、パス接頭辞無しでテストのrequire('oracledb')呼び出しを残し、READMEに記述の通り、NODE_PATHを設定する必要があります。

  • DATA_BLOBのシンボル名の再定義の警告を修正
    Windowsでコンパイルする際の、DATA_BLOBのシンボル名の再定義の警告を修正しました
全体としてnode-oracledb 1.9.1はPromiseのサポート、Node 6のサポート、一般的なレジリエンシーの変更を追加したという点で重要なマイルストンです。このリリースを発表できることをうれしく思うと共に、アップグレードを推奨します。

What's Next?

ウィッシュリストにはnode-oracledbに対するエンハンスメントがまだたくさんあります。みなさんのプライオリティをお寄せ下さい。

問題や質問はGitHubに投稿してください。みなさまからの情報がnode-oracledbの作業のスケジューリングを助けてくれます。お待ちしています。
Issues
https://github.com/oracle/node-oracledb/issues

0 件のコメント:

コメントを投稿