Angular a";“大”;数据量

Angular a";“大”;数据量,angular,firebase,firebase-realtime-database,nosql,Angular,Firebase,Firebase Realtime Database,Nosql,我们正计划将应用程序迁移到Firebase,以实现实时功能并提高性能。 这是一个存储客户产品和销售数据的销售应用程序。 我们的客户(我们称之为it集团)一般每人有10家商店(我们称之为it公司) 处理这么多数据没什么大不了的。 但最近我们与一家拥有1000多家店铺(每月新增20家)的大集团达成了一笔交易 我的问题是,如何在没有性能问题的情况下构造这些数据,并保留实时功能 我认为,如果我们专注于如何组建集团公司,我们可以处理其他部分(销售、产品等) 这种数据结构可以每次处理数千条记录吗 如果每次我

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

处理这么多数据没什么大不了的。 但最近我们与一家拥有1000多家店铺(每月新增20家)的大集团达成了一笔交易

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

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

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

如果每次我都要查询超过1000家店铺,我非常担心Firebase的性能。
每个人都说1.000条记录对Firebase来说不算什么,但我做了一些测试,发现检索1.000条记录并不像他们说的那么流畅。

所以我有一个建议,即像这样组织Firebase数据,例如:

"Groups": {
    "Group1": {
        "name": "Historical Tech Pioneers"
        "Stores": {
            "Store1": {
                "name": "abc"
            },          
            "Store2": {
                "name": "def"
            }
        },
    },
    "Group2": { ... }
}
要获得商店,只需点击Groups>Group1>Stores即可。为获得更好的性能,请向firebase数据添加页面,例如,每页10个存储区


注意:只是一个建议。

因此我有一个建议,即组织firebase数据,例如:

"Groups": {
    "Group1": {
        "name": "Historical Tech Pioneers"
        "Stores": {
            "Store1": {
                "name": "abc"
            },          
            "Store2": {
                "name": "def"
            }
        },
    },
    "Group2": { ... }
}
要获得商店,只需点击Groups>Group1>Stores即可。为获得更好的性能,请向firebase数据添加页面,例如,每页10个存储区


注意:只是一个建议。

由于在数据库中的某个位置获取数据也会检索其所有子节点,因此您希望尽可能保持数据库结构平坦。你的建议与报告中的结构相似。在我看来,这是正确的

看看您的示例,我可能会重新构造
存储
-节点,以便轻松获取组中的所有存储:

"Stores": {
    "Group1": {
        "Store1": {
            "name": "abc"
        },
        "Store2": {
            "name": "def"
        },
        ...
    },
    ...        
}
在文档(一)中,我读到了非规范化是一个关键词。不要害怕复制数据以加快读取速度。您打算如何使用数据应该决定您如何构建数据

作为克里斯·埃斯普林:

“我们必须根据使用数据的方式不断平衡规范化(浅层结构)与非规范化(深层结构)。

由于在数据库中的某个位置获取数据也会检索其所有子节点,因此您希望尽可能使数据库结构保持平坦。你的建议与报告中的结构相似。在我看来,这是正确的

看看您的示例,我可能会重新构造
存储
-节点,以便轻松获取组中的所有存储:

"Stores": {
    "Group1": {
        "Store1": {
            "name": "abc"
        },
        "Store2": {
            "name": "def"
        },
        ...
    },
    ...        
}
在文档(一)中,我读到了非规范化是一个关键词。不要害怕复制数据以加快读取速度。您打算如何使用数据应该决定您如何构建数据

作为克里斯·埃斯普林:

“我们必须根据使用数据的方式不断平衡规范化(浅层结构)与非规范化(深层结构)。

您希望通过查询将所有1000条记录检索到某个客户端应用程序吗?这听起来不是个好主意。通常,您希望通过这些记录中的某个值使用索引查询来检索其中的一个或一小部分。实际上,并非所有用户都将访问所有存储。我认为一个好主意是建立一个用户存储节点,在这里我可以存储用户有权访问的所有存储。@HugoRamos“我做了一些测试,发现检索1.000条记录并不像他们说的“请显示测试代码”那样流畅。更好的方法是:在我们可以访问它的地方复制它,比如jsbin。只有这样,我们才能看到相同的东西,并帮助您优化。这里还可以看到我对列表大小限制的解释:讨论NoSQL数据模型只有在特定用例的上下文中才有意义。您通常会扩展数据模型以适应新的用例。有关一般介绍,请参阅和查看。是否希望通过查询将所有1000条记录检索到某个客户端应用程序?这听起来不是个好主意。通常,您希望通过这些记录中的某个值使用索引查询来检索其中的一个或一小部分。实际上,并非所有用户都将访问所有存储。我认为一个好主意是建立一个用户存储节点,在这里我可以存储用户有权访问的所有存储。@HugoRamos“我做了一些测试,发现检索1.000条记录并不像他们说的“请显示测试代码”那样流畅。更好的方法是:在我们可以访问它的地方复制它,比如jsbin。只有这样,我们才能看到相同的东西,并帮助您优化。这里还可以看到我对列表大小限制的解释:讨论NoSQL数据模型只有在特定用例的上下文中才有意义。您通常会扩展数据模型以适应新的用例。有关一般介绍,请参阅和查看。如果要获取所有组名的列表,则意味着您将获取所有组存储。这是许多不必要的数据被发送…是的,你是对的,我不认为有这种可能性,我只认为在性能上得到所有的存储,我的坏。如果一个人想得到所有组名的列表,这意味着你将得到所有的组存储。这是很多不必要的数据被发送…是的,你是对的,我不认为有这种可能性,我只认为在性能上得到所有的商店,我的坏。很高兴知道我们做的是正确的。但问题仍然存在:在客户端,最终会有1000条记录难以处理?Firebase设计用于处理大型数据集。如何在客户端处理数据集?您使用什么事件检索数据<代码>值
添加的子项
?我在客户端处理数据集。我认为将Firebase用作BAA的目标之一是在不需要自定义API的情况下处理数据。我说的对吗?很高兴知道我们