NoSQLでのインデックスのクエリ
Catalystでは、NoSQLインデックスをクエリし、インデックスのプライマリキーを使用してアイテムを識別することでデータを取得できます。インデックスを使用すると、メインテーブルのプライマリキーを使用せずにテーブルデータに対して代替クエリを実行できます。インデックスはCatalystコンソールから設定できます。インデックスのパーティションキーのみ、またはパーティションキーとソートキーの組み合わせを使用してアイテムを取得できます。
Note: Catalystでは、1回のSDK操作でNoSQLテーブルからページネーション付きで最大100件のアイテムを一括取得できます。SDKレスポンスで受信したstart_keyトークンを使用して、ページネーションのロジックを構築する必要があります。
属性、必要な値、および使用するサポートされる演算子を指定して、アイテムを識別するキー条件を定義できます。サポートされる演算子は以下のとおりです。
| Operators | Notation |
|---|---|
| CONTAINS | contains |
| NOT_CONTAINS | not_contains |
| BEGINS_WITH | begins_with |
| ENDS_WITH | ends_with |
| IN | in |
| NOT_IN | not_in |
| BETWEEN | between |
| NOT_BETWEEN | not_between |
| EQUALS | equals |
| NOT_EQUALS | not_equals |
| GREATER_THAN | greater_than |
| LESS_THAN | less_than |
| GREATER_THAN_OR_EQUALS | greater_equal |
| LESSER_THAN_OR_EQUALS | less_equal |
| AND | AND |
| OR | OR |
以下の例では、インデックスFruitIdentifierのパーティションキーfruitColorを使用してアイテムを識別し、条件値を「yellow」として指定してクエリを実行しています。クエリはqueryIndex()メソッドを使用して実行されます。
Catalyst NoSQLでは、consistent_readを使用して読み取り操作をマスタークラスターまたはスレーブクラスターのどちらで実行するかを指定したり、返される行数を制限したり、昇順のソート順序を指定するなど、クエリの他の要素も定義できます。
Note: マスター・スレーブレプリケーションでは、マスターにはデータベースのすべてのデータが含まれ、スレーブにはマスターからのコピーが含まれます。スレーブから読み取り操作を実行すると、更新されたデータの反映にわずかな遅延が生じるというトレードオフがありますが、全体的なコストを削減できます。
zcatalyst-sdk-nodeパッケージのno-sqlライブラリは、NoSQLアイテムの定義に必要です。
copy
const { NoSQLMarshall, NoSQLEnum } = require('zcatalyst-sdk-node/lib/no-sql');
const { NoSQLOperator } = NoSQLEnum;
//パーティションキーfruitColourの値「yellow」で識別されるアイテムを取得するためにNoSQLテーブルインデックスをクエリする
const queriedIndexItems = await table.queryIndex('FruitIdentifier', {
//アイテムをクエリするためのキー条件を定義する
key_condition: {
attribute: 'fruitColor',
//使用するサポートされた演算子を定義する
operator: NoSQLOperator.EQUALS,
value: NoSQLMarshall.makeString('yellow')
},
// consistent_readをtrueに設定してマスターからクエリする。falseに設定するとスレーブからクエリされる。
consistent_read: true,
//値を指定して返される行数を制限する
limit: 15,
// forward_scanをtrueに設定して結果を昇順にソートする。それ以外の場合は降順にソートされる。
forward_scan: true
});
最終更新日 2026-03-24 17:38:39 +0530 IST
Yes
No
Send your feedback to us
Skip
Submit