KV系统对比表

对比维度

Redis Redis Cluster Medis Hbase Tair
访问模式    支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置10M,这个可以调大) 256M(更大value还需要测试)
支持Value结构 byte[]/list/map/set 支持分列族存储,在列族(column Family)下支持多quantifier(quantifier支持实时增删,不需要在schema中预定义)

(1)kv/map/list

(2)支持big_list(list无长度限制)

(3)支持创建schema,cmd query

支持的总数据量   1000+instance 按业务划分group集群,单个group不超过100GB scale out(业界已经有单机群几百台服务器的集群规模应用案例) scale out,理论上总数据量无限制
适宜的读写比 存内存型,均适合 支持读写混合的业务模型(读、写应用不同的Cache,可配置适用各种比例的读写业务) 支持多引擎,适宜各种比例的读写。读多写少(mdb+leveldb),读少写多(leveldb)。
数据是否可改写 Y Y 支持
是否支持Scan/Range Query   不支持,并且不支持merge operations Scan目前不支持(即将支持),Range Query不支持 支持按Key维度的Scan

支持scan

支持range query

CAP   CP 仅CA(有方案可扩展为CP) CP 用户可配置,CP或AP
语言支持 主流语言 主流语言,目前java、ruby可用 仅Java(有其它语言支持方案)

原生为Java接口。支持restful接口,支持通过thrift Server方式间接支持其他多用语言(如C,golang等)

php,restful,java,c/c++
访问性能 点写latency 虚机上平均1~2ms 平均5ms以下(写操作直接刷cache和追加持久化HLOG即可)

5~8ms(write through),1ms左右(write back)

点写吞吐率 一个instance 5w,单机器整体性能根据cpu来决定   虚机上单个redis节点5~10w qps,group的吞吐可通过多节点来扩展。受限网卡带宽瓶颈 预计单节点可达20K/s(key + value = 1k) 受限网卡带宽瓶颈(100MB),单机纯内存8w~10w qps(key+value=1k)
批量写吞吐率 受限网卡带宽瓶颈 可在hbase集群外直接将原始数据转换为HFile(hbase底层存储文件),直接以文件接口copy到hbase集群即可(理论上受限于网络带宽)

受限网卡带宽瓶颈(100MB),单机纯内存8w ~10w batch/s(batch=10keys,key+value=100,batch_size=1k)

读latency 虚机上平均1~2ms 目前Java client的平均latency在5ms左右。(理论上负载过高时,latency会有所增加) 同机房内存1ms,磁盘5-8ms(延迟不会随单机数据容量增加而增加)
可运维性 可扩展性(自动扩容、在线扩容)   支持水平扩展 支持在线扩容(暂不支持扩容时数据迁移),支持在线数据迁移 支持在线平滑扩容。 在不停读和写的服务下自动扩容
可用性(是否有单点、数据迁移/单机出错时是否会有服务中断、过载保护、慢查询保护) 使用keepalived或者官方哨兵来保持高可用

无单点

无单点

数据迁移/单机出错时自动故障转移

无过载保护(仅限制单客户端到redis的连接数500)

无慢查询保护

目前的集群hmaster为单点服务(提供进程级恢复机制)。后续部署多hmaster方案。

单个RegionServer异常时,region服务被迁移到其他Server上时,该Server上的数据短时不可访问。

无慢查询保护

(1)无单点

(2)不中断服务

(3)有过载保护

(4)无慢查询保护,但有慢查询递归树监控

可靠性(如何防止数据丢失,包括机器断电、硬盘损毁等情形下) 0~N个数据slave备份(实际使用情况基本是0个备份) 数据持久化在底层HDFS中,默认配置为三备份。

(1)多机数据冗余

(2)断电数据不丢失,重放redo log

(3)数据完整性crc校验(防止磁盘损坏)

对业务混合部署的支持(性能隔离) 进程级隔离(特殊处理可以到机器间隔离) 集群级隔离

硬软隔离:

(1)支持不同group的业务混步

(2)支持同一个group业务混步(通过名字空间隔离),支持网络和内存的隔离。

对访问权限的可控制性

web操作管理员授权

api操作支持鉴权和非鉴权两种模式

提供机器接入的安全认证;

提供业务表级别的权限认证机制(如读、写、管理运维等)。

机器粒度的白名单管理
实现语言、代码量 JAVA,java客户端14000行、管理中心22000行

Java。

client,30K

整个工程(包括client和测试用例等)500k

核心代码c++,10w行左右

注:redis、redis cluster、medis如果没有特殊说明,核心指标相同。

