GlobalsDB 2012.2リリース

5月15日、無料のNoSQL DBMS GlobalsDB 2012.2の新しいバージョンがリリースされました。

新機能
多くのWindows用Node.JS APIインターフェースで期待され、すぐにWindows 64ビット用に追加されました。
小さな追加が実装され、いくつかのバグが修正されました。
これと残りについて

英語版のGlobalsDB 2012.2のリリースノートの完全版はこちらです。

GlobalsDB Node.JS API


Windows用のNode.js

このバージョンでは、Windows用のNode.jsのサポートが追加されます。 このAPIは、node.js 0.6xバージョンファミリで動作します。Nodejs APIドキュメントはこちらから入手できます
Windowsの拡張機能はcache061.node(cache061_node.dll)と呼ばれます。 後方互換性のために、モジュールの名前をcache.nodeに変更し、次のようにjavascriptに含めることができます。

var globals = require ('cache'); 

Windows 64ビットのサポート

node.jsバージョン0.6.13x64の64ビットバージョンのWindowsのサポートも実装されています。
node.js 0.7.xのバージョンファミリは現在サポートされていません。 このブランチnode.jsの安定バージョンはまだリリースされていません

Get()メソッドは、「undefined」ノードに対してエラーではなく空の文字列を返します

このバージョンでは、未定義ノードの場合、Get()は「未定義」エラーをスローする代わりに空の文字列を返します。
それでも、JSONを使用する場合(推奨)、どのノードに実際に値がないか、および値がどこにあるか(空の文字列であっても)を判別できます。 これは、定義されたキーによって決定できます。

値を持つノード:
 { "ok" 1, "global": "Customer", "subscripts": [1, "name"], "data": "InterSystems", "defined": 1 } 


ノード値:
 { "ok" 1, "global": "Customer", "subscripts": [1, "first-name"], "data": "", "defined": 0 } 


Nodes.JSメソッドpreviouse_node()でのGlobals $ Query()機能の実装


このバージョンでは、GlobalsDB $ Query()関数の動作はnode.js previouse_node()メソッドに実装されています。

このメソッドは、現在のレベルでノードがなくなった場合、現在のレベルまたは親でノードのソートシーケンスの前のノードを返します。 このメソッドは、グローバルの名前、ノードの完全なリンク、および値を返します。

次のデータをグローバルで定義してみましょう:

 company[1]="InterSystems" company[1, "address", "city"]="Cambridge" company[1, "address", "state"]="MA" company[1, "address", "country"]="USA" company[1, "dateOfIncorporation"]="April 1976" 


同期コール:
署名

 var result = myData.previous_node({ global: 'myGlobal' [, subscripts: [sub(1) ,...,sub(N) ]] } ); 


例1

 var result = myData.previous_node({ global: 'company', subscripts: [2] } ); console.log('\n'); console.log('previous_node(): ' + JSON.stringify(result, null, '\t')); 


結果:

previous_node(): {
ok: 1,
global: "company",
subscripts: ["dateOfIncorporation"],
defined: 1,
data: "April 1976"
}


例2

 var result = myData.previous_node({ global: 'company', subscripts: [1, 'address', 'country'] } ); console.log('\n'); console.log('previous_node(): ' + JSON.stringify(result, null, '\t')); 

結果
previous_node(): {
ok: 1,
global: "company",
subscripts: [1, "address", "city"],
defined: 1,
data: "Cambridge"
}


都市ノードはソート順序の前にあるため、呼び出しの結果は正確に都市ノードになることに注意してください。

非同期呼び出し

