【发布时间】:2017-07-20 15:13:40
【问题描述】:
我最近阅读了很多关于 nosql 数据库的内容。我得到的经验法则是根据我们的观点来构造数据(当然,取决于用例)。
现在,假设我们有一个社交应用,用户有个人资料,但他也创建了帖子,我们必须将它们存储在数据库中。
所以,我看到一些开发人员选择这样做:
Posts
-----UserID
-----------PostID
-----------------username: John
-----------------profileImage: https://...
-----------------posted_photo: https://...
这完全符合基于视图的结构。我们会进入帖子和我们的用户 ID,我们可以获得视图需要的所有数据。现在我的问题是,当用户发布了 100K 帖子并且他决定更改他的个人资料照片时会发生什么。到目前为止,他的所有帖子都包含他的旧照片,所以现在,我们必须编写一个方法来循环遍历 100K 帖子(或他的所有帖子)并更新他的照片。在 2 小时内,他决定“不,我不喜欢这张照片,我会把它改回来”,我们必须再进行 10 万次查询。
那(非规范化数据)好吗?当然,它更容易,它是平坦的,但是我们必须进行大量的查询才能更改一张个人资料照片。真正的处理方法是什么?
【问题讨论】:
标签: firebase firebase-realtime-database nosql