哪种类型的 Firebase 数据结构更好?

What Type of Firebase Data Structure Is Better?

我在 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'
    }
  }
}

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

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

我很纠结,因为 some Firebase 教程使用了第一个数据结构,而我正在使用来自 Firebase 的 Emberfire 网络库,如果你想的话,它会强制执行它完全拥抱图书馆。

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