Redis/HBase/Tair比较
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比较的更多相关文章
- Memcached、Redis OR Tair
一.前言 非关系型数据库(NoSQL = Not Only SQL)的产品非常多,常见的有Memcached.Redis.MongoDB等优秀开源项目,相关概念和资料网上也非常丰富,不再重复描述,本文 ...
- mongodb,redis,hbase 三者都是nosql数据库,他们的最大区别和不同定位是什么?
不严谨地讲,Redis定位在"快",HBase定位于"大",mongodb定位在"灵活". NoSQL的优点正好就是SQL的软肋,而其弱 ...
- linux中mysql,mongodb,redis,hbase数据库操作
.实验内容与完成情况:(实验具体步骤和实验截图说明) (一) MySQL 数据库操作 学生表 Student Name English Math Computer zhangsan lisi 根据上面 ...
- KV存储系统
现在的KV存储系统都是分布式的,首先介绍Zookeeper——针对大型分布式系统的高可靠的协调系统. 开发分布式系统是件很困难的事情,其中的困难主要体现在分布式系统的“部分失败”.“部分失败”是指信息 ...
- 【转】tair与redis比较总结
1. Tair总述 1.1 系统架构 一个Tair集群主要包括3个必选模块:configserver.dataserver和client,一个可选模块:invalidserver.通常情况下,一个集群 ...
- Ehcache/Redis/Tair缓存性能对比[转载]
FW : http://xulingbo.net/?p=434 版权归许令波所有.此处只是一个转载. 后面介绍的不同方式都有测试数据,这些测试数据都是在同一的测试环境下得出的测试结果: 测试机器的配置 ...
- 1-NoSQL介绍及Redis安装
背景 随着互联网的不断发展和软件架构的不断复杂化,同时随着网站访问量的日渐上升,导致传统单机关系型数据库应用已经无法满足人们的需求,在高并发的场景下,频繁的数据库存取操作使得服务器压力剧增,甚至导致服 ...
- Redis入门--进阶详解
Redis NoSql入门和概述 入门概述 互联网时代背景下大机遇,为什么用nosql 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付,在那个时候, ...
- redis简介与持久化
一 . redis简介 redis属于NoSQL学名(not only sql) 特点: 存储结构与mysql这一种关系型数据库完全不同,nosql存储的是key value形式 nosql有很多产品 ...
随机推荐
- CENTOS 6.5 平台离线编译安装 Mysql5.6.22
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
- C#中如何在Excel工作表创建混合型图表
在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...
- [原] KVM 虚拟化原理探究(3)— CPU 虚拟化
KVM 虚拟化原理探究(3)- CPU 虚拟化 标签(空格分隔): KVM [TOC] CPU 虚拟化简介 上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要 ...
- iOS 多线程之GCD的使用
在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...
- iOS开发--ChildViewController实现订单页的切换
先不说废话, 上效果图, 代码量也不大, 也不上传github骗星星了, 你们复制粘贴下代码, 就可以轻而易举的弄出一个小demo. 这个代码的实现并不复杂, 甚至于说非常简单, 就是逻辑有点小绕, ...
- jQuery标准的AJAX模板
$('#saveInformationTemplate_button').on('click', function(){ if(isEmpty($("#name").val())) ...
- fmt标签把时间戳格式化日期
jsp页面标签格式化日期 <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f" %> ...
- 使用Metrics监控应用程序的性能
在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析.在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如当前系统中对 ...
- [异常解决] JLINK 与STM32的SWD连接接线方式
如果我们的板子上只留了4个接口:V3.3,SWDIO,SWDCLK,GND.那么和JTAG的连接关系参见下图: 注意缺口方向.然后GND可以接左边任何一个pin(除了最底下这个PIN). FROM: ...
- TODO:一不顺眼就换字体Go之应用篇
TODO:一不顺眼就换字体Go之应用篇 字体,文字的外在形式特征.就是文字的风格,是文字的外衣.好的字体让人看得舒服,让人更有看.写的欲望哦.2016-11-16 GO官方博客发布了同名Go字体,并没 ...