一个很好的blobstore / memcache解决方案

时间:2012-10-17 15:50:57

标签: python sql caching redis data-mining

在Linux云服务器上设置数据仓库挖掘项目。主要语言是Python。

想使用此模式查询数据和存储数据:

  • SQL数据库 - SQL数据库用于查询数据。但是,SQL数据库仅存储需要搜索的字段,它不存储数据本身的“blob”。相反,它存储一个键,该键引用键值Blobstore中的完整“blob”数据。
  • Blobstore - 键值Blobstore用于存储数据的实际“文档”或“blob”。

我们遇到的问题是我们希望更频繁访问的数据blob自动存储在RAM中。我们计划使用Redis。但是,我们想要一个自动尝试从RAM中获取数据的解决方案,如果它无法在那里找到它,那么它将进入blobstore。

有没有一个好的库或现成的解决方案,我们可以使用而无需自己动手?此外,任何有关拟议架构的评论和批评也将受到赞赏。

非常感谢!

2 个答案:

答案 0 :(得分:3)

我没有使用Redis或Memcached进行缓存,而是使用“blobstore”包将内容存储在磁盘上,我建议您查看Couchbase Server,它可以完全满足您的需求(即从内存中提供热点blob) ,但仍然将它们存储到磁盘上。)

在我工作的公司中,我们通常使用您描述的模式(即在关系数据库中建立索引,加上blob存储)来存档服务器(TB级数据)。当写入blob的I / O保持顺序时,它运行良好。 blob永远不会被重写,而只是附加在文件的末尾(对于归档应用程序来说很好)。

其他人也使用了同样的方法。例如:

答案 1 :(得分:1)

任何SQL数据库都适用于第一部分。 Blobstore也可以通过使用cbfs获得“现成的”。这是一个基于couchbase 2.0构建的新项目,但它似乎处于非常活跃的开发阶段。

CouchBase已经尝试在检查磁盘之前从RAM缓存中提供结果,并且完全分布以支持大型数据集。

CBFS将文件系统置于其上,并且已经为其编写了一个FUSE模块。

由于fileststems实际上是最低通用分母,因此从python访问它应该非常容易,并且会减少您需要编写的自定义代码的数量。

博文: http://dustin.github.com/2012/09/27/cbfs.html

项目存储库: https://github.com/couchbaselabs/cbfs