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の新しいバージョンをダウンロードできます。



All Articles