Firebase数据库设计建议书

时间:2017-02-26 20:34:25

标签: firebase firebase-realtime-database

我正在编写一个处理组织成员和付款的应用程序。 我有以下实体:

Organization---+
               |
               +---Members-----+
               |               |
               |               +---Children
               +---Accounts
               |
               +---Payments

每个组织可以支付> 100,000,但只有少数会员和帐户。 当会员登录后,他只能看到他的付款。 当admin登录时,他应该能够访问所有数据。

问题是:

  1. 我应该保持组织的层次结构还是应该压扁每个实体?
  2. 如果我想保持结构分层,是否有可能让组织只有部分子集(不是所有成员而不是所有付款)
  3. 感谢。

2 个答案:

答案 0 :(得分:5)

Firebase实时数据库始终牢记的一件事是您要检索的数据量以及您使数据库考虑的数据量。

如果您让数据库考虑100K付款以显示当前用户的10笔付款,那么您浪费了大量资源。我在这里写了更多相关信息:Firebase Scalability LimitFirebase Performance: How many children per node?

如果您分别为每个用户的付款建模,则会大幅减少服务器必须考虑的数据量。这提高了可扩展性,但当然不是线性的。

如果管理员用户需要查看所有数据,我建议您先让他们选择一个用户。之后,他们将遵循与普通用户相同的访问模式。

答案 1 :(得分:1)

你应该保持你的结构平坦和尽可能非规范化。查询父节点将加载所有子节点和数据。

是的,您仍然可以使用可用的SDK来使用查询/过滤器。