本文介绍了是否有类似 Redis DB 的东西,但不受 RAM 大小的限制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找符合这些条件的数据库:

I'm looking for a database matching these criteria:

  • 可能是非持久性的;
  • 几乎所有 DB 的密钥都需要在 3-6 小时内更新一次(100M+ 密钥,总大小为 100Gb)
  • 能够通过键(或主键)快速选择数据
  • 这需要是一个 DBMS(所以 LevelDB 不适合)
  • 写入数据时,数据库集群必须能够提供查询服务(但可以阻止单个节点)
  • 不在内存中 - 我们的数据集将超出 RAM 限制
  • 水平扩展和复制
  • 支持全部数据全部重写(MongoDB删除数据后不清空)
  • C# 和 Java 支持

这是我使用此类数据库的过程:我们有一个分析集群,每 4-6 小时产生 1 亿条记录 (50GB) 的数据.数据是一个key - array[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.

我尝试了什么:

  1. MongoDB.数据存储开销、碎片整理成本高.
  2. 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-protocol 的持久化存储服务器,支持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 大小的限制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-21 00:08