首页 > 解决方案 > 实时数据库中根节点和命名空间节点之间最好的是什么?

问题描述

我有一个关于实时数据库建模的问题

我有很多关于“用户”的数据并想使用:

1.nodes 作为命名空间,如:

    /users/accounts/{ids}
    /users/profiles/{ids}
    /users/records/{ids}
  1. 根节点如:
    /usersaccounts/{ids}
    /usersprofiles/{ids}
    /usersrecords/{ids}

对于 1,我想知道过滤器是否适用于查询中给出的参考,还是适用于所有'/users'节点?

例如,我只想在'/users/accounts'必要时过滤数据,而不是在所有'/users'节点上过滤以获得过滤'accounts'数据。

1 和 2 之间的最佳方法是什么?

性能怎么样?

提前致谢

标签: firebasefirebase-realtime-databasenosql

解决方案


如果你有这个数据库:

users
  accounts
      randomId
           accNum: 1234
      randomId
           accNum: 1234
  profiles
      randomId
           profile: 124
      randomId
           profile :125

如果每个节点下都有大量数据,则使用此模式,因此如果每个profile用户accounts都有大量数据,则使用此模式。此外,如果您想查询 insideaccounts或 inside的数据profile,那么您应该使用此模式。

例如:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
ref.child("accounts").orderByChild("accNum").equalTo(1234) //1
ref.child("profiles").orderByChild("profile").equalTo(124) //2

1- 将根据账户内的 accNum 进行过滤

2-将根据配置文件内部配置文件进行过滤


基本上,第一个和第二个模式都彼此接近,但是如果您想检索users节点内的所有内容,请使用此模式。


推荐阅读