我正在构建一个使用标签的应用,就像SO一样。当用户要向帖子中添加标签或按标签搜索时,我具有自动完成功能,并且自动完成框会显示每个标签及其使用次数(因此用户知道哪些相关标签很受欢迎)。
我是Cloud Firestore的新手,很难为如何有效存储此数据找到合适的解决方案,以便用户获得此信息,而不会达到firestore每个文档20,000个字段的限制。
我将解释我考虑过的两个选项,以及为什么它们不好/不起作用:
选项1:我已经为每个标签以及使用该标签的所有实例存储了文档。这本身就是个问题,因为我最多只能存储20,000个实例,从长远来看,这不是一个好选择。但是即使有,对于我来说,要生成供用户在应用程序中使用的潜在标签列表,我也必须阅读每个标签的文档,并获取其实例数组的大小。使用该应用程序后,每次用户打开我的应用程序时,可能会产生数千次读取,只是初始化此列表。根本不是个好主意。
选项2:有一个文档,其中存储了所有标记的图及其实例编号。每当使用标签时,我都会在地图中增加该值。这也不是一个好主意,因为我再次受到20k字段的限制,这意味着我只能存储有关20k标签的信息,这从长远来看是不可持续的。
您有什么好的办法吗?我现在唯一能想到的就是使用实时数据库存储标签,但感觉不正确。
编辑:我只是意识到我实际上不需要存储使用标签的所有实例,因为在Cloud Firestore中,我可以使用标签在此处进行查询和过滤,因此选项一是可行的。但这意味着,如果我想为用户生成此列表,则必须向数据库查询添加的每个标签建议,以便获得使用该标签的实例数。 这是一个好主意吗?还是会占用太多资源?每当用户想要搜索某些内容时,它都必须进行查询。 查询结果的大小是否被视为对结果中每个文档的读取?我实际上不会阅读任何文档。