HyperDex学习笔记

最近一个NoSQL数据库很火,它高度一致, 高度可搜索, 非常快。几乎全面超越NoSQL的代表MongoDBCassandra。它就是HyperDex, 看一下官方给出的性能测试结果:

左边是系统吞吐量的对比,右边是系统响应时间的对比。这么牛的系统一定要看一下:

  • 最大的特点是不只可以根据主键搜索, 还可以根据其它字段搜索, 而且效率很高。
  • 它的奥妙在于它的数据分布方式: Hyperspace Hashing
    • 把每个属性作为一个维度,构造一个N维空间
    • 每个记录的每个字段通过hash,计算出一个值,映射到这个N维空间里面去
    • 使用的不是普通的hash,而是保持数据之间顺序的hash, 因此可以做遍历(scan)。
  • 对于那些有很多字段的表,按照这种设计,这个hyperspace会很大,但是机器数目就那么多。最后导致的问题就是,对于一般的查询,都要去很多server node去查询。HyperDex的解决办法是建立多个子的hyperspace而不是一个大的Hyperspace, 这样可以很好的解决这个问题.
  • HyperDex的为了使得search的效率更高,在多个subspace里面存了一条数据的多个副本,因此空间效率应该不会太高。
  • 通过value dependent chain来解决一致性问题,以及replication.
    • 对于每条数据,由于有多个subspace, 有多个node上有同一条记录, 所以会出现concurrent updates的问题: update1更新replica1, 而同时update2在更新replica2, 顺序混乱最后会导致数据不一致。
    • HyperDex通过在每个请求里面加上版本号信息来解决,比如有两个请求upadte1, update2, update1先过来的,它的版本号是1,那么HyperDex直接执行这个请求,而对于update2, 如果先到达某个node, 但是因为它的version是2, 所以要等1执行之后才会执行它。
    • 如果同时一个update,一个delete过来,事情会变得更加复杂,HyperDex的做法是避免这种情况,当HyperDex发现delete的时候,有人在update, 那么它等update做完之后再做。
  • HyperDex的replication对于用户来说是同步的 — 用户需要等replication结束,调用才能返回。
  • HyperDex不是schema free的

  • 新增机器怎么弄?
作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://xumingming.sinaapp.com/785/hyperdex-notes/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值