将Cloud Firestore用户私人文档存储在共享集合中

时间:2018-10-22 00:24:18

标签: firebase nosql google-cloud-firestore data-modeling

问题

我对NoSQL数据库设计还很陌生,并且我希望利用Google的Cloud Firestore创建自己的新应用。看起来很整洁。

在我的数据模型中,我有userspages。用户可以拥有许多页面。用户可以将其帐户链接到其他用户(就像家庭计划一样)。链接的用户将有一个领导者用户,所有其他用户均为关注者。通过这种设计,所有关注者都可以访问领导者用户的页面。追随者可以以领导者的名义创建,阅读,更新和删除页面。最终,所有链接的用户共享页面。我认为结构看起来像这样。

/database/
    users/
        [user-doc]
    pages/
        [page-doc]

限制因素以帮助解决问题

    我预计大约有10到5万名用户开始,之后可能突破10万名。
  • 我设想每个用户平均拥有大约30-40页。
  • 我将链接的用户限制为最多5个用户。也就是说,一个领导者和四个跟随者。

我想知道的事情...

我想确认的一件事是,这种设计是一个好的设计,特别是在Cloud Firestore的背景下。

  1. 对于安全规则,当用户想要R / U / D {/ {1}} doc时,通过查看page是否拥有user来检查用户的权限,或者该page是“追随者”类型的帐户,而领导者是user的所有者。这公平吗?

  2. 每个page文档的标识符将由Firestore(as mentioned here)自动生成。为了检索page(或链接的领导者)拥有的所有页面,是否像查询user一样简单?其中db.collection("pages").whereEqualTo.("page-owner", uid)是用户的唯一ID。如果有100,000个用户,并且每个用户有40个页面,此查询是否有效?

我非常感谢您的投入!谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 是的,查询会根据结果集的大小而不是集合的大小进行缩放。