我将关系数据库迁移到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是否只能使用索引来处理这个问题?
答案 0 :(得分:2)
路径中的记录数量不会成为问题; Firebase是一个可扩展的实时后端,可处理数十万个并发连接和数百万个节点。查询应该很快。这是一个索引点,就像Firebase一样,必须符合我们的速度和卓越标准。
请务必read about '.indexOn'并在您的安全规则中实现此目的:
{
"rules": {
"appointments": {
".indexOn": ["date", "time", "worker"]
}
}
}
此外,您真正的限制是通过电子管传输数据的带宽,因此请务必以某种方式限制您的结果和分页:
curl -X GET 'https://myapp.firebaseio.com/appointments.json?orderBy="date"&equalsTo="20141207"&limitToFirst=100'