TL;博士:
我想推荐一个分布式键值存储,平均条目大小高达50KB,安装在Linux环境(专用服务器)上
文件系统解决方案即可。
我找到了一些解决方案:Ceph、Cassandra、Riak,还有更多。
详细信息
我正在为我们的一个组件寻找一个存储解决方案,它应该是一个键值存储、平面命名空间。
场景
读/写模式非常简单:
一旦一个键值被写入,在接下来的几个小时内就会有一些读取。
在那之后,任何东西都不会触及给定的键值。我们希望保留这些数据以备将来使用,即"存储模式"。
其他使用方面
- 操作系统:Linux
- Python客户端/连接器
- 总大小:最高可达80TB(此值也表示将来的需要)
- 平均条目大小(对于k-v对中的单个值):10到50 KB,未压缩,主要是文本数据
- 压缩:内置或外置
- 加密:不需要
- 网络带宽:1Gb,单局域网
- 服务器:专用(不在云中)
最重要的要求
"基本"要求是:
- 操作系统:Linux
- Python客户端/连接器或通过HTTP的RESTful API
- 可以轻松存储高达80TB的容量(此值也代表了未来的需求)
- 最大读取延迟:首次读取为几秒,"存储模式"为30秒(请参阅上面的解释)
- 内置复制(以便数据存储在多个节点上)
很高兴有
- RESTful网关
- 后台数据备份到另一个存储(用于在发生灾难时进行数据恢复)
- 易于配置
到目前为止我发现了什么
- Ceph
- HDFS
- HDFS顶部的HBase
- Lustre
- GlusterFS
- Mongo的GridFS-但是我可以信任Mongo的基础设施吗
- Cassandra-不是一个选项,因为合并过程消耗双倍的磁盘大小
- Riak-看起来它和Cassandra有同样的问题,需要更多的研究
- Swift+OpenStack(实际存储可以在Amazon S3上)
- 伏地魔
- 有几十个额外的工具,但我不会在这里写它们,因为其中一些工具有专有许可证,而其他工具似乎还不成熟
如果您对我上面提到的任何工具(总容量超过50TB)或您认为足够的工具提出任何建议,我将不胜感激。
只需使用Ceph(我的意思是直接使用librados)。不要使用GlusterFS——它很臭。