NoSql使用我自己的自定义二进制文件?

时间:2011-04-06 01:26:26

标签: python linux distributed

最初,我不得不处理1.5 [TB]的数据。由于我只需要快速写入/读取(没有任何SQL),我设计了自己的平面二进制文件格式(使用python实现)并且轻松(并且愉快地)保存了我的数据并在一台机器上操作它。当然,出于备份目的,我添加了2台机器作为精确镜像(使用rsync)。

目前,我的需求正在增长,需要构建一个能够成功扩展到20 [TB](甚至更多)数据的解决方案。 我很乐意继续使用我的平面文件格式进行存储。它快速,可靠,并为我提供了所需的一切。

我关注的是复制,数据一致性等(显然,数据必须通过网络分发 - 而不是all data可以存储在one machine)。

是否有任何ready-made解决方案(Linux / python based)允许我继续使用我的文件格式进行存储,但会处理{{1}的其他组件解决方案通常提供? (数据一致性/可用性/易复制)?

基本上,我想确保我的二进制文件在整个网络中都是一致的。我使用的是60台核心机器人的网络(每个机器都有NoSql1GB RAM

2 个答案:

答案 0 :(得分:1)

也许为Tarsnap开发的Kivaloo系统的一些评论将帮助您确定最合适的内容:http://www.daemonology.net/blog/2011-03-28-kivaloo-data-store.html

在不了解您的应用程序(记录的大小/类型,读/写频率)或自定义格式的情况下,很难说更多。

答案 1 :(得分:1)

方法:使用Disco项目在Python中减少分布式地图

似乎是解决问题的好方法。我使用过the disco project类似的问题。

您可以在n个机器(进程)之间分发文件,并实现映射并减少适合您逻辑的函数。

The tutorial of the disco project,准确地描述了如何为您的问题实施解决方案。您需要编写的代码很少,并且您可以保留二进制文件的格式,这一点会让您印象深刻。

另一个类似的选择是使用Amazon's Elastic MapReduce