【发布时间】:2018-06-06 03:29:07
【问题描述】:
假设我有一个小组:
class Group {
int Id
}
还有一个成员:
class Member {
int Id
List<int> GroupIds
}
任一 1) 成员可以拥有此 GroupIds 属性,并像这样查询
var groupMembers = session.Query<Member>().Where(m => m.GroupIds.Contains(groupId)
或者 2) 我可以定义一个 GroupMember
class GroupMember {
int GroupId
int MemberId
//Extra information
}
var groupMembers = session.Query<GroupMember>().Where(m => m.GroupId == groupId)
我有大约 10,000,000 个成员和 1,000 个组,每个组可以有大约 100,000 个成员,每个成员可能属于 10 个组。
从设计角度来看,第一个选项更可取,但与普通属性索引相比,集合索引的性能如何?
如果一个成员可以成为 100 或 1000 个群组的一部分,这种情况会改变吗?
【问题讨论】:
-
为什么不使用``` class Group { int Id;列出
MemberIds; } 类成员 { int Id; } ``` -
我从它开始,但是 GroupMember 中的一些额外信息是 MemberName,我需要在没有加入的情况下快速使用它,并且有 100,000 个成员,文档的大小原来是 40mb ,很难下载
标签: c# linq indexing lucene ravendb