Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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库使用什么备份存储引擎?_Python_Storage - Fatal编程技术网

我应该为我的Python库使用什么备份存储引擎?

我应该为我的Python库使用什么备份存储引擎?,python,storage,Python,Storage,我正在用Python编写一个数据处理库,它将来自各种源的数据读取到内存中,对其进行处理,然后将其导出为各种不同的格式。我正在将这些数据加载到内存中,但我正在处理的一些数据集可能特别大(超过4G) 我需要一个开源库作为支持存储,可以优雅地处理大型数据集。它需要动态改变数据结构(添加、重命名和删除列)的能力,并且应该支持相当快的迭代。理想情况下,它应该能够处理任意大小的字符串和整数(就像python一样),但如果需要,我可以将其构建到库中。它需要能够处理丢失的值 有人有什么建议吗?可能是您的答案,尽

我正在用Python编写一个数据处理库,它将来自各种源的数据读取到内存中,对其进行处理,然后将其导出为各种不同的格式。我正在将这些数据加载到内存中,但我正在处理的一些数据集可能特别大(超过4G)

我需要一个开源库作为支持存储,可以优雅地处理大型数据集。它需要动态改变数据结构(添加、重命名和删除列)的能力,并且应该支持相当快的迭代。理想情况下,它应该能够处理任意大小的字符串和整数(就像python一样),但如果需要,我可以将其构建到库中。它需要能够处理丢失的值


有人有什么建议吗?

可能是您的答案,尽管我怀疑它主要用于数字数据,但它也可能符合您的要求(根据我在他们的主页上看到的内容)。

一个面向文档的数据库应该能够很好地处理这种工作负载,只要您没有复杂的连接

共同代表将是或

它们都非常适合于类似MapReduce的算法(这包括迭代所有数据集)。如果要将行与新数据合并,则需要对“表”进行排序或快速访问单个元素:这两种方法归结为具有索引

面向文档的数据库通过使用不同模式的文档来支持多个“表”。他们可以毫无问题地查询具有特定模式的文档


我不认为您会找到一个轻量级的解决方案来处理多个4 GB数据集,满足您列出的要求。特别是动态数据结构很难快速实现。

试试看。它允许模式的灵活性,并具有Python绑定。虽然没有太多的新闻,但它已经存在了一段时间。

另一个想法可能是用于后端。它与前面提到的有相似之处,但更侧重于使用算法对大数据集进行有效处理

与CouchDB相比,Hadoop并不真正适合于实时应用程序或网站背后的数据库,因为它在访问单个条目时具有很高的延迟,但在迭代所有元素并计算甚至数PB的数据时,它确实非常出色

所以也许你应该试试Hadoop。当然,可能需要一些时间来适应这些MapReduce算法,但它们确实是描述此类问题的一种很好的方法。您不必自己处理临时结果的存储。一个很好的副作用是,当您的数据集变大时,您的算法仍然可以工作,但您可能需要添加另一台服务器。:-)


还有很多关于Hadoop和MapReduce的书籍和文档可用,下面是一个可以帮助您开始使用Hadoop和Python的示例。

可能会,但我看不到在定义表之后有任何方法可以修改它。他们的SQL用户备忘单中有一个例子,重命名列,但不向现有表中添加新列。这可能会起作用,但似乎有点不匹配。我们处理的是数据的行和列——每个数据集只有一个数据库表。我想每行使用一个文档就可以了,但这看起来还是有点奇怪。另外,我不需要对大型数据集进行快速查询,我需要对每行(可能)进行多次迭代。这似乎不是CouchDB或MongoDB的设计目的。文档有点轻。在我对该网站的简短检查中,我没有看到任何关于它处理巨大数据集的情况。