理性选择key-value Store

前言

开源产品固然好,但是各种场景的数据需求确实多少有些差距,利用现有的软硬件资源面对现有的问题快速做出调整是才是数据库工程师的真正价值。

综述

key-value store由于本身实现不像成熟RDBMS那么复杂,换句话说开发周期不常,性能更是由于去掉了ACID的约束,从一个个benchmark上看对比起主流开源关系型数据库mysql innodb的曲线都非常好看,op/s号称高一个数量级的不是没有,request latency更是有redis类似的内存性数据库,在高并发的场景下99.95%响应在1ms以下一点也不惊奇。其实对于了解oltp数据系统的同学来说,这其实一点也不神奇。

需求

使用key value store的需求:

业务篇

  1. 提高DB端的响应延迟。因为我本身也有计算、多个api调用提交(整体响应时间以最慢api时间为准:-) )、网络等开销(这个尤其适用于有专有技术平台的公司场景),因为及时我有其他复杂逻辑托我后腿了,我也不想因DB的响应延迟拖后腿,因为这个我们不可控。
  2. Memcache只是缓存

    典型的应用场景:

    function query_memcache($sql,$type=”){

    $key = md5($key);

    if(!($value = $_SGLOBAL['memcache']->get($key))){ //Cache中没有,则从My SQL中查询

    $query = $this->query($key,$type);

    while($item = $this->fetch_array($query)){

    $result[] = $item;

    }

    $value = $result;

    //将Key和Value写入MemCache

    $_SGLOBAL['memcache']->set($key,$result,0,$MEMCACHE_LIFETIME);

    }

    return $value;

    }

    先去mc查询,没有就查db,查上来顺手种下mc

    但是Memcache只能作为缓存,缓存顾名思义,需要预热、程序逻辑种植,不能持久化存储。

    系统因为各种原因的mc穿透导致db无响应导致百页的情况,应该最为常见。

  3. 如果可能请不要Sharding    了解类Mysql DB的同学知道,replication很可能成为DB资源瓶颈,所以我们业务在评估资源的时候发现要面对一堆数据库配置和五花八门的Hash函数,所以我们感叹:你们后端的同学能不能给点力,不让我开发周期一拖再拖。更不能接受的就是因为db要resharding,我们还要花大量时间改造代码。
  4. 多数nosql产品对开发友好    面向文档的(mongoDB),直接存储json(Couchbase),多种内存结构hashset,list…(redis) …等等
  5. 尝试下新技术    nosql听上去很霸气

系统运维篇

  1. TCO的降低    能替代mc+mysql,按照kv的性能测试来看,确实能节省整体TCO
  2. 减少部分运维工作    能省去了部分因为性能不足导致的扩容
  3. 安全性及可用性    kvDB的大多数都是支持持久化数据的。可用性就是指同步数据的方式,最常见就是replication。效率和可靠性都是需要考量的。
  4. 我要尝试下新技术    nosql听上去很霸气

总结:

可见开发和运维人员对与数据库系统是不一样的,短期和中长期的效益都很重要。

选择

KVDB产品非常多,很难对他们所有都很了解,故这里引用篇对比: http://asyty.iteye.com/blog/1202106 

表一 主流NOSQL简单对比

参考:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

  Cassandra Mongodb CouchDB Redis Riak HBase
开发语言 JAVA C++ Erlang C / C++ Erlang/ C / JAVASCRIPT JAVA
特点
分布式与复制的权衡

根据列和键范围进行查询

BigTable类似的功能:列,列族

写比读快很多


主从复制

查询利用javascript表达式

比CouchDB更容易就地升级

内置Sharding

数据存储使用的是内存映射文件

数据库崩溃后需要对表进行修复

持久性更好


双向复制

主主复制(master-master replication)

冲突检测

多版本并发控制,写操作不会阻塞读取

通用的技术文档

只崩溃设计Crash-only

需要经常压缩

视图:嵌入式map/reduce

格式化视图:lists & shows

服务器端文档验证可行

身份验证可行

通过_changes实时更新

附件处理


内存数据库

主从复制

简单的Key-Value

操作符较为复杂,如

ZREVRANGEBYS

CORE INCR & co

(有利于速率限制和统计)

有集合

(union/diff/inter)

有列表

(a queue; blocking pop)

有散列(多字段对象)

NoSQL中唯一处理交易的数据库


分布式与复制的权衡post-commit 和pre-commit hooks

安全性验证

内置的全文检索

Javascript或

Erlang Map/reduce


分布式与复制的权衡

模仿BigTable

Map/reduce Hadoop

利用服务器端扫描进行查询预测叠加并获取过滤

优化的实时查询

高性能Thrift网关

HTTP支持XML、Protobuf和二进制

Cascading、hive、

pig source和sink模块

基于Jruby的shell

无单点故障

类似MySQL的随机访问性能

证书 Apache Apache Apache BSD Apache Apache
协议 自定义/Thrift 自定义/BSON HTTP/REST Telnet-Like HTTP/REST
HTTP/REST/Thrift

最佳适用 基于JAVA,写操作较多,读少 动态的查询,定义索引而非map/reduce。数据变化快,磁盘不够用,可以使用MongoDB 有大量数据,但更新不大,需要预先定义查询 数据快速变化,数据库大小可以预见(适合内存存取数据)
简单的类似Cassandra

或Dynamo的功能,较强的单点容错性和扩展性

随机数据、实时读取海量数据
应用场景 银行,金融行业。数据分析
MySQL或

PostgreSQL

的替代品

CRM、CMS系统 股价系统,数据分析,实时数据采集以及实时通信场景 销售点数据采集。工厂控制系统。需要零停机时间的场景
喜欢bigTable,需要随即、实时的读写大数据(Big Data)

