私はMySQLに精通しており、Amazon DynamoDBを新しいプロジェクトに使用し始めています。このMySQL Queryの同等のDynamoDBソリューションとは何ですか?
CREATE TABLE foo (
id CHAR(64) NOT NULL,
scheduledDelivery DATETIME NOT NULL,
-- ...other columns...
PRIMARY KEY(id),
INDEX schedIndex (scheduledDelivery)
);
注スピードアップするために(定期的に実行される)次のクエリを想定している二次インデックスschedIndex
:
SELECT *
FROM foo
WHERE scheduledDelivery <= NOW()
ORDER BY scheduledDelivery ASC
LIMIT 100;
は、私はこのようなMySQLのテーブルを持っていると仮定しますは:配信されることになっている100の最も古いアイテムを取る。
DynamoDBでは、id
の列をプライマリパーティションキーとして使用できます。
しかし、DynamoDBでフルテーブルスキャンを回避する方法はわかりません。セカンダリインデックスを追加するときは、必ず「パーティションキー」と指定する必要があります。しかし、(MySQLの言葉で)私は、これらの問題を参照してください。それはパーティション・キーそのものとして使用することはできませんので
scheduledDelivery
列は、ユニークではありません私の知る限りid
としてユニークなパーティションを追加キーと私はMySQLとDynamoDBのは、別のアプローチが必要であることを理解
インデックスがpratically役に立たないことになり、「ソート・キー」私に(id, scheduledDelivery)
セカンダリインデックスのように聞こえる、とscheduledDelivery
を使用してこの場合、適切な解決策は何でしょうか?
。私は疑問に思っています:DynamoDB/NoSQLを使用する場合、ここで説明されているような問題をまったく別の方法で解決しますか?おそらく別のテーブルデザインや追加のテーブルを使用していますか? –