【发布时间】:2019-07-22 16:08:35
【问题描述】:
场景:
一个元素中有 1,000,000 个坐标(像素)。
一个坐标由x: number, y: number组成
用户选择一个坐标来“激活”
对用户的目标:
显示激活的唯一坐标的计数。
即1,000,000 个坐标中的 247,456 个已激活
数据库目标:
如此庞大的数据集应该如何在 NoSQL 中建模?
方法#1 使用可能的坐标预填充集合并在激活坐标时删除它们/增加一个计数器
在列表中搜索会很昂贵,但只会随着更多坐标被激活而改善。
方法 #2 随着坐标的激活和增加,文档的集合越来越多。
如果没有高效的架构,读/写会变得越来越昂贵。
【问题讨论】:
-
如果我理解这个问题,您实际上是在问如何计算一个节点激活的子节点的数量。如果这是正确的,一个简单的计数器就可以了;当一个节点被激活时,增加计数器。停用时,递减计数器。如果不知道将运行什么样的查询或将如何处理数据,我们就无法建议模型。您的问题中建议的结构可能有效,也可能无效。这是多用户吗?什么时候完成读写?有多少用户?多常?可以使用交易吗?看?变量太多了。
-
我不需要重新计算已激活的节点。任何人都可以来激活节点,一旦激活,我想增加一个计数器来跟踪激活的节点总数。不需要事务,将其视为单击一次的像素,如果该节点尚未激活,则激活并增加计数器
-
那么,我想你有你的解决方案!柜台+1! (笑)
标签: angular database firebase nosql data-modeling