簡體   English   中英

AWS DynamoDB表結構?

[英]AWS DynamoDB table structure?

為了達到以下目的,在DynamoDB上構建表的最佳方法是什么?

如果我制作了一個用於電影評論的應用程序,那么我需要一個電影頁面,其中包含該電影的評論,以及用戶帳戶頁面,其中包含用戶在該應用程序上撰寫的所有評論。

電影桌

-------------------------
| movie_id | movie_name |
-------------------------

審查表

---------------------------------------------------
| review_id | movie_id | user_id | review_content |
---------------------------------------------------

對於DynamoDB有意義嗎? 這樣我就可以查詢movie_idmovie_name電影頁面,名單上review_content通過movie_id然后查詢review_contentuser_id用戶帳戶頁面上。

先感謝您。

像RDBMS一樣,您不需要規范化數據,即不需要創建兩個不同的表。 NoSQL數據庫上的重點是,如果可能的話,將用例的大多數必需數據保存在一張表中。

假設以上數據不超過一個項目的最大限制400 KB (即DynamoDB中一個項目的最大限制),則可以將所有數據保留在一個表中。

建議的數據模型:

創建一個名為Movie表,其中包含所有必需的信息。 關於用例的好處是,您知道分區鍵, movie_id 您可以使用DynamoDB中可用的查詢API通過movie_id獲取數據,這將為您提供所有為user_ids編寫評論注釋的movie_id

在這種方法中,您不必將審閱數據與另一個表分開獲得,這樣可以節省成本並提供更好的性能

電影表:

movie_id ==>分區鍵

user_id ==>排序鍵

MOVIE_NAME

REVIEW_ID

review_content

注意:-

我不了解review_id的目的,除非您有一個單獨的用例來通過review_id獲取詳細信息。

編輯-Json格式:-

user_id是SORT密鑰。 它應該在外部reviews之外。

{
  "movie_id" : 1,
  "user_id" : "1"   
  "movie_name" "Name of movie",
  "review_comments" : ["A great movie", "I love it"]                
}

分區和排序鍵:-

對於復合主鍵(分區鍵和排序鍵),您必須按順序提供恰好兩個元素:第一個元素必須具有HASH的KeyType,第二個元素必須具有RANGE的KeyType。

分區鍵和排序鍵-由兩個屬性組成的復合主鍵。 第一個屬性是分區鍵,第二個屬性是排序鍵。 DynamoDB使用分區鍵值作為內部哈希函數的輸入。 哈希函數的輸出確定將存儲項目的分區。 具有相同分區鍵的所有項目都按排序鍵值的排序順序存儲在一起。 兩個項目可能具有相同的分區鍵值,但是這兩個項目必須具有不同的排序鍵值。

在上述模型中,我們具有唯一標識項(即RDBMS中的記錄)的哈希和排序鍵。 哈希鍵是movie_id ,排序鍵是user_id 一個movie_id可以具有多個user_id,這些user_id在DynamoDB表中構成多個項目(即RDBMS術語,稱為記錄)。

例:-

movie id 1, user id 1, movie name 1, review comments 1
movie id 1, user id 2, movie name 1, review comments 2
movie id 2, user id 3, movie name 2, review comments 1

如前所述, review_comments是一個Dynamodb List或Set數據類型,可以具有多個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM