我正在尝试在像DynamoDB中的Instagram和Facebook这样的LIKE和COMMENT系统中实现
我有3张桌子,用户,照片和photo_likes
用户表和照片表包含user_id和photo_id键。
对于photo_likes表,我将photo_id作为键和likes_by列,我将user_id存储为列表。
所以,如果user_id 10,35喜欢photo_id 1,我将其存储为:
| photo_id | liked_by |
| 1 | {10,35} |
如果这是正确的方法,我真的很困惑吗?或者我应该只是在他们是新的时候插入一个新行。
| photo_id | user_id |
| 1 | 10 |
| 1 | 35 |
答案 0 :(得分:1)
我将提供上述方法的优点和缺点。您可能需要根据应用程序所需的查询访问模式选择正确的方法。
方法1:
| photo_id | liked_by |
| 1 | {10,35} |
优势与优势建议: - 强>
liked_by
存储为NS
或SS
而非List。所以它不会有重复。liked_by
都出现在同一项目中。这将有助于检索并在需要时在GUI上显示结果<强>缺点: - 强>
方法2:
| photo_id | user_id |
| 1 | 10 |
| 1 | 35 |
您可以将photo_id
定义为分区键,将user_id
定义为排序键。
<强>优势: - 强>
<强>缺点: - 强>
likes
应该通过迭代值来在客户端完成。在方法1中,您可以使用一些array.length
来获取likes
计数likes
计数或任何类似的sceanrio