Firebase数据库结构 - 非规范化数据?

时间:2017-07-20 15:13:41

标签: firebase firebase-realtime-database nosql

我最近读了很多关于nosql数据库的文章。我得到的经验法则是根据我们的视图构建数据(当然,取决于用例)。

现在,假设我们有一个社交应用,用户有个人资料,但他也创建了帖子,我们必须将它们存储在数据库中。

所以,我看到一些开发人员选择这样做:

Posts
-----UserID
-----------PostID
-----------------username: John
-----------------profileImage: https://...
-----------------posted_photo: https://...

这完全符合视图的结构。我们将进入帖子和我们的用户ID,我们可以获得我们的视图所需的所有数据。现在我的问题是,当用户发布了100K帖子并且他决定改变他的个人资料照片时会发生什么。到目前为止,他所有的帖子都包含了他的旧照片,所以现在,我们必须编写一种方法,循环播放100K的帖子(或者一般的所有帖子)并更新他的照片。在2个小时内,他决定“不,我不喜欢这张照片,我会改回来”,我们还要再做100K查询。

那(非规范化数据)怎么样?当然,它更容易,它平坦,但我们必须做出大量的查询来更改单张个人资料照片。真正处理这个问题的方法是什么?

1 个答案:

答案 0 :(得分:3)

我已经完成了将用户的数据存储在一个地方并将userID设置为post属性。

posts:
    userID:
        postID:
            userID: 'user1',
            attachedImageURL: 'http:..',
            message: 'hey',
            reblogID: 'post4',
            type: 'audio|poll|quote'
users:
    user1:
        name: 'john',
        profileImage: 'http..'

它需要向Firebase再查询一次以检索用户的个人资料数据,但这是解决此问题的好方法。这实际上取决于您希望如何使用这些数据。