我对NoSQL数据库设计还很陌生,并且我希望利用Google的Cloud Firestore创建自己的新应用。看起来很整洁。
在我的数据模型中,我有users
和pages
。用户可以拥有许多页面。用户可以将其帐户链接到其他用户(就像家庭计划一样)。链接的用户将有一个领导者用户,所有其他用户均为关注者。通过这种设计,所有关注者都可以访问领导者用户的页面。追随者可以以领导者的名义创建,阅读,更新和删除页面。最终,所有链接的用户共享页面。我认为结构看起来像这样。
/database/
users/
[user-doc]
pages/
[page-doc]
我想确认的一件事是,这种设计是一个好的设计,特别是在Cloud Firestore的背景下。
对于安全规则,当用户想要R / U / D {/ {1}} doc时,通过查看page
是否拥有user
来检查用户的权限,或者该page
是“追随者”类型的帐户,而领导者是user
的所有者。这公平吗?
每个page
文档的标识符将由Firestore(as mentioned here)自动生成。为了检索page
(或链接的领导者)拥有的所有页面,是否像查询user
一样简单?其中db.collection("pages").whereEqualTo.("page-owner", uid)
是用户的唯一ID。如果有100,000个用户,并且每个用户有40个页面,此查询是否有效?
我非常感谢您的投入!谢谢!
答案 0 :(得分:0)
是
是的,查询会根据结果集的大小而不是集合的大小进行缩放。