我正在寻找符合这些标准的数据库:
以下是我使用此类数据库的过程: 我们有一个分析集群,每4-6小时可生成100M记录(50GB)数据。数据是“键 - 数组[20]”。这些数据需要通过前端系统分发给用户,每秒的速率为1-10k。平均而言,只有约15%的数据被请求,其余部分将在生成下一个数据集时在4-6小时内重写。
我尝试了什么:
所以问题是:是否有类似Redis的东西,但不限于RAM大小?
答案 0 :(得分:24)
是的,Redis有两种替代方案,不受RAM大小限制,同时保持与Redis协议兼容:
Ardb(C ++),复制(Master-Slave / Master-Master):https://github.com/yinqiwen/ardb
兼容redis协议的持久存储服务器,支持 LevelDB / KyotoCabinet / LMDB作为存储引擎。
Edis(Erlang):http://inaka.github.io/edis/
Edis是Redis的协议兼容服务器替代品,用于编写 二郎。 Edis的目标是成为Redis的直接替代品 持久性比将数据集保存在内存中更重要。 EDIS (目前)使用Google的leveldb作为后端。
为了完整起见,这里是另一个数据结构数据库:
Hyperdex(字符串,整数,浮点数,列表,集合,地图):http://hyperdex.org/doc/latest/DataTypes/#chap:data-types
HyperDex是:
- 快速:HyperDex具有更低的延迟,更高的吞吐量和更低的吞吐量 差异比其他键值商店。
- 可扩展:HyperDex可扩展为 系统中添加了更多的机器。
- 一致:HyperDex保证 基于键的操作的线性化。因此,读取始终返回 插入系统的最新值。不只是“最终”,而是 立即和永远。
- 容错:自动HyperDex 在多台计算机上复制数据,以便同时发生故障 根据应用程序确定的限制,不会导致数据丢失。 可搜索:
- HyperDex可以高效查找辅助数据 属性。
- 易于使用:HyperDex为各种API提供API 脚本和本地语言。
- 自我维护:HyperDex是 自我维护,几乎不需要用户维护。
答案 1 :(得分:21)
是的,SSDB(https://github.com/ideawu/ssdb),它与Redis的API非常相似:http://www.ideawu.com/ssdb/docs/php/
SSDB支持hash,zset。它使用leveldb作为存储引擎,大多数数据存储在磁盘上,RAM用于缓存。在我们的带有300GB数据的SSDB实例上,它只使用800MB RAM。
答案 2 :(得分:4)
现在,您可以轻松找到具有超过100 GB RAM的服务器来托管单个实例,或者您可以对数据进行分片并使用少量RAM的多个服务器。使用Redis(在RAM中)存储100 GB并不是一个真正的问题。
现在,如果你真的想尝试一个不受RAM大小限制的Redis的边缘克隆,那就有NDS(由Matt Palmer提供):
请注意,NDS的存储后端已从Kyoto Cabinet迁移到LMDB(一个非常好的软件包,也支持OpenLDAP),正是因为删除密钥后的空间回收问题。
其他解决方案 - 与Redis不兼容 - 也可能满足您的需求:例如Couchbase和Aerospike可以轻松支持您的吞吐量。如果你有足够的节点,Cassandra和Riak可能会工作得很好。