multiGet()の使用
Store.multiGet()
を使用すると、複数の行で同じシャード・キーが共有されている場合、それらの行を一度に取得できます。このメソッドに、完全なセットのシャード・キーを指定する必要があります。
取得セットがメモリーに完全に収まる場合にのみStore.multiGet()
を使用します。
たとえば、次のように設計されている製品に関する情報を格納する表があるとします。
CREATE TABLE myTable (
itemType STRING,
itemCategory STRING,
itemClass STRING,
itemColor STRING,
itemSize STRING,
price FLOAT,
inventoryCount INTEGER,
PRIMARY KEY (SHARD(itemType, itemCategory, itemClass), itemColor,
itemSize)
)
次のようなデータを含む表:
-
行1:
-
itemType: Hats
-
itemCategory: baseball
-
itemClass: longbill
-
itemColor: red
-
itemSize: small
-
price: 12.07
-
inventoryCount: 127
-
-
行2:
-
itemType: Hats
-
itemCategory: baseball
-
itemClass: longbill
-
itemColor: red
-
itemSize: medium
-
price: 13.07
-
inventoryCount: 201
-
-
行3:
-
itemType: Hats
-
itemCategory: baseball
-
itemClass: longbill
-
itemColor: red
-
itemSize: large
-
price: 14.07
-
inventoryCount: 39
-
この場合、itemType
フィールドがHats
に設定され、itemCategory
フィールドがbaseball
に設定されているすべての行を取得できます。itemClass
、itemColor
およびitemSize
はこの問合せには使用されていないため、これは部分主キーを表すことに注意してください。
...
// Store handle configuration and open skipped for brevity
...
store.on('open', function () {
console.log('Store opened');
var shardKey = {itemType: "Hats",
itemCategory: "baseball",
itemClass: "longbill"};
store.multiGet('myTable', shardKey, null,
function (err, result) {
if (err)
throw err;
else {
console.log("Retrieved rows:");
for (var key in result.returnRows)
console.log(result.returnRows[key].row);
store.close();
}
});
}).on('close', function() {
console.log('Store closed.');
}).on('error', function(error) {
console.log(error);
});
store.open();
前の例では、MultiGetResult
オブジェクトに返された結果を反復処理できます。このオブジェクトには、returnRows
プロパティで保持される配列内の結果セットが含まれます。この配列の各要素は、(row
プロパティを使用してアクセス可能な)取得済の行に加え、表名(returnRows[x].table
)および行バージョン情報(returnRows[x].version
)も提供します。