Mongodb 存储和聚合向量的数据库解决方案?

Mongodb 存储和聚合向量的数据库解决方案?,mongodb,vector,database,Mongodb,Vector,Database,我正在寻找一种解决项目数据存储问题的方法 数据: 我们有一个批处理过程,每天生成6000个大小为3000的载体。向量中的每个元素都是双精度的。对于每个向量,我们还生成诸如“国家”、“部门”、“资产类型”等标签(它是财务数据) 查询: 我们想要做的是通过每个向量的标签来查看聚合。例如,如果我们想按扇区查看向量,我们想得到一个响应,它给出了所有的唯一扇区和一个3000x1向量,它是由该扇区标记的每个元素的所有向量之和 我们的尝试: 实现一个标准化的星型模式非常简单,它有两个表,一个表有标签信息和一个

我正在寻找一种解决项目数据存储问题的方法

数据:

我们有一个批处理过程,每天生成6000个大小为3000的载体。向量中的每个元素都是双精度的。对于每个向量,我们还生成诸如“国家”、“部门”、“资产类型”等标签(它是财务数据)

查询:

我们想要做的是通过每个向量的标签来查看聚合。例如,如果我们想按扇区查看向量,我们想得到一个响应,它给出了所有的唯一扇区和一个3000x1向量,它是由该扇区标记的每个元素的所有向量之和

我们的尝试:

实现一个标准化的星型模式非常简单,它有两个表,一个表有标签信息和一个ID,另一个表有“VectorDate,ID,ElementNumber,Value”,其中有一行表示每个向量的每个元素。不幸的是,考虑到数据的大小,这意味着我们每天向第二个表中添加1800万条记录。而且,由于我们的查询需要读取(并合计)所有1800万条记录,因此在磁盘读取方面,这并不是最有效的操作

示例查询:

SELECT T1.country, T2.ElementNumber, SUM(T2.Value) 
FROM T1 INNER JOIN T2 ON T1.ID=T2.ID 
WHERE VectorDate = 20140101
GROUP BY T1.country, T2.ElementNumber
我研究过NoSQL解决方案(我没有这方面的经验),但看到一些解决方案,如MongoDB,允许将整个向量存储为单个文档的一部分,但我不确定它们是否会允许我们正在尝试的高效聚合(将文档中向量的每个元素添加到其他文档向量的相应元素中)。我阅读了所需的$unwind操作,这不是很有效吗

如果有人能为我指明一个数据库解决方案的方向,帮助我们高效地解决问题,那就太好了


谢谢!

MongoDB可以进行这些聚合,我认为这非常适合这里。它不是很多数据,因此为了日常报告的目的,我认为直接将记录作为包含3000个字段的文档插入,然后使用聚合管道计算总和就可以了。MongoDB中的单个文档有16MB的限制,但不包括你的场地很大,可以容纳3000个场地。