最初,我只能处理1.5 [TB]的数据。 由于我只是需要快速的写入/读取(没有任何SQL),我devise了自己的平面二进制文件格式(使用python
实现),并轻松(快乐地)保存我的数据并在一台机器上操作。 当然,为了备份目的,我添加了2台机器作为精确的镜像(使用rsync
)。
目前,我的需求在不断增长,需要构build一个能够成功扩展到20 [TB](甚至更多)数据的解决scheme。 我很乐意继续使用我的平面文件格式进行存储 。 这是快速,可靠,给我我需要的一切。
我关心的是复制,数据一致性等等(显然,数据将不得不分布 – 并不是all data
都可以存储在one machine
)通过networking。
有没有ready-made
解决scheme( Linux / python based
),可以让我继续使用我的文件格式进行存储,但是会处理NoSql
解决scheme通常提供的其他组件? (数据一致性/可用性/简单复制)?
基本上,我只想确保我的二进制文件在整个networking中是一致的。 我使用的是60个核心双核机器(每个都有1GB RAM
和1.5TB disk
)
方法:用Disco项目减少Python中的分布式地图
似乎是解决您的问题的好方法。 我用过类似问题的迪斯科项目 。
您可以在n台机器(进程)之间分发文件,并实现地图并减少适合您的逻辑的功能。
迪斯科项目教程 ,正确地描述了如何为您的问题实施解决方案。 你会留下深刻的印象,你需要写的代码很少,而且你可以保持二进制文件的格式。
另一个类似的选择是使用Amazon的Elastic MapReduce
也许一些为Tarsnap开发的Kivaloo系统的评论将帮助你决定什么是最合适的: http ://www.daemonology.net/blog/2011-03-28-kivaloo-data-store.html
不知道更多关于您的应用程序(大小/类型的记录,读/写频率)或自定义格式,很难说更多。