ノードORACLEDB 4.0リリース、Oracleのアドバンスト・キューAPIを追加

ノード-ORACLEDB 4.0がリリースされている、ノードORACLEDBは、  OracleのNode.jsのドライバーのOracleの公式リリースです。このバージョンの新機能は、主に、クエリとOracleは、Oracleアドバンスト・キューイングのAPIという名前のバインディングタイプを含めています。次のように特定の更新プログラムは、以下のとおりです。

再構築

モジュールはまだJavaScriptラッパーバイナリ層のOracleクライアントライブラリを呼び出すことが、今の代わりに、N-APIインタフェースのバイナリ層のNode.jsされているが  NANをNANは、モジュールのV8エンジンの更新に移植性を提供するためのNode.jsのC ++ラッパーを開始しています。更新するN-APIインターフェースの使用は多くの利点をもたらします:

  • APIは、N-APIの方法の独自のバージョンを持っているノードORACLEDBバイナリ(各オペレーティング・システム・アーキテクチャー)の構築を可能にし、現在のバージョンのNode.jsに後で使用することができます
  • パッケージには、バイナリファイルのすべてのNode.jsのバージョンが含まれていないため、NPMのダウンロードパッケージには、3.1パッケージノード-ORACLEDBの4分の1のサイズであります
  • ノードORACLEDBコードではなくC ++よりも、今、純粋なC、であるので、Cコンパイラは、あなたは、もはや簡単にいくつかの古い環境上に構築されているC ++ 11を、サポートするために必要なモジュールを構築する必要がありません

Oracleは、名前付きクエリとバインドの種類をサポートしています

これは、SQLやPL / SQLのユーザー定義の環境の種類、または使用するOracleの空間特性として、事前に作成する過程で使用されるタイプを使用して良い環境のNode.js、それは良いことができます。

たとえば、テーブルといくつかの種類を作成します。

CREATE TYPE dbharvesttype AS VARRAY(10) OF VARCHAR2(20)
/

CREATE TYPE dbfarmtype AS OBJECT (
   farmername     VARCHAR2(20),
   harvest        dbharvesttype)
/

CREATE TABLE farmtab (id NUMBER, farm dbfarmtype);

ノードORACLEDB 4.0では、JavaScriptオブジェクトは列ファームを挿入するようにマッピングすることができます。

// A JavaScript object automatically mapped to the DBFARMTYPE object.
// The case of the properties matters.
const newFarm = {
  FARMERNAME: 'McDonald',
  HARVEST: [ 'corn', 'wheat', 'barley' ]
};
 
await connection.execute(
  `INSERT INTO farmtab (id, farm) VALUES (:id, :f)`,
  { id: 1,
    f: {
      type: 'DBFARMTYPE', // name of the top level DB type, case sensitive
      val: newFarm
    }
  }
);

FARMTABクエリがDBOBJECTを返し、それがノードORACLEDB 4.0で新しく追加されました:

const result = await connection.execute(`SELECT farm FROM farmtab WHERE id = 1 `);
 
// a DbObject for the named Oracle type:
const farm = result.rows[0][0];
 
// The whole object:
// [MYUSER.DBFARMTYPE] { FARMERNAME: 'MacDonald', HARVEST: [ 'corn', 'wheat', 'barley' ] }
console.log(farm);
 
// Objects can be stringified:
// {"FARMERNAME":"MacDonald","HARVEST":["corn","wheat","barley"]}
console.log(JSON.stringify(farm));
 
// Iterate over the collection:
console.log(farm.FARMERNAME);        // "MacDonald"
for (const crop of farm.HARVEST) {
  console.log(crop);                 // "corn", "wheat", "barley"
}

Oracleのアドバンスト・キューイング(AQ)

Oracleのアドバンスト・キューイングは、Oracleデータベースの高度にスケーラブルで設定可能なメッセージ配信機能です。これは、複数のツールがメッセージを送受信するアーキテクチャに統合することができる、様々な言語とのインターフェース。ノードORACLEDB 4.0 アドバンスト・キューイングAPIは  、RAWやキューオブジェクトをサポートしている文字列、またはオブジェクトメッセージバッファを送受信することができます。

キューがRAWデータベースに配置されている場合たとえば、あなたは単純な文字列を送信することができます。

const queue = await connection.getQueue('MYQUEUE');
const messageString = 'This is my message';
await queue.enqOne(messageString);
await connection.commit();

それを受信した場合、他のアプリケーションを実行することができます。

const queue = await connection.getQueue('MYQUEUE');
const msg = await queue.deqOne();
await connection.commit();
console.log(msg.payload.toString());

暗黙の結果

これは、ノードORACLEDBより簡単にPL / SQLから返されたクエリの結果セットになります。暗黙の結果については、ノーバインド変数。結果は、新しいインターフェイスは、カーソルがノードORACLEDBの結果を返すことができますDBMS_SQL.RETURN_SUPER。

result = await connection.execute(
  `DECLARE
    c1 SYS_REFCURSOR;
    c2 SYS_REFCURSOR;
  BEGIN
 
    OPEN c1 FOR SELECT city, postal_code FROM locations;
    DBMS_SQL.RETURN_RESULT(c1);
 
    OPEN C2 FOR SELECT employee_id, last_name FROM employees;
    DBMS_SQL.RETURN_RESULT(c2);
 
  END;`,
 
  [],   // no binds needed
 
  { resultSet: true }
);
 
// Iterate over all the ResultSets
for (const rs of result.implicitResults) {
  while ((row = await rs.getRow()))
    console.log(row);
  await rs.close();
}

その他の変更

  • 定数を入力して、Oracleデータベースのタイプ定数の番号を変更、将来の拡張のために結合。その値ではなく、あなたのアプリケーションで定数名を使用するようにしてください
  • 新connection.currentSchemaプロパティ、修飾子で使用されるSQL文の修飾子のためのフレームワークが省略されている設定。これは、セッション設定CURRENT_SCHEMA効果的な代替の一種の変化であり、
  • outFormatを設定することにより、JavaScriptオブジェクトとして抽出されたクエリの出力ライン
  • ややあいまいな、oracledb.ARRAYとoracledb.OBJECTと呼ばれるoracledb.OBJECTを置き換えるために、新しい定数oracledb.OUT_Format_Arrayとoracledb.OUT_Format_Objectを紹介

インストール:NPMのノードORACLEDBバージョン4.0.4.0からインストールすることができるNode.jsのバージョン8以上が必要で、Node.jsの8のために、最小のパッチレベルはNode.jsの10のために、最小限のパッチレベルは10.16であり、8.16です。

詳細については、リリースノートを参照して

おすすめ

転載: www.oschina.net/news/108529/node-oracledb-4-0-released