Database 我怎样才能以最少的读写量保持一个拥有最多声誉的顶级用户的领导委员会?

Database 我怎样才能以最少的读写量保持一个拥有最多声誉的顶级用户的领导委员会?,database,data-structures,database-design,google-cloud-firestore,Database,Data Structures,Database Design,Google Cloud Firestore,我正在建立一个与此类似的基于声誉的社区。 我需要保持一个拥有最多声誉的用户的领导委员会。最好按百分比(例如前5%的用户) 我正在使用CloudFireStore。 目前我能想到的最好的选择是,当用户登录时,我为用户进行读取查询,按信誉排序结果,并将其限制在当前用户数量的5%,然后根据结果创建排行榜 但问题是,随着社区的发展,这可能会导致大量的阅读。 例如,如果社区有10万名成员,那么用户端每次登录都需要阅读5万份文档才能获得领先的董事会 我能想到的另一个选择是拥有一份领导委员会的文件,当某人的声

我正在建立一个与此类似的基于声誉的社区。 我需要保持一个拥有最多声誉的用户的领导委员会。最好按百分比(例如前5%的用户)

我正在使用CloudFireStore。 目前我能想到的最好的选择是,当用户登录时,我为用户进行读取查询,按信誉排序结果,并将其限制在当前用户数量的5%,然后根据结果创建排行榜

但问题是,随着社区的发展,这可能会导致大量的阅读。 例如,如果社区有10万名成员,那么用户端每次登录都需要阅读5万份文档才能获得领先的董事会

我能想到的另一个选择是拥有一份领导委员会的文件,当某人的声誉发生变化时,我就会编辑该文件。 但这将导致许多人写文章,就像声誉经常改变一样

*值得一提的是:我需要一个主要的董事会来授予它的用户某些其他人无法获得的权限。因此,除了知道用户是否是这5%的一部分之外,我不需要从中获得任何其他信息。没有一个真正的引导板页面,你可以看到用户的个人资料或类似的东西


有人能提出更好的方法吗

> P>您需要考虑用户实际需要的数据,然后考虑是否要为此进行优化。例如:许多用户阅读前5000名(10万用户中的5%)用户的机会很小,而他们阅读前50名的机会要高得多。因此,与其请求前5%的用户,不如只请求前50名用户

更好的是:您可以将排行榜上显示的前50名用户的基本信息添加到单个文档中。这样,您只需请求单个文档即可显示排行榜。然后,您可以在每次写作时更新此“排行榜”文档,或者(更有可能)按照Jim的评论定期更新此文档


这种建模数据以匹配用户屏幕上显示的内容的方法在NoSQL数据库中非常常见。要了解更多信息,我强烈建议您阅读、观看并阅读顶部答案。

您真的需要实时更新顶部5%的答案吗?因此,例如,他们每天更新一次领导委员会。