1

Kapanma hakkında duyuruldu Parse.com hizmet beri, benim uygulama Amazon Web Services kullanarak yeniden oluşturmaya karar verdim. Parse'ın NoSQL (MongoDB) veritabanını kullandığını anladığım kadarıyla Parse panosunda bire çok ilişki kurmayı başardım. Ben tüm yazı _id = 1 getirmesini istediğiniz ŞimdiAmazon DynamoDB (NoSQL db) bire bir ilişki

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

: karma "_id" ve aralık "post_id" ile

{ 
"_id":"1" 
} 

ve masa "Comment":

başarıyla karma "_id" ile DynamoDB tablo "Post" yarattı Bu yazı ile ilgili yorumlar. Bunu uygulamak için temel yaklaşımlar nelerdir?

  1. Yorumlar Modeli ile Yayınla Construct ve verimli o

mi dönmek post_id ile Yorumlar Fetch Yayınla getir: Ben DynamoDB için iki sorgu yapacak bir Lambda fonksiyonunu tanımlamak için düşünüyorum Bire-çok ilişkiyi tasarlamanın yolu?

+0

bu kullanarak DynamoDB yapmak için doğru bir yoldur. –

+0

@MarkB Teşekkür ederim, Parse topluluğunun veritabanlarını DynamoDB'ye uyarlamasına yardımcı olmak için bir Lambda işlevi yayınlayacağım. –

cevap

0

aracılığıyla Amazon müşteri desteğine ulaşmak için teşvik edecek. Bir dynamodb örneğini başlatır ve sağladığınız parametrelerle bir sorgu oluşturur. Uzun lafın kısası, sen ilgilenen yorumların ExpressionAttributeValues ​​post_id yılında sağlamanız gerekir. Tarif ettiğiniz ne

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

Tasarımınızda, karşılaşacağınız bir sorun, Yorumlar tablosunu post_id ile sorgulama yeteneğidir. DynamoDB, sorguları yaparken bir hash anahtar değeri sağlamanızı gerektirir, bu nedenle birleşimler gibi ilişkisel veritabanlarında önemsiz olan şeyler DynamoDB ile oldukça zor olabilir.

Bunu azaltmanın bir yolu, Yorumlar tablonuzda bir GSI (Global İkincil İndeks) oluşturarak post_id numaralı bölüm anahtarını oluşturmaktır.

Diğer seçenek, Yorumlar tablosundaki post_id ve aralık anahtarının comment_id veya timestamp aralıklarındaki karma anahtarını yapmaktır.

umarım bu yardımcı olur ancak yine sorularım olursa Gönderiminizin "ilişkisini" getirmesi benim lambda fonksiyonu gönderme, söz verdiğim gibi Forums.