NoSQL 数据库产品学习总结(一)

本篇文章共分为四个章节,会陆续整理下 Memcached、Redis、tair、mongodb、hbase、SequoiaDB、 Cassandra的相关知识。 本文为第一个章节,先简单介绍下memcached、reids,有理解不到位的地方,请指教。

Memcached

1.简单介绍

Memcached 是暂时性建值存储的NoSQL产品(官网:memcached.org), 能够用它搭建一套快速的分布式缓冲系统。数据採用LRU算法存储在内存中,数据不会持久化到磁盘,即当内存掉电或内存空间不够。数据会所有释放或LRU部分释放。常被用来做像Mysql这类产品的前面的加速缓冲系统。产品由Danga Interactive公司研发,服务端部分是C写的,client部分仅仅要实现Memcached的网络协议。理论上不论什么语言都能够。

2.数据存储

(1) memcached的内存单元,它的相应关系是:一个Slabclass包括多个slab,一个slab包括多个大小相等的chunk,真正存放memcached数据的最小单元item就放在chunk中。

Memcached 内存结构图:

參考:http://brionas.github.io/2014/01/06/memcached-manage/

(2) memcached的数据仅仅会存储在内存中,并不会持久化到磁盘,内存撑满则启动LRU策略。

3.通讯协议

服务端进程採用TCP或UDP通道来链接Memcached的服务端和client,详细通信的内容在1.4版本号曾经仅支持普通的文本协议,1.4版本号以后支持了高效的二进制协议。

4.部署结构

Memcached的单机部署方案非常easy,单机启动后。在client通过TCP或UDPport连接上来。然后就能够通过Memcached协议使用Memcached了。

而集群部署方案。则是针对存在多台Memcached的场景,多台Memcached在通用的方案其中,他们彼此是独立。即互相不感知的。详细的数据Sharding逻辑所有封装在Memcached的client中。

大致示意图例如以下:

存储一个KV:

读取一个KV:

由图可见数据的Sharding逻辑所有写在了client里面。

Repcached:

在memcached的解决方式中。分布的不同memcached结点彼此是不能通信的,要实现memcached结点的之间的Master/Slave结构。有一个日本同学开发了一个第三方的工具Recached,能够实现Memcached的主备结构。从结点能够实时的同步主结点的数据,当主节点挂掉,从结点能够热备的提供服务。

  1. 特性

(1) 服务端的连接管理基于libevent 异步事件引擎,能在能在Linux、BSD、Solaris等操作系统上发挥其高性能。能支撑高并发的请求。

(2) 数据不能持久化。经常使用作数据的加速缓冲。

(3) 通讯协议简单。client丰富(C/C++、PHP、Java、Python、Ruby、Perl、Windows/.NET、MySQL、PostgreSQL、Erlang、Lua、Lisp dialects等)

  1. 性能指标

性能这块官方文档这么说:On a fast machine with very high speed networking, memcached can easily handle 200,000+ requests per second. With heavy tuning or even faster hardware it can go many times that. Hitting it a few hundred times per second, even on a slow machine, usually isn’t cause for concern.

看来轻轻松松20W+的qps。

Redis

  1. 简单介绍

Redis是一个支持丰富数据结构的相似memcached的KV分布式存储系统。其开发工作由Redis的开发工作由VMware主持。

  1. 数据存储

(1) 数据存储到内存。并通过配置也能够持久化到磁盘。

假设仅存储在内存。则其功能和Memcached相似。而持久化到磁盘则能够保证数据即使由于掉电也不会丢失,眼下支持的持久化方式例如以下两种:RDB持久化方式和AOF持久化方式。

    RDB持久化方式: 在指定的时间间隔能对你的数据进行快照存储.
AOF持久化方式:则是以与更新命令同步追加的方式实时更新数据文件。

依据以上两种持久化策略能够看出,RDB定时快照的方式在遇到掉电等突发情况下,会丢失当前和近期一次快照时间间隔内的操作数据。而AOF持久化方式通过后台线程fsync的方式通过内存出具和磁盘数据,由于是异步,也会丢失一定的数据。可是由于设置的fsync的策略不同。丢失的数据会非常少,同一时候性能较比RDB也会差一些。

  1. 通讯协议

Redis是一个使用client/server模型(也被称作请求/响应协议)的TCPserver:

Redis集群结点间的协议採用的是二进制协议(binary protocol)

client与集群通信採用的是文本协议(ascii protocol)

  1. 部署结构

在最新的3.0版本号的Redis中,新增了集群部署的结构。集群各个节点能够通过gossip协议进行数据同步。

而3.0曾经的版本号測试採用Redis Sentinel利用单双MS的结构来管理集群。

集群结点间通信採用gossip协议。

  1. 特性

(1) 具有157个操作命令

(2) 支持管道(一次发送多个命令)

(3) 支持消息Pub/sub 机制。

(4) 批量操作的事物机制。

  1. 性能指标

Redis的benchmark,从測试结果来看,单纯的get/set命令能够达到10w+每秒,而pipeline的批量运行命令,已经达到了50w+的水准。其性能和memcached相比一点都不差。

