【发布时间】:2014-02-12 06:21:00
【问题描述】:
我们正在尝试 NOSQL 文档数据库 (ravenDB),我们正在问自己一些问题。 这是我们的模型:
public class User
{
public Guid Id {get;set}
public string Name {get;set;}
}
public class Video
{
public Guid Id {get;set;}
public string Nom {get;set;}
public DateTime PublishDate {get;set;}
public User Publisher {get;set;}
public Uri Adress {get;set;}
}
默认情况下,任何人都无法阅读视频。 您可以添加在一个用户或一组用户处观看视频的权限。 您可以向一个用户或一组用户推荐视频(自动添加观看视频的权限)。
考虑到以下用例,为 NOSQL 文档数据库设计模型的最佳方法是什么:
- 用户正在发布视频,他可以选择哪些组/用户可以观看视频并将视频推荐给某些用户/组
- 用户撤回了在某些用户/组中观看视频的权利
- 获取用户被授权阅读的最后 N 个视频
- 获取最近推荐给用户的 N 个视频
我们正在考虑以下事项:
- 为每个模型(VideosReadable、VideosRecommended 和 UsersAllowedToRead、UserRecommended)添加 2 个列表,其中第一个列表包含第二个列表的所有元素
- 为每个模型添加一个Tuple列表(
ListTuple<User, bool>>和List<Tuple<Video, bool>>),bool表示是否推荐。 - 添加文档 UserVideoLink
哪一个是最简单的查询模型?还有其他更好的选择吗?
【问题讨论】:
标签: nosql domain-driven-design ravendb