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. 保护模式下GDTR,LDTR,全局描述符表,局部描述符表和选择器的关系

    这张图要注意:右边两个0-15,其中上面的是LDTR,  下面的是选择子. 图下第五个标线,是两个线交叉的,实际上第五个线是指向右边水平的那个线. 没有箭头的两组线分别表示GDT的区间,LDT的区间 ...

  2. is present but cannot be translated into a null value due to being declared as a primitive type

    解决办法:把基本类型改为对象,譬如此处将pageId的类型由int 改为Integer 2016-10-19 19:36:11.275 DEBUG [http-nio-9999-exec-2][org ...

  3. VJP1456 最小总代价(状压)

    链接 这题卡了一天  刚开始没考虑第一个传的和最后一个传的 感觉挺简单 啪啪的敲完 居然还过了17组数据.. 正解:dp数组一维保存状态 一维保存当前传到了谁 再枚举是由谁传过来的 这样可以保证正确性 ...

  4. ORA-28001: the password has expired

    大早上正式库提示: Oracle提示错误消息ORA-28001: the password has expired 解决办法: 1.利用SYSDBA权限登陆: 2.查看账户信息:select user ...

  5. 阿里云数加平台——BI报表使用概述和总结

    先声明一点,本人写此文章初衷只为对前段时间的工作做些总结,并做个记录,以备日后查用,此外也顺便与他人分享一下.当然间接上也为阿里云的大数据平台做了个免费广告.以下开始正文. 首先进入数加服务的控制面板 ...

  6. WordPress Contact Form 7插件任意文件上传漏洞

    漏洞名称: WordPress Contact Form 7插件任意文件上传漏洞 CNNVD编号: CNNVD-201311-415 发布时间: 2013-11-28 更新时间: 2013-11-28 ...

  7. Windows系统中IIS 6.0+Tomcat服务器环境的整合配置过程

    IIS6.0+Tomcat整合 1.首先准备工作 Windows IIS 6.0 apache-tomcat-7.0.26.exe tomcat-connectors-1.2.33-windows-i ...

  8. apache开源项目--Ignite

    Apache Ignite 内存数组组织框架是一个高性能.集成和分布式的内存计算和事务平台,用于大规模的数据集处理.Ignite 为应用和不同的数据源之间提供一个高性能.分布式内存中数据组织管理的框架 ...

  9. (转)使用pth文件,让python方便的import自己写的模块

    转自:http://www.elias.cn/Python/PythonPath 文章简单易懂,有理有据. 有时候我们正在修改或调试的程序会是一个库,为修改方便,我们可能不大希望把它放到 site-p ...

  10. Velocity资源

    这里有非常多的资源和示例提供给程序员,我们推荐您查阅我们提供的示例.文档和源代码.下面是一些非常有用的资源列表: 用户和开发者社区:可以通过mail-lists加入我们.mail-lists网页地址: ...