我几乎在任何地方阅读了关于构建高效查询的Firebase Database
,但我仍然对两种替代方法有点混淆。Firebase - 为高效索引构造数据
例如,假设我想从过去7天左右获取用户的所有“maxBenchPressSessions”。
我这两个结构之间采摘之间卡住:
在第一组合,我用的是用户的ID作为属性索引是否真的还是假的。第二,我使用userId
作为属性NAME,其值将是用户的ID。
其中一个比另一个更快,还是会以相对相同的方式进行索引?我对数据库设计很陌生,所以我想确保我遵循正确的做法。
进展
我想出了将两者打平我的数据库,并允许我补充一个ListenerForSingleValueEvent
使用orderBy
只有一次的解决方案,但只有当我要检查,如果用户有一个会话保存一个特定的一天。
我可以有各自maxBenchPressSession
对象具有在userId_dateString
的格式的密钥。但是,如果我想从最近7天获得所有用户的会话,我不知道如何在一个查询中执行此操作。
任何想法?
没有数据结构,它是固有地更快或更慢。区别取决于您如何从代码中访问数据。如果你显示你想写的查询,它会更容易帮助。一般来说:为您的应用程序访问数据建模数据。看到这篇关于[NoSQL数据建模]的文章(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/) –
我会用一个值事件监听器来做一个查询。我会在过去7天内从用户那里获得所有'maxBenchPressSessions'。 – Rafi