2014-10-05 114 views
0

我正在研究將使用DynamoDB的項目,我對如何更新具有包含項目數組的屬性的文檔有點困惑。DynamoDB更新HasMany關係

我希望用這個NPM模塊https://www.npmjs.org/package/dynamodb-model

例架構

# User Schema 
{ 
    "identifier": "String", 
    "email": "String", 
    "referral_token": "String", 
    "campaign_id": "Number", 
    "first_name": "String" 
    "last_name": "String", 
    "gender": "String", 
    "birth_date": "String", 
    "username": "String", 
    "mobile_number": "String", 
    "postal_code_text": "String", 
    "classification": "String", 
    "delivery_email": "Boolean", 
    "delivery_sms": "Boolean", 
    "authentications": [{Authentication Schema}] 
} 

# Authentication Schema 
{ 
    "provider": "String", 
    "uid": "String", 
    "oauth_token": "String", 
    "oauth_token_secret": "String", 
    "nickname": "String" 
} 
+1

字符串數組是否不夠?另外,請詳細說明您打算如何使用「身份驗證」屬性。如果您只是打算讀取它並覆蓋之前的值,則不需要做任何特別的事情。 – kurtzbot 2014-10-07 21:24:30

回答

0

由於kurtzbot指出的那樣,你可以將它們存儲爲一個數組。更好的是,您可以使用新的JSON文檔模型。它會爲你處理數組序列化/反序列化。 http://aws.amazon.com/blogs/aws/dynamodb-update-json-and-more/

在另一方面,如果一個用戶可以有「認證」了很多,我建議設計方案這樣來避免熱點問題:

User table: just like the tables you already have, without authentications fields 

Auth table: same table you already have 

user-auth table: User.identifier as hashkey, Authentication.uid as range key. 

有了這個模式,插入新用戶的身份驗證不需要讀取任何現有的用戶身份驗證對。