我想知道我将解释的这个策略是否会被建议在Firebase中使用。
我将首先解释我的目标是什么,因为我确信其他人已经解决了同样的问题,也许你们中的一些人可以告诉我它通常是如何完成的。
目标是在朋友共同的时候通知应用程序的所有用户" George" (基于他们的联系人)现在也是该应用程序的新用户。
所以,我的想法是:
1-使用此结构构建集合:
{
"contacts":
{
"user1":
{
{"user239":true}
,
{"user23":false}
,
{"user732":true}
}
,
{
"user2" :
{
{"user23":false}
,
{"user96":false}
,
{"user88":true}
}
}
}
}
为每位用户保存联系人列表。
然后新用户将查询这样的联系人列表:
fbRef.child('contacts').orderByChild('user23').equalTo(false).once('value', showResults, console.error);
然后,用户会将结果保存在地图中,将值更改为true
,然后使用该地图更改为updateChildren()
。
现在,如果我们想象我们希望有数十万甚至数百万用户使用该应用程序,这是否合理?
当我们有5M用户并且有几个用户加入时会有多贵?
是否有一个已知的"最佳策略"对于这种情况?
由于
答案 0 :(得分:0)
Firebase中的实时功能不仅适用于大型数据集,而且适用于大型数据集。实时记录流的事实是完美的。
与任何大型数据应用一样,性能仅与您的实施一样好。所以这里有一些要记住大数据集的问题。
所以你可以做的是拒绝数据。
**/users/uid
/users/uid/profile
/users/uid/chat_messages
/users/uid/groups
/users/uid/audit_record**
**/user_profiles/uid
/user_chat_messages/uid
/user_groups/uid
/user_audit_records/uid**
第二种方法适用于迭代大数据集,第一种方法清晰可见。
避免在大型数据集上调用value
。请child_used
拨打电话
这有助于对上述数据进行非规范化。
请记住,firebase可以处理大量数据,但这取决于您遵循的方法。
例如:如果我们想要存储' last_logins'对于任何用户,我们可以直接将其存储在特定的对象实例下。当我们想要访问' last_logins'时,它将提供方便的访问权限。对于特定用户。
维持多对多关系
我们已经看到,我们无法在组中嵌套用户,因为它不会代表多对多的关系并且会留下冗余数据。我们可以在特定的组下创建一个组索引,其中只包含用户所属组的键。这将使我们能够轻松获取用户所属的组列表。
存储一对多关系或静态列表
以下是一些必须用于firebase设计的最佳实践的链接。