问题描述
我正在寻找符合这些条件的数据库:
I'm looking for a database matching these criteria:
- 可能是非持久的;
- DB 的几乎所有密钥都需要在 3-6 小时内更新一次(100M+ 密钥,总大小为 100Gb)
- 能够通过键(或主键)快速选择数据
- 这需要是一个 DBMS(所以 LevelDB 不适合)
- 写入数据时,数据库集群必须能够提供查询服务(尽管可以阻塞单个节点)
- 不在内存中 - 我们的数据集将超出 RAM 限制
- 水平扩展和复制
- 支持所有数据的完全重写(MongoDB删除数据后不清除空间)
- C# 和 Java 支持
这是我使用此类数据库的过程:我们有一个分析集群,每 4-6 小时生成 1 亿条记录 (50GB) 的数据.数据是键 - 数组[20]".这些数据需要通过前端系统以每秒1-10k个请求的速率分发给用户.平均而言,只有约 15% 的数据被请求,其余的将在下一个数据集生成时的 4-6 小时内重写.
Here's my process of working with such database:We've got an analytics cluster that produces 100M records (50GB) of data every 4-6 hours. The data is a "key - array[20]". This data needs to be distributed to users through a front-end system with a rate of 1-10k requests per second. In average, only ~15% of the data is requested, the rest of it will be rewritten in 4-6 hours when the next data set is generated.
我尝试了什么:
- MongoDB.数据存储开销、高碎片整理成本.
- Redis.看起来很完美,但它受到 RAM 的限制,我们的数据超出了它.
所以问题是:有没有像 Redis 这样的东西,但不受 RAM 大小的限制?
So the question is: is there anything like Redis, but not limited with RAM size?
推荐答案
是的,Redis 有两种替代方案,它们不受 RAM 大小的限制,同时与 Redis 协议保持兼容:
Ardb(C++),复制(Master-Slave/Master-Master):https://github.com/yinqiwen/ardb
Ardb (C++), replication(Master-Slave/Master-Master): https://github.com/yinqiwen/ardb
一个兼容redis协议的持久化存储服务器,支持LevelDB/KyotoCabinet/LMDB 作为存储引擎.
Edis (Erlang):https://github.com/cbd/edis
Edis (Erlang): https://github.com/cbd/edis
Edis 是 Redis 的协议兼容服务器替代品,用二郎.Edis 的目标是在以下情况下成为 Redis 的替代品持久性比将数据集保存在内存中更重要.爱迪斯(目前)使用 Google 的 leveldb 作为后端.
为了完整起见,这里是另一个数据结构数据库:
Hyperdex(字符串、整数、浮点数、列表、集合、地图):http://hyperdex.org/doc/latest/DataTypes/#chap:data-types
Hyperdex (Strings, Integers, Floats, Lists, Sets, Maps): http://hyperdex.org/doc/latest/DataTypes/#chap:data-types
HyperDex 是:
- 快速:HyperDex 具有更低的延迟、更高的吞吐量和更低的与其他键值存储相比的差异.
- 可扩展:HyperDex 可扩展为更多的机器被添加到系统中.
- 一致:HyperDex 保证基于键的操作的线性化.因此,读取总是返回插入系统的最新值.不仅仅是最终",而是立即且始终.
- 容错:HyperDex 自动在多台机器上复制数据,以便并发故障,向上到应用程序确定的限制,不会导致数据丢失.可搜索:
- HyperDex 支持高效查找辅助数据属性.
- 易于使用:HyperDex 为各种脚本和母语.
- 自我维护:HyperDex 是自我维护,几乎不需要用户维护.
这篇关于有没有像Redis DB这样的东西,但不受RAM大小的限制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!