2017-05-20 2 views
0

私は、約100.000のアイテムを持つDynamoDBデータベースを持っています。 アイテムはほとんどフラットですが、カテゴリのリストを含んでいます。NoSqlとリストによるクエリ

{ 
    "name": "Protine shaker", 
    "categories": [ 
    "Sport", 
    "Kitchen" 
    ]; 
} 

は、私には、例えば、カテゴリ「スポーツ」のメンバーであるすべてのアイテムを見つけることができるようにしたいが、それはリストがあるとして、私ではないインデックス、それことができます。 純粋なDyanmoDBソリューションの私の唯一の選択肢は、テーブル全体をスキャンすることです。これは頻繁に行うと高価になる可能性があります。

私は、カテゴリマッピングを含むDynamoDBに加えてSQLデータベースを持つことができると思っていました。または、別のDynamoDBでそのカテゴリのアイテムのリストを含む各カテゴリのオブジェクトを紹介することもできます。

DynamoDBを使用しているときのこのような問題に対する通常の/一般的な解決策は何ですか?私は、これが共通の問題でなければならないと推測しています。

答えて

1

DynamoDBとElasticSearchを統合することができます。これにより、DynamoDBでサポートされていないデータをより多くのオプションで照会できます。 ElasticSearchでインデックスを作成し、そこにクエリを実行するだけです。

始めるため

:自分で二つの異なるデータ・ストアに同期して情報を保持する必要がありますので、SQLデータベースを持つhttps://aws.amazon.com/about-aws/whats-new/2015/08/amazon-dynamodb-elasticsearch-integration/

は良い解決策ではありません。メンテナンスのための操作上の痛みのように見えます。

カテゴリごとに複数のDynamoDBテーブルを作成することはスケーラビリティがありません。この場合でも、可能性はあるがパフォーマンスは低下する複数のDynamoDBテーブルを更新する必要があります。また、AWSラムダは、 DynamoDBアップデートストリーム。しかし、それでもスケーラビリティのために回避する方が良いです。新しいカテゴリが導入されるたびに新しいテーブルを作成する必要があります。