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

时间:2014-12-11 23:01:40

标签: mongodb vector database

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

数据:

我们有一个批处理过程,每天生成6000个大小为3000的向量。向量中的每个元素都是DOUBLE。对于每个向量,我们还生成“国家”,“扇区”,“资产类型”等标签(它是财务数据)。

查询:

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

我们尝试了什么:

很容易实现带有2个表的规范化星型模式,一个带有标记信息和一个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操作效率不高吗?

如果有人能指出我可以帮助我们有效解决问题的数据库解决方案,那将是很棒的。

谢谢!

0 个答案:

没有答案