首页 > 解决方案 > 对 nosql 数据库进行建模以实现最大性能

问题描述

我有一个足球联赛,里面有很多球队和赛程。NoSQL 数据库如下所示:

collection: teams, documents: team1, team2...            //about 50 per league
collection: fixtures, documents: fixture1, fixture2...   //about 300 per league

很快就会有更多的联赛,我不知道如何对数据库进行建模以达到最大的性能。

选项1:保留当前模型

我可以保留当前模型,只需在每个文档中添加一个带有联赛 ID 的字段。

选项 2:为每个联赛创建子收藏

我可以为每个联赛创建一个子集合。它看起来像这样:

collection: teams, documents: league1, subcollection: teams, documents: team1, team2...

可能这些数字太小而无法进行性能优化。但我也收藏了每个联赛最多 10k 的文档。

您将如何为 NoSQL 数据库建模?

标签: google-cloud-firestorenosql

解决方案


集合的大小对性能没有影响。Firestore 自动对您的索引和文档进行分片,以在它们之间分配查询成本。唯一重要的是您实际阅读的文档数量。因此,如果您从大小为 10000 的集合中请求 10 个文档,它的执行与从大小为 100000 的集合中查询 10 个文档相同。

由于集合的大小与性能无关,因此您应该以适合您的其他要求或个人偏好的任何方式对数据进行建模。


推荐阅读