NoSQL 数据库产品学习总结(一)的更多相关文章

  1. NoSQL数据库-MongoDB 学习(一)

    基本介绍 MongoDB 是为了快速开发互联网 Web 应用而设计的数据库系统 MongoDB 的设计目标是极简.灵活.作为 Web 应用栈的一部分 MongoDB 的数据模型是面向文档的,所谓文档是 ...

  2. NoSQL 数据库概览及其与 SQL 语法的比较

    NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用的难题. 本文对NoSQL数据库的定义.分类.特征.当前比较流行的NoSQL数据库系统等进行了简单的介绍,并对N ...

  3. NoSQL数据库概览及其与SQL语法的比較

    [文章摘要] HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统.同一时候也是知名的NoSQL数据库之中的一个.NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤 ...

  4. 3大主流NoSQL数据库性能对比测试报告

    近日,知名独立基准测评机构Bankmark,针对目前市面上主流的NoSQL数据库SequoiaDB.MongoDB以及Cassandra三款NoSQL数据库产品做了性能对比测试并发布测试报告.在所有的 ...

  5. NoSQL 数据库之MongoDB

    1.MongoDB简介 1.1什么是MongoDB MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种.它介于关系数据库和非关系数据库之间,是非关系数据库当 ...

  6. 大数据技术原理与应用【第五讲】NoSQL数据库:5.1 NoSQL概论&5.2 NoSQL与关系数据库的比较

    5.1 NoSQL概论 最初:反SQL 概念演变,现在:Not only SQL 特点: 1.灵活的可扩展性 所以支持海量数据存储 2.灵活的数据模型 例如:HBase 3.和云计算的紧密结合 (一) ...

  7. NoSQL数据库的四大分类的分析

    分类 Examples举例 典型应用场景 数据模型 优点 缺点 键值(key-value) Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB 内容缓 ...

  8. NoSQL数据库之国产开源产品:SequoiaDB 分析前言

    随着互联网技术的发展,面对海量数据的存储和分析,传统关系型数据库已经无法满足,由此衍生出一种与关系型数据库区别开的数据库NoSQL(Not Only SQL). 国外做的比较成熟的NoSQL有Mong ...

  9. Spring学习之旅(十三)--使用NoSQL数据库

    除了关系型数据库之外,现在还有一种 NoSQL 数据库非常流行,而 Spring 自然也没有放过对它的支持. NoSQL 数据库有很多种,如: MongoDBGenericJackson2JsonRe ...

随机推荐

  1. 四大主流云平台对比--CloudStack, Eucalyptus, vCloud Director和OpenStack。

    我迟早可能都要进入的领域,提前温习... 还有KVM,ESXI,API,XEN之间的术语和关系,也要心中有数.. ~~~~~~~~~~~~~~~~~~~ 云计算在如今的IT界一直是一个最热门的话题,鉴 ...

  2. 4. 在Inspector面板中显示类中变量+ 拓展编辑器

    1. C#脚本如下: using UnityEngine; using System.Collections; public class MyTest : MonoBehaviour { ; ; [S ...

  3. 【HDOJ】2086 A1 = ?

    数学题,首先推导出2*sum{c1,c2...cn} = (An+1-An) - (A1-A0),在将n个该式相加,可以推导出(n+1)*A1=An+1+n*A0-2*sum{sum{c1,c2... ...

  4. tlplayer for wince 版本正式商用

    开始的时候tlplayer遇到一些问题,后来经过一些简单优化后,可以满足商用条件. 支持http,mms,rtsp等网络协议,支持内存流播放.需要定制或者需要支持hls,rtmp,m3u8等协议的,请 ...

  5. msdn上wcf的介绍

    https://msdn.microsoft.com/zh-cn/library/dd456779(v=vs.110).aspx Windows Communication Foundation Ar ...

  6. new Option及用法

    op.sclassnumber.options.add(new  Option(secondMenuClassNumber[0]+":"+secondMenuText[0]),se ...

  7. POJ 3083 Children of the Candy Corn 解题报告

    最短用BFS即可.关于左手走和右手走也很容易理解,走的顺序是左上右下. 值得注意的是,从起点到终点的右手走法和从终点到起点的左手走法步数是一样. 所以写一个左手走法就好了.贴代码,0MS #inclu ...

  8. 了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密

    关系型数据库,如SQL Server,使用锁来避免多用户修改数据时的并发冲突.当一组数据被某个用户锁定时,除非第一个用户结束修改并释放锁,否则其他用户就无法修改该组数据. 有些数据库,包括SQL Se ...

  9. BrnShop开源网上商城第四讲:自定义插件

    重要通知:BrnShop企业版NOSQL设计(基于Redis)已经开源!源码内置于最新版的BrnShop中,感兴趣的园友可以去下载来看看.官网地址:www.brnshop.com. 好了现在进入今天的 ...

  10. 从Spring HibernateTemplate模板方法设计模式的实现谈起

    概述 模板方法模式是GOF设计模式中很典型的设计模式,其意图是由抽象父类控制顶级逻辑,并把基本操作的实现推迟到子类去实现,这是通过继承的手段来达到对象的复用.Spring模板方法模式实际是模板方法模式 ...