首页 文章

适用于Firebase的数据结构

提问于
浏览
0

我目前正在开发一个IOS应用程序,后端由Firebase提供 . 这是我第一次使用 NOSql 后端,想要了解如何最好地构建数据 . 目前,该应用将成为一个基于用户的应用,其中只包含与其Feed中显示的每个用户相关的详细信息 . 因此,如果他们将注释发布到备注区域,则只有他们可以访问它 . 不会分享这些信息 . 我当前设置数据的方法是使用名为"notes"的 endpoints 和名为"users"的 endpoints . 我计划将每个人的笔记放在"notes"中,然后在"notes"的每个用户下面输入一个条目,并引用主"notes"区域中的"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 .

1 回答

  • 3

    如果您需要跨用户访问笔记,则在单个顶级节点中保留所有用户的笔记是有意义的 . 但请注意,你应该非常小心 querying 所有笔记,因为如果你的应用程序真的成功,这可能会成为一个瓶颈 .

    如果您只需要访问特定用户的注释,您也可以单独为每个用户分配注释:

    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 data modeling . 如果您来自关系/ SQL背景,我建议您查看Firebase for SQL developers .

相关问题