0

我在 Firebase 中看到了混合教程,它们建议像这样构造数据:

posts: {
  post_1: {
    title: 'Some Title',

    comments: {
      comment_1: true,
      comment_2: true,
      ...
      comment_x: true
    }
  }
}

comments: {
  comment_1: {
    name: 'Foo'
  },

  comment_2: {
    name: 'Bar'
  },

  ...

  comment_x: {
    name: 'X'
  }
}

posts: {
  post_1: {
    title: 'Some Title',
  }
}

comments: {
  post_1: {
    comment_1: {
      name: 'Foo'
    },

    comment_2: {
      name: 'Bar'
    },

    ...

    comment_x: {
      name: 'X'
    }
  }
}

我认为后者在查询时的速度、批量写入和安全灵活性方面更好。特别是当您拥有第一个数据结构并且您查询博客只是为了找出它的标题时。如果您有一百万条评论,即使该值是正确的,它也会加载大量数据(除非我在这里遗漏了一些东西)。

我的问题是,对于像社交网络中的大量数据,第二个数据结构真的比第一个更好吗?我什至不相信第一个在任何领域都比第二个更好。

我很伤心,因为一些Firebase 教程使用了第一个数据结构,而我正在使用 Firebase 的Emberfire网络库,如果你想完全接受该库,它会强制执行它。

4

1 回答 1

1

第二个例子是对 Firebase 有好处的 shallow(er)。数据是分开的,这又是一件好事。唯一的缺点(实际上不是缺点)是如果您只想为帖子和相关评论访问数据库一次,而不是第二个示例中的两次;一次是为了帖子,一次是为了评论。显然#1在那里获胜,但除此之外#2是要走的路。

于 2016-01-14T13:38:46.250 回答