在我们基于乌鸦的应用程序中,当主文档的大小开始增加时,我们开始遇到主要的性能问题,因为它拥有大量不断增长的集合。因此,我现在计划重新设计一个重要的数据,这可能需要几个月的时间,我想确保在我这样做之前我已经走上正轨。
目前的设计如下:
Community
{
id:,
name,
//other properties
members[
{
id:,
name:,
date of birth:
//etc
},
{
//another member, this list could potentially grow to hundreds of thousands
}
],
league
[
{
id,
name,
seasons[
{...},
{
id:,
divisions
[
{
id:,
name:
matches[
{
id:,
//match details
},
{
//another match. there could be hundreds here in a big league
},
{}
当我们开始遇到性能问题时,我们开始使用变换器来加载所需的东西,但这并没有完全解决问题,因为我们的一些联盟只是他们自己的几个mb。另一个问题是我们总是需要进行成员检查以检查管理员/成员权限,因此总是需要成员列表。
我知道我可以完全使用变换器省略成员列表并使用索引进行成员资格检查,但问题仍然是要做什么,添加成员时,需要加载该列表以及即将进行的项目它有可能增长到50万人或更多。
所以我的计划是将每个实体分成它自己的文件,所以在联盟的情况下,我会有一个联赛文件和一个匹配文件,其中包含{leagueId,赛季编号,分区编号,其他比赛详情}
每个成员都有自己的文档,其中包含他们所属的社区文档ID列表。
我只是有点担心,使用这种设计,遗漏了文档数据库的全部内容,我们可能也使用过sql,或者你认为我的方法是正确的吗?