Nosql RavenDB数据建模
我最近开始研究RavenDB,我试着看看它是否适合我们的一些项目。然而,我遇到了一些关于简单数据结构建模的“正确”方法的问题。我将尝试描述它:Nosql RavenDB数据建模,nosql,ravendb,document-storage,Nosql,Ravendb,Document Storage,我最近开始研究RavenDB,我试着看看它是否适合我们的一些项目。然而,我遇到了一些关于简单数据结构建模的“正确”方法的问题。我将尝试描述它: 有三种类型的对象:指南、类别和链接 “根”指南可以包含0个或多个子指南 指南可以包含0个或多个类别 类别可以包含0个或多个链接 从视觉上看,结构应为: 根指南(0或更多) 子指南(0或更多) 类别(0或更多) 链接(0或更多) 类别(0或更多) 链接(0或更多) 在实际数据中,每个根指南下大约有20个根指南和3-5个子指南。在每个
- 有三种类型的对象:指南、类别和链接
- “根”指南可以包含0个或多个子指南
- 指南可以包含0个或多个类别
- 类别可以包含0个或多个链接
- 根指南(0或更多)
- 子指南(0或更多)
- 类别(0或更多)
- 链接(0或更多)
- 类别(0或更多)
- 类别(0或更多)
- 链接(0或更多)
- 子指南(0或更多)
Guide
---------------
Id
Title
SubGuides
Categories
SubGuide
---------------
Title
Categories
Category
---------------
Title
Links
Link
---------------
Title
session.Query<Guide>().Include(x=>x.SubGuides).Where(x=>x.Parent == null).ToList();
因为这将导致文档可能包含数千个子对象。请记住,上面的模型是简化的。实际上,每种类型都有更多的数据,因此如果我们使用这种模型,RavenDB中的20个根指南文档将是巨大的
还有其他选择吗?也许这是我多年来在关系数据库方面糟糕的成长经历,但也许这个场景不适合RavenDB,也不适合SQL
编辑(添加基本查询)
访问数据相当简单。我有以下要求:
这基本上就是我所需要的。然而,评估RavenDB或类似产品的原因之一是添加一些搜索功能。正如我已经提到的,还有一些关于链接、类别和指南的更多信息,如描述、标签等。因此,能够搜索所有这些信息将是一件好事。我会处理一些事情,使指南成为一个文档。 类别和链接嵌入到该文档中 指南可以有一系列子指南 第一个查询是查询所有指南及其子目录。你是这样做的:
Guide
---------------
Id
Title
SubGuides
Categories
SubGuide
---------------
Title
Categories
Category
---------------
Title
Links
Link
---------------
Title
session.Query<Guide>().Include(x=>x.SubGuides).Where(x=>x.Parent == null).ToList();
session.Query().Include(x=>x.SubGuides)。其中(x=>x.Parent==null)。ToList();
这将在一个服务器查询中提供所有信息
session.Include<Guide>(x=>x.SubGuides).Load("guides/123")
session.Include(x=>x.SubGuides).加载(“guides/123”)
这将为您提供一个包含所有it子指南的指南。正确的建模方法在很大程度上取决于您计划如何访问它,以及您希望如何通过定义聚合来安排事务边界。如果我知道您的应用程序将如何访问这些数据,那么帮助您会容易得多。我添加了我们今天使用的两个基本查询:谢谢你,艾恩德。如果我选择此结构,是否可以使用搜索索引搜索链接?我猜索引只会找到指导文档,还是我错了?