将数据附加到数组或为每个数据点创建一个新文档是个好主意吗?
Is it a good idea to append data to an array or create a new document for every data point?
我使用 raspberry pi 将一大堆传感器数据记录到 mongo 数据库中。
一段时间后,我将数据合并为小时和天的聚合数据。
现在我使用一个集合,其中包含所有传感器,每个传感器都有一个文档、一些描述和其他元数据。在这些文档中的每一个中都有包含实际数据点的数组,我将其附加到这些数组中。当聚合时间跨度的数据时,我附加到不同的数组,如 'data_1h' 或 'data_1d',等等
数据点本身是包含实际数据、时间戳和其他一些位的文档。
这似乎有一段时间进展顺利,但我有 700 多个不同的传感器,经过 2 年的数据收集,mongo 使用了大量内存,而覆盆子没有,它开始窒息。
所以我想知道不使用大型数组而是使用单独的集合并将数据作为单个文档写入那里是否更好?每个数据点一个文档,就像你说的 SQL?
是的,通过保持不同 table 和映射文档(点)到您的传感器文档
点文档中的传感器文档 ID 会更好,因为制作数组会使编辑和更新更多内存消耗,如果数组变大查询单个传感器数据将加载所有点数组,这将占用大量内存
我使用 raspberry pi 将一大堆传感器数据记录到 mongo 数据库中。
一段时间后,我将数据合并为小时和天的聚合数据。
现在我使用一个集合,其中包含所有传感器,每个传感器都有一个文档、一些描述和其他元数据。在这些文档中的每一个中都有包含实际数据点的数组,我将其附加到这些数组中。当聚合时间跨度的数据时,我附加到不同的数组,如 'data_1h' 或 'data_1d',等等
数据点本身是包含实际数据、时间戳和其他一些位的文档。
这似乎有一段时间进展顺利,但我有 700 多个不同的传感器,经过 2 年的数据收集,mongo 使用了大量内存,而覆盆子没有,它开始窒息。
所以我想知道不使用大型数组而是使用单独的集合并将数据作为单个文档写入那里是否更好?每个数据点一个文档,就像你说的 SQL?
是的,通过保持不同 table 和映射文档(点)到您的传感器文档 点文档中的传感器文档 ID 会更好,因为制作数组会使编辑和更新更多内存消耗,如果数组变大查询单个传感器数据将加载所有点数组,这将占用大量内存