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

4 投票
2 回答
987 浏览
提问于 2025-04-16 15:10

最开始,我只需要处理1.5[TB]的数据。因为我只需要快速的读写(不需要用SQL),所以我自己设计了一种简单的二进制文件格式(用python实现),轻松愉快地在一台机器上保存和处理我的数据。当然,为了备份,我又增加了两台机器,作为数据的镜像(使用rsync)。

现在,我的需求在不断增长,需要建立一个可以扩展到20[TB](甚至更多)数据的解决方案。我很乐意继续使用我的文件格式来存储数据。它快速、可靠,能满足我的所有需求。

我担心的是数据的复制和一致性等问题(显然,数据必须分布在网络中——不能把所有数据都存储在一台机器上)。

有没有什么现成的解决方案(基于Linux / python)可以让我继续使用我的文件格式进行存储,同时处理NoSql解决方案通常提供的其他功能?(比如数据一致性、可用性和简单的复制)?

基本上,我想确保我的二进制文件在整个网络中是一致的。我正在使用一个由60台双核机器组成的网络(每台有1GB RAM1.5TB磁盘)。

2 个回答

1

也许关于为Tarsnap开发的Kivaloo系统的一些评论会帮助你决定什么是最合适的:http://www.daemonology.net/blog/2011-03-28-kivaloo-data-store.html

如果不了解你的应用程序(比如记录的大小/类型、读取/写入的频率)或自定义格式,就很难说得更多。

1

方法:使用Disco项目在Python中进行分布式Map Reduce

这似乎是解决你问题的一个好方法。我之前也用过Disco项目来处理类似的问题。

你可以把文件分散到多个机器(进程)上,然后实现适合你逻辑的map和reduce函数。

Disco项目的教程详细描述了如何为你的问题实现解决方案。你会惊讶于你需要写的代码有多少,而且你绝对可以保持二进制文件的格式。

另一个类似的选择是使用亚马逊的弹性MapReduce

撰写回答