当然这个对比有很多问题,很多产品是解决不是同一个问题,故不应该列在里面,更奇怪的是没有把mysql列入里面,mysql(注意这里不是指handlersocket plugin)能做很多nosql做不了的事情,用作nosql DB同样的功能更为容易,为什么不拿出来对比下。

测试

之前围绕着Mysql,Redis,LevelDB,Hbase做过一些不同目的的性能测试,也算对这些产品的性能有了大概了解,未来需要对性能数据完善一下!

Mysql 内存访问性能测试

 原文发布时间为:2013-10-11

时间: 2024-10-26 14:43:52

理性选择key-value Store的相关文章

创业板体制性造富辞职套现为高管最理性选择

36位创业板公司高管和董事.监事辞职,尽早套现.落袋为安或是一些持股的创业板公司高管最理性的选择 蒋飞 一边是几十万或上百万的年薪,一边是立刻获得上千万甚至上亿身家,你会如何选择? 不满周岁的创业板正在这样考验着上市公司高管们. 近一年来,创业板创造了"中国奇迹".截至2010年8月6日,创业板公开发行并上市100家企业,平均发行市盈率67倍.同时,公开发行一完成就造就了324名亿万富翁和39个十亿级富翁家族.加上二级市场始终以中小盘股炒作为热点,创业板持续高烧不退. 但二级市场波谲云

李一戈:限购令下退房现象属正常观望不失为理性选择

中广网北京10月15日消息 据中国之声<全球华语广播网>报道,近期,各地严格落实"新国五条"调控政策,楼市调控细则密集出台.尤其是在此轮调控中,各地纷纷拿出"限购"的令牌.截至目前,已经有北京.上海.深圳.杭州.南京等八个城市出台住宅限购令.这也使得进入10月以来,大部分城市的房地产市场迅速降温,观望情绪加剧.我们来连线<21世纪经济报道>地产新闻总监李一戈,听听他的看法. 主持人:据我们了解,受新政的影响,国庆节后楼市退房现象大幅增加,你认

跌下神坛的Hadoop 过度炒作还是理性选择?

长期以来,Hadoop 这个词铺天盖地,几乎成了大数据的代名词.三年之前,提起超越 Hadoop 这件事,似乎还显得难以想象.但三年后的今天,这一情况发生了一些改变. 早在 2012 年,知名媒体 SiliconANGLE 就针对 Twitter 平台上的大数据专业人士做了一项调查.调查结果显示:这些专业人士日常谈论 NoSQL 等技术(如 MongoDB)的次数要远多于 Hadoop.这表明,至少在数据科学家的群体中,用 Hadoop 代指大数据似乎并不准确. 不过,在大部分人的印象中,Had

虚拟主机年底促销真假莫辨 理性选择才是关键

随着2013年春节的临近,新年的气息渐渐浓郁起来,各种商家的促销活动也是你方唱罢我方登场,场面十分火爆.为了讨个好彩头,大家都会或多或少的添置些年货.就在这个以娱乐和消遣为主题的月份,与年货攀不上关系的http://www.aliyun.com/zixun/aggregation/14840.html">虚拟主机,情形就惨淡多了.虚拟主机提供商基本上都会抱着年前在"干它一票"的想法,推出一大堆让人冲动而又陷阱重重的促销活动,针对这种破坏行业秩序的行为,资深虚拟主机提供商

新手站长如何理性选择虚拟主机

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;     一些站长在建设网站时总是喜欢向大网站看齐,无论是购买域名,空间还是做网站的奋斗目标.明明自己就是做一个小网店或者小社区网站,用户访问量和客户很少,却幻想着要像a5.chinaz一样使用大型服务器,满足成千上万的人同时在线.其实这是不现实的,而且很多刚入门的新站长都有这样打算过或者做过.关于其他的小编不想多说什么了,小编就自己所了解的东西和"小菜鸟&

针对业务理性选择 高端机架服务器产品推荐

在服务器采购的文章中,经常可以看到有很多篇幅的文章提倡"http://www.aliyun.com/zixun/aggregation/31480.html">理性投资",这是因为服务器不但采购需要成本,运行和维护也需要成本支出,一般在购买时就会首先考虑投入产出比,避免过度投资.不过对于资金充裕和短时间内相对业务量大的情况来说,一台性能强大的服务器是必不可少的,这也是高端服务器重点切入的市场. 联想ThinkServer RD630 S2609 4/2*1THROD:2

Mysql中对primary key一点选择改变

在5.1.46中优化器在对primary key的选择上做了一点改动: Performance: While looking for the shortest index for a covering index scan, the optimizer did not consider the full row length for a clustered primary key, as in InnoDB. Secondary covering indexes will now be pref

extjs-Ext store与combox的取值问题

问题描述 Ext store与combox的取值问题 var compStore =new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url:pathurl+'/transRuleAction!getAllCompany', timeout:60000 }), reader: new Ext.data.JsonReader({ root: "root", fields: [{ name: "comp_code"

企业通过哪三种方式选择ERP实施方?

ERP的关键是需要一个有丰富管理和实施经验的实施方,选实施方比选软件更重要.选择一个合适的专业化的实施方对ERP项目非常重要. 近年来我国企业迅速发展,规模不断扩大,如何在激烈的竞争环境中整合资源,增强企业竞争力是企业必须解决的问题.随着信息化的深入,越来越多的企业已认识到信息化的重要性,并把信息化作为提升管理水平的工具.于是,全国上下掀起了ERP普及风暴,企业都在上ERP或者准备上ERP.面对如此诱人的市场前景,国外ERP巨头纷纷抢摊中国市场,国内企业不甘示弱,纷纷揭竿而起分食ERP这块诱人的