【发布时间】:2015-12-04 07:09:03
【问题描述】:
我正在将我的关系数据库迁移到 Firebase。一般来说,我有一个工人计划员。他们可以将项目(“约会”)添加到他们的日程安排中。我已经阅读了 FireBase 文档,并找到了关于索引的部分。
所以我创建了以下结构(日期 = YYYYMMDD 和时间 = HHMMSS):
{
appointments :
'id1' : { 'date' : '20141207', 'time' : '170000', worker : 'worker1' },
'id2' : { 'date' : '20141208', 'time' : '170000', worker : 'worker1' }
}
我为日期、时间和工作人员添加了一个索引,以便能够像这样查询数据(例如,获取今天的所有约会):
curl -X GET 'https://myapp.firebaseio.com/appointments.json?orderBy="date"&equalsTo="20141207"'
这按预期工作并且做得很好。问题是,约会的数量可以成倍增长(大约一年后,可能会有 100000 多个约会)。使用这些索引是一种好方法吗?另一种选择是单独存储日期和时间,如下所示:
{
'20141207' :
{ '170000' : { 'id1' : true } },
'20141208' :
{ '170000' : { 'id2' : true } }
}
为了确保每天可以非常快速地获取约会。或者 FireBase 是否能够仅使用索引来处理这个问题?
【问题讨论】:
-
在这 10 万件商品中,一天会有多少件掉落?因为(如果您的应用一次显示一天)这是您必须下载的项目数。
-
我估计每天大约 100 个。所以没关系。我只是想知道如果定义了索引,FireBase 是否可以毫无问题地处理大量(100000+)项中的 100 个项目。或者如果最好创建一个额外的路径(如下所示)来稍微修剪一下树。
-
如果 Firebase 当前无法处理该索引查找,我希望他们会在您达到 100K 时修复它。 :-) 但是,如果您可以以不同的方式构建数据(例如,将一天中的所有项目放在同一个节点下),那么事情就在您自己的控制之下。
-
为什么不使用时间戳作为优先级?它非常适合按日期范围查询。