15 рдордИ рдХреЛ, рдореБрдлреНрдд NoSQL DBMS GlobalsDB 2012.2 рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдирдпрд╛ рдХреНрдпрд╛ рд╣реИWindows рдХреЗ рд▓рд┐рдП рдХрдИ
Node.JS API рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдФрд░ рддреБрд░рдВрдд Windows 64-рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
рдЫреЛрдЯреЗ рдкрд░рд┐рд╡рд░реНрдзрди рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдХреБрдЫ рдХреАрдбрд╝реЗ рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдмрд╛рдХреА
ред
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯ GlobalsDB 2012.2 рдХрд╛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг
рдпрд╣рд╛рдБ рд╣реИ ред
рдЧреНрд▓реЛрдмрд▓реНрд╕рдмреАрдбреА рдиреЛрдб.рдЬреЗрдПрд╕ рдПрдкреАрдЖрдИ
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП Node.js
рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП Node.js рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдПрдкреАрдЖрдИ рдиреЛрдб.рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдиреЛрдб рдЬреАрдПрд╕ рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди
рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ cache061.node (cache061_node.dll) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд┐рдЫрдбрд╝реЗ рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ cache.node рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
var globals = require ('cache');
рд╡рд┐рдВрдбреЛрдЬ 64-рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг 0.6.13x64 рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдХреЗ 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдиреЛрдб.рдЬреЗрдПрд╕ 0.7.x рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд╛рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рд╢рд╛рдЦрд╛ рдиреЛрдб рдХрд╛ рдХреЛрдИ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдгред js. рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдЧреЗрдЯ () рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрдЬрд╛рдп 'рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд' рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддреА рд╣реИ
рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП, 'рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд' рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп Get () рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдлрд┐рд░ рднреА, рдпрджрд┐ рдЖрдк JSON (рдЕрдиреБрд╢рдВрд╕рд┐рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдиреЛрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рдорд╛рди рд╣реИ (рднрд▓реЗ рд╣реА рд╡рд╣ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ)ред рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рди рдХреЗ рд╕рд╛рде рдиреЛрдб:
{ "ok" 1, "global": "Customer", "subscripts": [1, "name"], "data": "InterSystems", "defined": 1 }
рдиреЛрдб рдорд╛рди:
{ "ok" 1, "global": "Customer", "subscripts": [1, "first-name"], "data": "", "defined": 0 }
Globals $ Query рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди () Node.JS рд╡рд┐рдзрд┐ рдореЗрдВ previouse_node () рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛
рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, GlobalsDB $ Query () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдиреЛрдб .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) {
рдЙрджрд╛рд╣рд░рдг 1
myData.previous_node({ global: 'company', subscripts: [2] }, function(error, result) { if (!error) {
рдкрд░рд┐рдгрд╛рдо
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) {
рдкрд░рд┐рдгрд╛рдо:
previous_node(): {
ok: 1,
global: "company",
subscripts: [1, "address", "state"],
defined: 1,
data: "MA"
}
рд╡реЗрддрди рд╡реГрджреНрдзрд┐ () рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде "рд╡рд┐рд╕рдВрдЧрддрд┐" рд╣рд▓ рдХрд┐рдпрд╛
JSON рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ () рдкрджреНрдзрддрд┐ рдиреЗ рд╡рд┐рд╕рдВрдЧрддрд┐ рддрдп рдХреАред
рдпрджрд┐ JSON рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдХрд╛ рдЕрдВрддрд┐рдо рддрд░реНрдХ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЬрдм рдХреЗрд╡рд▓ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗрддрди рд╡реГрджреНрдзрд┐ 1 рд╣реЛрдЧреАред
рдпрджрд┐ JSON рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ () рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдореВрд▓реНрдп рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдЕрдЧрд░ рдпрд╣ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ 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 = рд╡реИрд╢реНрд╡рд┐рдХ рдиреЛрдб рдореВрд▓реНрдп + рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓
рд╣рд╕реНрддрд╛рдХреНрд╖рд░
myData.increment({ global: 'myGlobal' [, subscripts: [sub(1) ,...,sub(N) ]], increment: incVal }, function(error, result) { if (!error) {
рдкрд░рд┐рдгрд╛рдо
{
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) {
рдкрд░рд┐рдгрд╛рдо
increment(): {
ok: 1,
global: "company",
subscripts: ["counter"],
data: "totVal"
}
рдорд╛рдореВрд▓реА рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдмрдЧ рдлрд┐рдХреНрд╕
1. рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ Global_directory () рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╕рдордп рдирд┐рд╢реНрдЪрд┐рдд рдкрд╣реБрдВрдЪ рдЙрд▓реНрд▓рдВрдШрдиред
2. рдЧреНрд▓реЛрдмрд▓реНрд╕ рдУрдкрди () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрдИ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
3. 'рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕' рдХрдиреЗрдХреНрд╢рди рдореЛрдб рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдореЛрдб рдореЗрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдиреЛрдб рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ) рдФрд░ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдХрдиреЗрдХреНрд╢рди рд╕рдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИред
рдЧреНрд▓реЛрдмрд▓реНрд╕ + .NET рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди
Visual Basic рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
Visual Basic рдЙрджрд╛рд╣рд░рдг C # рдФрд░ Java рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
<globals-root>/dev/dotnet/samples/globals/vb
рдпрд╣рд╛рдВ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред