【发布时间】:2017-01-07 03:37:00
【问题描述】:
我几乎在所有地方都阅读过有关构建 Firebase Database 以进行高效查询的文章,但我仍然对我拥有的两种选择感到有些困惑。
例如,假设我想获取用户过去 7 天左右的所有“maxBenchPressSessions”。
我被困在这两种结构之间:
在第一个数组中,我使用用户的 id 作为属性来索引真假。第二,我使用userId作为属性NAME,它的值是用户的id。
一个比另一个快,还是它们的索引方式相对相同?我对数据库设计有点陌生,所以我想确保我遵循正确的做法。
进展
我想出了一个解决方案,它既可以扁平化我的数据库,又允许我只使用一次orderBy 添加ListenerForSingleValueEvent,但仅当我想检查用户是否为特定日期保存了会话时.
我可以让每个maxBenchPressSession 对象都有一个userId_dateString 格式的键。但是,如果我想获取过去 7 天的所有用户会话,我不知道如何在一个查询中完成。
有什么想法吗?
【问题讨论】:
-
没有天生更快或更慢的数据结构。区别取决于您如何从代码中访问数据。如果您显示您想要编写的查询,它会更容易提供帮助。一般来说:为您的应用程序如何访问数据建模。见这篇关于NoSQL data modeling的文章
-
我会使用单值事件侦听器来进行一次查询。我会从过去 7 天的用户那里获得所有
maxBenchPressSessions。
标签: firebase database-design firebase-realtime-database nosql