我应该如何在推荐引擎中存储数据?

时间:2017-02-27 06:23:14

标签: recommendation-engine bigdata

我正在开发推荐引擎。我想我无法将整个相似性矩阵保留在内存中。 我计算了10,000个项目的相似性,它超过了4000万个浮点数。我将它们存储在二进制文件中,它变为160 MB。

哇! 问题是我可能有近20万件物品。 即使我将它们聚类成几个组并为每个组创建相似度矩阵,我仍然需要在某些时候将它们加载到内存中。 但它会耗费大量内存。

那么,无论如何都要处理这些数据吗?

我应该如何存储它们并加载到内存中,同时确保我的引擎对输入的响应速度相当快?

1 个答案:

答案 0 :(得分:2)

您可以使用memory mapping来访问您的数据。这样,您可以将磁盘上的数据视为一个大内存区域(并像访问内存一样访问它),区别在于只有您读取或写入数据的页面(临时)加载到内存中。

如果您可以稍微分组数据,则在访问数据时只需要在内存中读取较小的部分。

对于浮点数,如果你可以用较低的分辨率进行操作并将值存储为16位整数,那么它的大小也只有一半。