2013-08-13

SSDB 的 key_range 和未来的集群之路

Views: 27899 | 2 Comments

SSDB 在 1.5.7 版本中增加了 key_range 查询, 用于获取 SSDB 服务器当前数据的范围. 下一个版本会增加 set_key_range 功能, 用于指定 SSDB 应该服务的数据的区间范围. 这个 key_range 是 SSDB 未来集群之路的开始.

在很多基于客户端的存储集群方案中(如 hash), 数据存储在哪台服务器需要客户端来决定, 也就是由用户(开发者)来决定. 这一类的方案都是伪集群和伪分布式, 因为数据的定位要求客户端主动进行, 而且数据没有无缝的迁移机制, 就不能称为一个系统.

为了实现存储集群, 数据必须分片(Sharding). SSDB 不会使用 hash 分布, 因为 hash 分布的粒度控制不精确. SSDB 将使用的是区间分布式(堆查找表), 从而实现最小一个 key 粒度的数据分片. 分片的粒度越小, 实现数据的无缝迁移就越好, 因为数据迁移过程的不稳定状态非常短暂.

集群中的每一个节点必须知道自己的 range, 这样就可以明确拒绝超越自己服务范围的请求. 比如 key=a 不在这台服务器上, 那么当这台服务器收到 key=a 的操作时, 它就可以明确拒绝, 以便让客户端主动去更新自己的查找表. 所有的客户端都是不可靠的, 服务器必须做自己的一套验证!

Related posts:

  1. SSDB 支持 TTL 过期机制
  2. SSDB 数据库的图形化界面管理工具 – phpssdbadmin
  3. 单实例支撑每天上亿个请求的SSDB
  4. SSDB支持flushdb命令清除数据库
Posted by ideawu at 2013-08-13 22:00:02 Tags: ,

2 Responses to "SSDB 的 key_range 和未来的集群之路"

Leave a Comment