【发布时间】:2013-02-08 15:59:33
【问题描述】:
在我的 Ruby On Rails 应用程序中,我必须为每个文档存储(相对)大约 300x300 个元素(浮点值,大部分不同)的大型矩阵。在每次检索文档时,都必须加载完整的矩阵以进行自定义计算。矩阵也经常更新(因此写入性能和内存缓存也是一个问题)。
存储此类矩阵的好方法是什么(性能方面)?我想到的一些替代方案:
- 包含
row、column和value列的表。但我猜想在每个请求上获取和存储整个矩阵(大约 90000 个单元格)并不是一个好主意(一些内存缓存会有所帮助)。 - 将序列化的矩阵存储在文本字段/列中。从性能的角度来看,您对它与 1. 的比较有何想法?
- 使用一些文档数据库(例如 Mongo)并将整个矩阵存储在文档的一个字段中(不确定与 2. 相比的好处在哪里)。
【问题讨论】:
-
如何与 R 或 Matlab 等人进行矩阵工作并让他们完成繁重的工作?
-
这里回答了一些类似的问题,即使这不是稀疏数据,所以并不是所有的都是相关的:stackoverflow.com/a/2599384/178651 - 我认为的诀窍是首先考虑存储/检索它的方式有效地进入/来自数据库,然后您可以确定需要在 Rails 中进行多少解析、比较等。
-
鉴于这是满足您需求的独特方案,我建议您尝试一些看起来最好的选项。我的第一个想法是将其存储为一个大 blob(想想 CSV)(选项 #2)。但是,我从来不需要存储任何你需要的东西,所以很难预测。我不会仅仅为此使用 MongoDB。您的描述听起来不像您需要数据库的其他功能。
标签: ruby-on-rails mongodb rails-activerecord large-data