Firebase获取“大量”数据

时间:2017-07-22 19:23:07

标签: angular firebase firebase-realtime-database nosql

我们计划将应用程序迁移到Firebase以获取实时功能并提高性能。 它是一个销售应用程序,存储客户产品和销售数据。 我们的客户(我们称之为集团)一般有10家商店(我们称之为公司)。

处理这些数据并不是什么大问题。 但最近我们与一家拥有1000多家商店(每月新增20家商店)的大集团达成了协议。

我的问题是如何在没有性能问题的情况下构建这些数据并保留实时功能?

我认为如果我们专注于如何组建集团 - 公司我们可以处理其他部分(销售,产品等)

"Groups": {
    "Group1": {
      "name": "Historical Tech Pioneers"
    },
    "Group2": { ... }
}

"Stores": {
    "Store1": {
      "name": "abc",
      "group" "Group1"
    },
    "Store2": {
      "name": "def",
      "group" "Group1"
    },
}

这种数据结构是否可以每次处理数千条记录?

如果每次查询超过1.000个商店,我都非常关注Firebase的性能。 每个人都说1.000记录对Firebase来说没什么,但是我做了一些测试,发现检索1.000记录并不像他们说的那么流畅。

2 个答案:

答案 0 :(得分:0)

所以我有建议,就像组织 firebase数据一样,例如:

"Groups": {
    "Group1": {
        "name": "Historical Tech Pioneers"
        "Stores": {
            "Store1": {
                "name": "abc"
            },          
            "Store2": {
                "name": "def"
            }
        },
    },
    "Group2": { ... }
}

为了让商店适应团体> Group1>商店。为了获得更好的性能,请将页面添加到firebase数据,例如每页10个商店。

注意:只是一个建议。

答案 1 :(得分:0)

由于在数据库中的某个位置获取数据也会检索其所有子节点,因此您希望将数据库结构保持为尽可能平坦。您的建议类似于docs中的结构。对我来说,你似乎走在正确的轨道上。

查看您的示例我可能会重新构建Stores - 节点,以轻松获取组中的所有商店:

"Stores": {
    "Group1": {
        "Store1": {
            "name": "abc"
        },
        "Store2": {
            "name": "def"
        },
        ...
    },
    ...        
}

在文档中(一个example)我读过非规范化是一个关键字。不要害怕复制数据以加快阅读速度。您打算如何使用数据应该决定如何构建数据。

作为Chris Esplin wrote
'我们必须根据我们想要如何使用数据来不断平衡归一化(浅层结构)与非规范化(深层结构)。'