开发者社区> 问答> 正文

mongodb存储四维数组的问题

我现在基于probalistic latent semantic indexing(plsa)做图像检索,需要计算一个条件概率p(z|w,v,d),我直接定义成了“double p_z_d_wt_wv[][][][];”简单地说,z是主题,w是英文单词,v是视觉单词,d是文档,大小分别为12100500*7000,就是12个主题,100个英文单词,500个视觉单词,7000个文档,double型的话算下来大概32G,其中z和d的数目是确定的,每个d的w和v的数目是不确定的。
根据大家的建议,我使用mongodb来存储这个四维数组。
我的思路是这样的,先根据z,d,w,v生成一个字符串,比如说z=1,d=2,w=3,v=4,生成字符串"1_2_3_4",作为数组元素的索引,还有一个字段value存储这个数组元素的值。所以我的数据像下面这个样子:
`{ "_id" : { "$oid" : "51e0c6f15a66ea5c32a99773"} , "key" : "1_2_3_4" , "value" : 113.1232}
{ "_id" : { "$oid" : "51e0c6f15a66ea5c32a99774"} , "key" : "1_2_3_5" , "value" : 11.1243}`
key是数组元素的索引,类似于四位数组的下标,value就是这个元素的值。
查询的时候先根据key得到这条记录,然后得到value的值,更新的时候也是先根据key查询到这个记录,然后更新value的值。
因为使用的算法本身需要两步,第一步需要更新数组中所有元素的值,第二步需要查询数组中所有元素的值。
按照我的实现速度太慢了,光更新就得几个小时,由于这个算法是迭代进行的,按经验要迭代几百次,如果一次几个小时就根本无法忍受,请问有什么方法可以提高速度呢?
大家有什么好的建议没,多谢了。

展开
收起
落地花开啦 2016-02-20 16:12:03 2614 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    [{key-z:value},{key-w:value},{key-d:value},{key-v:value}]都可以存储

    2019-07-17 18:45:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
MongoDB多数据中心的方案选型之路 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载