Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个好的blobstore/memcache解决方案_Python_Sql_Caching_Redis_Data Mining - Fatal编程技术网

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

Python 一个好的blobstore/memcache解决方案,python,sql,caching,redis,data-mining,Python,Sql,Caching,Redis,Data Mining,在Linux云服务器上设置数据仓库挖掘项目。主要语言是Python 要使用此模式查询数据和存储数据: SQL数据库-SQL数据库用于查询数据。但是,SQL数据库只存储需要搜索的字段,而不存储数据本身的“blob”。相反,它在a键值Blobstore中存储一个引用完整数据“blob”的键 Blobstore-键值Blobstore用于存储实际的“文档”或数据的“blob” 我们面临的问题是,我们希望更频繁访问的数据块自动存储在RAM中。我们计划用Redis来做这个。但是,我们希望有一个解决方案

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

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

  • SQL数据库-SQL数据库用于查询数据。但是,SQL数据库只存储需要搜索的字段,而不存储数据本身的“blob”。相反,它在a键值Blobstore中存储一个引用完整数据“blob”的键
  • Blobstore-键值Blobstore用于存储实际的“文档”或数据的“blob”
我们面临的问题是,我们希望更频繁访问的数据块自动存储在RAM中。我们计划用Redis来做这个。但是,我们希望有一个解决方案,它会自动尝试首先从RAM中获取数据,如果在RAM中找不到数据,那么它会转到blobstore

是否有一个很好的库或现成的解决方案,我们可以使用它而无需滚动我们自己的?此外,对拟议架构的任何评论和批评也将不胜感激


非常感谢

与其使用Redis或Memcached进行缓存,再加上一个“blobstore”包来存储磁盘上的内容,我建议您看看哪一个功能完全符合您的需要(即从内存中提供热Blob,但仍将其存储到磁盘)

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

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

  • 沥青桶(用于里亚克):
  • Eblob(用于Elliptics项目):

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

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

CBFS在上面放了一个文件系统,并且已经有一个为它编写的FUSE模块

由于filesttem实际上是最低的公分母,因此从python访问它应该非常容易,并且可以减少需要编写的自定义代码量

博文:

项目存储库:

使用Google App Engine有什么问题?因为他们的收费方式和数据库的限制,强制执行某些类型的查询,成本变得天文数字。此外,数据库的限制不允许某些类型的非常重要的查询,而无需进行重大的变通。