我刚接触Firebase,想向您寻求帮助:
我发现firebase在某些事件上运行服务器端功能。这些功能之一是onUpdate()
。
所以我要实现以下目标:
onUpdate()
->按得分对集合中的文档进行排序->对(1, 2, 3, etc.)
进行排序后,根据位置分配排名
有关如何执行此操作的任何提示?
PS:该数据库最多可以容纳1个Mio. +文档,因此我不确定它是否是一种有效的方法。我按分数分配排名的其他所有方法要么在客户端上太繁琐,要么不实时,要么花费大量金钱。
编辑: 正如安格斯·泰(Angus Tay)所指出的那样,我不必担心性能,所以这是没有道理的。
预先感谢:)
答案 0 :(得分:1)
参考MongoDB NoSQL Documentation:
可扩展性不仅仅是速度。它涉及3种不同的指标,这些指标通常可以协同工作:
集群规模。通常跨100多个节点分布数据库 多个数据中心
绩效等级。每个数据库可支持100,000多个数据库读写 第二,同时保持严格的延迟SLA
数据规模。在数据库中存储10亿多份文档
在 Firebase数据库(实时数据库/ Cloud Firestore)中, 性能 和 可扩展性 即使数据库已经增长到数十亿个文档,都不是问题。
NoSQL 数据库支持自动分片,这意味着它们本地并自动将数据分布在任意数量的服务器上,而无需要求应用程序甚至知道服务器池的组成。跨服务器自动平衡数据和查询负载,并且当服务器发生故障时,可以快速透明地替换它,而不会中断应用程序。
因此,您不必担心性能。
更新
从根本上讲,回到您的问题:
onUpdate()->按得分对集合中的文档进行排序->排序后(1、2、3等),根据位置分配排名
是,您可以实现,但是不推荐,因为查询它的费用非常高 strong>由于您正在使用Firebase云服务,因此即使您拨打电话,每个查询也很重要!这是关于How we spent 30k USD in Firebase in less than 72 hours的主题。关于如何预防此问题的方法tutorial,但它在Angular中。
建议(客户端-服务器):
通常,我们不仅仅在服务器上做,甚至在服务器上,我们都将构建一个使其成为客户端的前端,所以,希望它能给您一个想法。
附加说明:
创建NoSQL的目的之一是避免使用关系数据库模型,因为它可能不是适用于所有情况的最佳解决方案。
不要限制您在NoSQL中的思维,您有多种方法来构建数据库,发挥创造力,在NoSQL中始终有多种解决方案
干杯!