1

Parse.comサービスがシャットダウンについて通知して以来、私はAmazon Web Servicesを使用してアプリケーションを再構築することにしました。私が理解する限り、ParseはNoSQL(MongoDB)データベースを使用し、Parseダッシュボードの一対多の関係をセットアップすることができました。ハッシュ"_id"と範囲"post_id"Amazon DynamoDB(NoSQL db)1対多の関係

{ 
"_id":"1" 
} 

とテーブル"Comment"

私は成功したハッシュ"_id"でDynamoDBのテーブル"Post"を作成

{ 
"_id":"1", 
"post_id":"1", 
"text":"my comment" 
} 

、私はすべてをポスト_id = 1を取得したいですこの投稿に関連するコメント。これを実装するための基本的なアプローチは何ですか?

  1. コメントモデルでポストを構築し、それを効率的にそれ

される戻りpost_idのでコメントを取得ポストを取得:私はDynamoDBのに2つのクエリを行いますラムダ関数を定義することだと思います1対多数の関係を設計する方法は?

+0

は、この使用してDynamoDBの操作を行うための正しい方法です。 –

+0

@ MarkBありがとうございました。私は、ParseコミュニティがデータベースをDynamoDBに適合させるのを助けるための答えとして、ラムダ関数を投稿します。 –

答えて

0

経由アマゾンの顧客サポートに手を差し伸べることをお勧めします。 dynamodbのインスタンスをインスタンス化し、指定したパラメータでクエリを実行します。かいつまんで、あなたは、あなたが興味を持っているコメントのExpressionAttributeValues post_idに提供する必要があります。あなたが説明してきた何

var AWS = require('aws-sdk'); 

exports.handler = (event, context, callback) => { 
    var dynamodb = new AWS.DynamoDB();  
    var comment_params = { 
     "TableName": "YOUR_TABLE_NAME", 
     "Select":"ALL_ATTRIBUTES", 
     "IndexName": "YOUR_GLOBAL_INDEX", 
     "Limit": 10, 
     "ConsistentRead": false, 
     "KeyConditionExpression": "#post_id = :v1", 
     "ExpressionAttributeValues": { 
      ":v1": {"S": "POST_ID"} 
     }, 
     "ExpressionAttributeNames": {"#post_id": "post_id"}, 
     "ReturnConsumedCapacity": "TOTAL" 
    } 

    dynamodb.query(comment_params, function(err, data) { 
     if (err) { 
      return callback(err); 
     } else { 
      var comment_items = data.Items; 
      return callback(null, comment_items); 
     } 
    } 
} 
1

デザインでは、Commentsテーブルをpost_idでクエリすることができます。 DynamoDBでは、クエリを作成するときにハッシュキー値を指定する必要があるため、実際にはジョインなどのリレーショナルデータベースでは些細なことが、DynamoDBでは実際には困難になります。

これを軽減する方法の1つは、コメントテーブルにGSI(グローバルセカンダリインデックス)を作成し、パーティションキーをpost_idにすることです。

また、コメントテーブルのハッシュキーをpost_id、範囲キーをcomment_idまたはtimestampにすることもできます。

私はこのことができます願っていますが、あなたはまだ疑問を持っている場合、私はあなたのポストの「関係」を取得するために私のラムダ関数を掲示、私は約束通りForums.