适用于Firebase

时间:2017-01-18 16:16:18

标签: ios firebase firebase-realtime-database nosql

我目前正在开发一个IOS应用程序,后端由Firebase提供。这是我第一次使用NOSql后端,想要了解如何最好地构建数据。目前,该应用将成为基于用户的应用,该应用仅包含与其Feed中显示的每个用户相关的详细信息。因此,如果他们将注释发布到备注区域,则只有他们可以访问它。将不会共享此信息。我目前如何设置数据的方法是让一个名为" notes"和一个名为" users"的端点。我打算把每个人的笔记放在"笔记"然后在" notes"的每个用户下面输入一个条目。参考" noteId"在主要"笔记"区域。这是否更有意义,然后只有一个孩子的#34;用户"正在"笔记"那里有实际的笔记数据吗?

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 个答案:

答案 0 :(得分:3)

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

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

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