最初,我不得不处理1.5 [TB]的数据。由于我只需要快速写入/读取(没有任何SQL),我设计了自己的平面二进制文件格式(使用python
实现)并且轻松(并且愉快地)保存了我的数据并在一台机器上操作它。当然,出于备份目的,我添加了2台机器作为精确镜像(使用rsync
)。
目前,我的需求正在增长,需要构建一个能够成功扩展到20 [TB](甚至更多)数据的解决方案。 我很乐意继续使用我的平面文件格式进行存储。它快速,可靠,并为我提供了所需的一切。
我关注的是复制,数据一致性等(显然,数据必须通过网络分发 - 而不是all data
可以存储在one machine
)。
是否有任何ready-made
解决方案(Linux / python based
)允许我继续使用我的文件格式进行存储,但会处理{{1}的其他组件解决方案通常提供? (数据一致性/可用性/易复制)?
基本上,我想确保我的二进制文件在整个网络中都是一致的。我使用的是60台核心机器人的网络(每个机器都有NoSql
和1GB RAM
)
答案 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