繁体   English   中英

Firebase的正确数据结构

[英]Proper data structure for Firebase

我目前正在使用由Firebase提供的后端的IOS应用程序。 这是我第一次使用NOSql后端,希望获得有关如何最好地构造数据的一些信息。 目前,该应用将成为基于用户的应用,其中仅包含与Feed中显示的每个用户相关的详细信息。 因此,如果他们将便笺发布到便笺区域,则只有他们才能访问它。 不会共享此信息。 我目前如何设置数据的方式是拥有一个名为“ notes”的终结点和一个名为“ users”的终结点。 我计划将每个人的注释都放在“注释”中,然后在“注释”的每个用户下都有一个条目,并在主“注释”区域中引用“ noteId”。 那么,仅将“ users”的子代作为“ notes”并带有实际的便笺数据,是否更有意义?

notes >
    noteId >
        noteName
        noteDetails
    noteId >
        noteName
        noteDetails
    noteId >
        noteName
        noteDetails

user >
    notes >
         noteId
         noteId
         noteId (these would reference the note in notes)
    name 
    dateAdded

这就是当前数据的外观。 这是最好的方法。 我有mySql背景,在完全了解noSql时遇到了麻烦。

如果您需要跨用户访问笔记,则将所有用户的笔记保存在单个顶级节点中是有意义的。 但是请注意,您应该非常仔细地查询所有注释,因为如果您的应用真正成功,这很可能会成为瓶颈。

如果您只需要访问特定用户的注释,则最好对每个用户的注释进行分区:

notes >
  user1 >
    noteId >
        noteName
        noteDetails
    noteId >
        noteName
        noteDetails
  user2 >
    noteId >
        noteName
        noteDetails

这种数据结构可以更好地隔离数据,但代价是没有大量注释。

除此之外,您还要嵌套应展平的数据:用户配置文件和用户注释应位于单独的顶级节点中:

users >
    userId >
         name 
         dateAdded
userNotes >
    userId >
         noteId
         noteId
         noteId (these would reference the note in notes)

使用此工具,您可以检索用户名列表,而无需获取其所有注释ID。 然后,当您需要显示特定用户的注释时,只需访问/userNotes/<uid>下的他们的注释键,然后加载每个节点。

如果您不熟悉NoSQL数据建模,建议阅读NoSQL数据建模 如果您来自关系/ SQL背景,建议您查看SQL开发人员的Firebase

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM