2017-05-25 13 views
0

私はGSIを使用するための最良の方法についての質問を読んでいると私は必要がありますが、私はまだいくつかの質問を持っているもの、これは1 DynamoDB : Global Secondary Index utilisation in queriesが近くに来ました。 PRODUCT_NAMEに基づいて1 GSIを作成する私の理解からDynamoDBのGSIクエリ:どのような役割ソートキープレー

1. product_name=? 
2. product_name=? AND launch_year=? 
3. product_name=? AND manufacturer=? 

product_id (partitions_key), product_name, launch_year, manufacturer 

私は、クエリの次の3種類を行う必要があります。私はフィールドを持つ製品のテーブルを持っているところ

私がシナリオを持っています3つの目的すべてをサーバーにします。 私が理解したいことは、ソートキーがクエリ2と3をスピードアップするので、launch_yearとメーカーのGSIを2つ追加することでしょうか? sort keyの唯一の目的は、ソートされたデータを返すことですか?またはDynamobのクエリは、関心のあるフィールドがソートされているという事実をどうにか利用しますか?さらに2つのインデックスを作成するために

+0

キーパーティションを持っているとして、あなたはまだ、おそらくあなたはだから私はDynamoDBのクエリを想定してバイナリ検索 –

+0

について読みたいクエリAPIを使用することができ、これらすべてのオプションFilterExpression

  • を使用することができますこのシナリオでは、バイナリ検索ではなくリニア検索を使用しますか? – user2703829

  • +0

    はい、これが索引の唯一の目的です:フルスキャンを避けるためにソートされた複製を作成する –

    答えて

    0

    必要はありません。理由は次のとおりです。 -

    1. 追加費用がかかります。複数のGSISを有する上記の2ユースケースのために、
    2. また、読み取りと書き込み容量のユニットのためにあなたの費用がかかります、これは必須ではありません。 FilterExpressionsを使用してデータをフィルタリングすることもできます。launch_yearmanufacturer
    3. もう1つの方法は、product_namelaunch_yearのGSIを1つだけ使用することです。だからあなたは2つのユースケースで覆われています。第3回ユースケースについて、あなたはproduct_name
    +0

    ありがとう – user2703829

    +0

    有用であれば親切に答えを受け入れてください。ありがとう! #3 PRODUCT_NAMEとlaunch_yearにGSIを持つすなわち(コンポジット)用@notionquest – notionquest

    +0

    、私のレコードの数がnull launch_yearと非ヌルPRODUCT_NAMEを持っている場合。私はproduct_nameだけを使ってこのGSIテーブルを照会している間は、launch_yearがnullのレコードを私に取ってこないと思います。ダイナモはこのレコードをGSIテーブルに入力しません。私を修正してください。 – Somil

    関連する問題