署名
 myData.previous_node({ global: 'myGlobal' [, subscripts: [sub(1),...,sub(N)]] },  function(error, result) {  if (!error) {  // --- Success ---  console.log('\n');  console.log('previous_node(): '+JSON.stringify(result, null, '\t'));  }  else {  // --- Error ---  console.log('\n');  console.log('ERROR: previous_node(): '+JSON.stringify(result, null, '\t'));  } } ); 


例1
 myData.previous_node({ global: 'company', subscripts: [2] },  function(error, result) {  if (!error) {  // --- Success ---  console.log('\n');  console.log('previous_node(): '+JSON.stringify(result, null, '\t')); }  else {  // --- Error ---  console.log('\n');  console.log('ERROR: previous_node(): ' + JSON.stringify(result, null, '\t'));  } } ); 


結果

previous_node(): {
ok: 1,
global: "company",
subscripts: ["dateOfIncorporation"],
defined: 1,
data: "April 1976"
}


例2

 myData.previous_node({ global: 'company', subscripts: [1, 'address', 'country']},  function(error, result) {  if (!error) {  // --- Success ---  console.log('\n');  console.log('previous_node(): '+JSON.stringify(result, null, '\t'));  }  else {  // --- Error ---  console.log('\n');  console.log('ERROR: previous_node(): ' + JSON.stringify(result, null, '\t'));  } } ); 

結果:

previous_node(): {
ok: 1,
global: "company",
subscripts: [1, "address", "state"],
defined: 1,
data: "MA"
}


increment()メソッドで「異常」を解決

increment()メソッドは、JSON呼び出しを使用するときにincrementプロパティを追加することで異常を修正しました。
JSONを使用してincrement()を呼び出さない場合、メソッドの最後の引数はインクリメント値として解釈されます。ただし、グローバル名のみが渡される場合を除きます。この場合、インクリメントは1になります。
JSONを使用してインクリメント()にパラメーターを渡す場合、インクリメント値はincrementプロパティから取得されます。設定されていない場合は1になります。

同期操作

増分を明示的に指定する

 var result = myData.increment(globalName [,sub(1),...,sub(N)], increment); 

この場合、増分が必要です。

 var result = myData.increment('company','counter',1); console.log('\n'); console.log('increment(): ' + result); 


暗黙的な表示
 var result = myData.increment({ global: 'myGlobal' [, subscripts: [sub(1) ,...,sub(N) ]][, increment: incVal] } ); 

増分-ここでは、正または負の数値を指定できます。これにより、ノード値を増減できます(デフォルト= 1)。

例:
 var result = myData.increment({ global: 'company', subscripts: ['counter'], increment: 1 } ); console.log('\n'); console.log('increment(): ' + JSON.stringify(result, null, '\t')); 


結果:
increment(): {
ok: 1,
global: "company",
subscripts: [
"counter"
],
data: "totVal"
}

totVal =呼び出す前の値に等しいグローバルノード値+ increment

非同期呼び出し

署名
 myData.increment({ global: 'myGlobal' [, subscripts: [sub(1) ,...,sub(N) ]], increment: incVal },  function(error, result) {  if (!error) {  // --- Success ---  console.log('\n');  console.log('increment(): ' + JSON.stringify(result, null, '\t'));  }  else {  // --- Error ---  console.log('\n');  console.log('ERROR: increment(): ' + JSON.stringify(result, null, '\t'));  } } ); 

結果
{
ok: [0 | 1],
global: "global-name",
subscripts: [[list-of-subscripts-]],
data: "totVal"
}


例:
 myData.increment({ global: 'company', subscripts: ['counter'], increment: 1 },  function(error, result) {  if (!error) {  // --- Success ---  console.log('\n');  console.log('increment(): ' + JSON.stringify(result, null, '\t'));  }  else {  // --- Error ---  console.log('\n');  console.log('ERROR: increment(): ' + JSON.stringify(result, null, '\t'));  } } ); 

結果

increment(): {
ok: 1,
global: "company",
subscripts: ["counter"],
data: "totVal"
}


マイナーな変更とバグ修正

1.非同期呼び出しglobal_directory()のエラーを処理するときのアクセス違反を修正しました。

2.グローバルは、open()メソッドへの複数の呼び出しで正しく動作します。

3.「プログラマー」接続モードが表示されます。 このモードでは、エラーの詳細情報が表示され(たとえば、ノードの上部に空の文字列を書き込もうとした場合)、エラーが発生しても接続はアクティブのままです。

グローバル+ .NETの変更

Visual Basicの例を追加

Visual Basicの例は、C#およびJavaの例の機能を繰り返します。
例はインストールディレクトリにあります。

<globals-root>/dev/dotnet/samples/globals/vb


ここでは、さまざまなプラットフォームおよびAPIのGlobalsの新しいバージョンをダウンロードできます。

Source: https://habr.com/ru/post/J145444/


All Articles