我对 Dynamo 或 Mongo 等 NoSQL 存储的理解是,您应该考虑非规范化并根据您将执行的查询创建表。
我正在为如何设置我的桌子而苦苦挣扎。
我已经确定了我想要运行的查询。
我已经将普通的 SQL 查询翻译成“简单的英语”
例如,我要运行的查询将转换为:
“获取在 date_x 和 date_y 之间拍摄的所有照片,其中摄影师是 John,获得最多票数”
由于我不能进行表连接,这就是我想出的:
photos
{
name,
url,
photographer,
date_created,
likes,
dislikes,
num_voters,
weighted_score
}
这是正确的方法吗?
我有喜欢、不喜欢、num_voters 和 weighted_score 的原因是因为我相信,每当用户对照片投票时,我需要更新“行”并增加喜欢/不喜欢/num_voters 并重新计算 weighted_score(这样投票人数少的高评价项目不会影响我的排行榜)
然而,
因为我正在应用“过滤器”——我假设像 Dynamo 这样的键/值存储不是我想要的?
还有一个问题:假设我有一个摄影师表,我想删除一个摄影师。然后我有责任浏览照片并被摄影师删除吗?同样,由于它是非关系型的,我假设没有级联类型功能?
谢谢