大型列表上的Firebase索引(100000项)

大型列表上的Firebase索引(100000项),firebase,rest-firebase,Firebase,Rest Firebase,我正在将我的关系数据库迁移到Firebase。一般来说,我有一个工人计划。他们可以将项目(“约会”)添加到日程安排中。我已经阅读了FireBase文档,并找到了一个关于索引的部分 因此,我创建了以下结构(date=YYYYMMDD和time=HHMMSS): 我添加了日期、时间和工作人员的索引,以便能够查询这样的数据(例如,获取今天的所有约会): 这项工作正如预期的那样,并且做得很好。问题是,预约的数量可能呈指数级增长(大约一年后,可能会有100000多个预约)。使用这些索引是一种好方法吗?另一

我正在将我的关系数据库迁移到Firebase。一般来说,我有一个工人计划。他们可以将项目(“约会”)添加到日程安排中。我已经阅读了FireBase文档,并找到了一个关于索引的部分

因此,我创建了以下结构(date=
YYYYMMDD
和time=
HHMMSS
):

我添加了日期、时间和工作人员的索引,以便能够查询这样的数据(例如,获取今天的所有约会):

这项工作正如预期的那样,并且做得很好。问题是,预约的数量可能呈指数级增长(大约一年后,可能会有100000多个预约)。使用这些索引是一种好方法吗?另一种选择是单独存储日期和时间,如下所示:

{
    '20141207' : 
        { '170000' : { 'id1' : true } },
    '20141208' : 
        { '170000' : { 'id2' : true } }
}

以确保每天都能快速获取预约。或者FireBase仅仅使用索引就能处理这个问题吗?

路径中的记录数不会成为问题;Firebase是一个可扩展的实时后端,可处理数十万个并发连接和数百万个节点。查询应该很快。这是索引的要点,与Firebase的所有内容一样,必须满足我们的速度和卓越标准

请确保在您的安全规则中执行以下操作:

{
  "rules": {
     "appointments": {
        ".indexOn": ["date", "time", "worker"]
     }
  }
}
此外,您在这里的实际限制将是通过管道传输数据的带宽,因此请确保以某种方式限制您的结果并分页:

curl -X GET 'https://myapp.firebaseio.com/appointments.json?orderBy="date"&equalsTo="20141207"&limitToFirst=100'

在这10万件物品中,有多少会在一天内掉落?因为(如果你的应用程序一次显示一天)这是你必须下载的项目数。我估计每天大约100个。没关系。我只是想知道,如果定义了索引,FireBase是否可以毫无问题地从大量(100000+个)中过滤100个项目。或者最好创建一个额外的路径(如下所示)来修剪一下树。如果Firebase目前无法处理索引查找,我希望他们能在您达到100K时修复它。:-)但是,如果您可以以不同的方式构建数据(例如,将一天中的所有项目放在同一个节点下),这将使事情处于您自己的控制之下。为什么不使用时间戳作为优先级?它非常适合按日期范围进行查询。
{
  "rules": {
     "appointments": {
        ".indexOn": ["date", "time", "worker"]
     }
  }
}
curl -X GET 'https://myapp.firebaseio.com/appointments.json?orderBy="date"&equalsTo="20141207"&limitToFirst=100'