Redis/HBase/Tair比较的更多相关文章

  1. Memcached、Redis OR Tair

    一.前言 非关系型数据库(NoSQL = Not Only SQL)的产品非常多,常见的有Memcached.Redis.MongoDB等优秀开源项目,相关概念和资料网上也非常丰富,不再重复描述,本文 ...

  2. mongodb,redis,hbase 三者都是nosql数据库,他们的最大区别和不同定位是什么?

      不严谨地讲,Redis定位在"快",HBase定位于"大",mongodb定位在"灵活". NoSQL的优点正好就是SQL的软肋,而其弱 ...

  3. linux中mysql,mongodb,redis,hbase数据库操作

    .实验内容与完成情况:(实验具体步骤和实验截图说明) (一) MySQL 数据库操作 学生表 Student Name English Math Computer zhangsan lisi 根据上面 ...

  4. KV存储系统

    现在的KV存储系统都是分布式的,首先介绍Zookeeper——针对大型分布式系统的高可靠的协调系统. 开发分布式系统是件很困难的事情,其中的困难主要体现在分布式系统的“部分失败”.“部分失败”是指信息 ...

  5. 【转】tair与redis比较总结

    1. Tair总述 1.1 系统架构 一个Tair集群主要包括3个必选模块:configserver.dataserver和client,一个可选模块:invalidserver.通常情况下,一个集群 ...

  6. Ehcache/Redis/Tair缓存性能对比[转载]

    FW : http://xulingbo.net/?p=434 版权归许令波所有.此处只是一个转载. 后面介绍的不同方式都有测试数据,这些测试数据都是在同一的测试环境下得出的测试结果: 测试机器的配置 ...

  7. 1-NoSQL介绍及Redis安装

    背景 随着互联网的不断发展和软件架构的不断复杂化,同时随着网站访问量的日渐上升,导致传统单机关系型数据库应用已经无法满足人们的需求,在高并发的场景下,频繁的数据库存取操作使得服务器压力剧增,甚至导致服 ...

  8. Redis入门--进阶详解

    Redis NoSql入门和概述 入门概述 互联网时代背景下大机遇,为什么用nosql 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付,在那个时候, ...

  9. redis简介与持久化

    一 . redis简介 redis属于NoSQL学名(not only sql) 特点: 存储结构与mysql这一种关系型数据库完全不同,nosql存储的是key value形式 nosql有很多产品 ...

随机推荐

  1. Asp.Net WebApi核心对象解析(下篇)

    在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...

  2. 谈一下关于CQRS架构如何实现高性能

    CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...

  3. dubbo服务提供与消费

    一.前言 项目中用到了Dubbo,临时抱大腿,学习了dubbo的简单实用方法.现在就来总结一下dubbo如何提供服务,如何消费服务,并做了一个简单的demo作为参考. 二.Dubbo是什么 Dubbo ...

  4. WebAPi之SelfHost自创建证书启动Https疑难解惑及无法正确返回结果

    前言 话说又来需求了,之前对于在SelfHost中需要嵌套页面并操作为非正常需求,这回来正常需求了,客户端现在加了https,老大过来说WebAPi访问不了了,这是什么情况,我去试了试,还真是这个情况 ...

  5. Hawk 6. 高级话题:子流程系统

    子流程的定义 当流程设计的越来越复杂,越来越长时,就难以进行管理了.因此,采用模块化的设计才会更加合理.本节我们介绍子流程的原理和使用. 所谓子流程,就是能先构造出一个流程,然后被其他流程调用.被调用 ...

  6. 介绍一款原创的四则运算算式生成器:CalculateIt2

    家里小朋友读一年级了,最近每天都有一些10以内的加减法口算练习,作为程序员爸爸,自然也是想办法能够偷懒,让电脑出题,给小朋友做些练习.于是,自己在业余时间开发了一个四则运算算式生成器,名为:Calcu ...

  7. java中的内部类

    /** * 内部类 ?? * 定义在一个内部的类,被称为内部类. * 内部类里有类体,方法体 * 内部类所在的类,被称为外部类. * --------------------------------- ...

  8. 反应器(Reactor)和主动器(Proactor)

    网络方面用的比较多的库是libevent和boost.asio,两者都是跨平台的.其中libevent是基于Reactor实现的,而boost.asio是基于Proactor实现的.Reactor和P ...

  9. SAP CRM 性能小技巧

    导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比 ...

  10. iOS app内存分析套路

    iOS app内存分析套路 Xcode下查看app内存使用情况有2中方法: Navigator导航栏中的Debug navigator中的Memory Instruments 一.Debug navi ...