NoSQL 数据库产品学习总结(一)「建议收藏」

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

大家好,又见面了,我是全栈君。

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 内存结构图:

NoSQL 数据库产品学习总结(一)「建议收藏」

參考: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:

NoSQL 数据库产品学习总结(一)「建议收藏」

读取一个KV:

NoSQL 数据库产品学习总结(一)「建议收藏」

由图可见数据的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协议进行数据同步。
NoSQL 数据库产品学习总结(一)「建议收藏」

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

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

  1. 特性

(1) 具有157个操作命令
(2) 支持管道(一次发送多个命令)
(3) 支持消息Pub/sub 机制。

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

  1. 性能指标

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115514.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Centos7 查看系统版本信息「建议收藏」

    Centos7 查看系统版本信息「建议收藏」本文转自至:https://blog.csdn.net/ZZY1078689276/article/details/777168711.查看版本号  CentOS的版本号信息一般存放在配置文件当中,在CentOS中,与其版本相关的配置文件中都有centos关键字,该文件一般存放在/etc/目录下,所以说我们可以直接在该文件夹下搜索相关的文件。ll/etc/*centos*查看…

    2022年6月24日
  • linux iso镜像下载_linux镜像下载网站

    linux iso镜像下载_linux镜像下载网站iso是电脑上光盘镜像(CD Mirror)的存储格式之一因为其是根据ISO-9660有关CD-ROM文件系统标准存储的文件,所以通常在电脑中以后缀.iso命名,俗称iso镜像文件。它形式上只有一个文件,可以真实反映光盘的内容,可由刻录软件或者镜像文件制作工具创建。大陆叫镜像文件,台湾叫映像文件。镜像文件需要专门的虚拟光驱软件,进行读取,完全模拟了读取光盘文件的特性原理既然可以用直接方式向 光盘写入文件,为什么还要如此麻烦地制作一个映像文件呢?要知道制作映像文件同样是个耗费..

    2022年8月9日
  • 苹果SE(fpga cpld)

    ModelsimSE-6410.4破解安装过程百度云链接:https://pan.baidu.com/s/1ONbjNLajFKzHDJ9bs4gz6Q密码:by0p压缩包解压密码:Lily_9 ①执行软件的正常安装程序.exe,点点我同意神马的….(需要重启一次)②在软件安装目录中找到mgls64.dll文件,右键文件属性取消只读属性。mgls64.dll文件的默认路径…

    2022年4月10日
  • PMOS开关电路_大功率mos管开关电路

    PMOS开关电路_大功率mos管开关电路本次项目上需要实现的功能是利用AO3401PMOS设计一个开关电路,实现一款设备的开关控制。被控设备12V供电,供电电流小于3A即可。且为了提高响应速度,使流过该设备的电流尽可能的大。该设备内阻大约为6ohm。AO3401产品参数其他参数芯片内部等效电路引脚顺序设计电路设计并调试好的电路如下图所示,由于供电电压和驱动电压均可以使用12V,所以采用了如下较为简单的方案。如图所示,Q9AO3401的栅极(G)通过100k电阻上拉到12V,源级(S)直…

    2022年9月20日
  • 计算机可靠度计算公式,可靠性计算公式大全

    计算机可靠度计算公式,可靠性计算公式大全《可靠性计算公式大全》由会员分享,可在线阅读,更多相关《可靠性计算公式大全(3页珍藏版)》请在人人文库网上搜索。1、计算机系统的可靠性是制从它开始运行(t=0)到某时刻t这段时间内能正常运行的概率,用R(t)表示所谓失效率是指单位时间内失效的元件数与元件总数的比例,以表示,当为常数时,可靠性与失效率的关系为:()=e-u(u为次方)两次故障之间系统能够正常工作的时间的平均值称为平均为故障时…

    2022年7月26日
  • python批量修改文件夹和文件名_python读写文件并替换文件内容

    python批量修改文件夹和文件名_python读写文件并替换文件内容该代码可实现,例如:文件名称为’123abc.txt’,经代码执行后可将文件重命名为’123def.txt’。importosdefrename():#函数功能为:重命名文件前缀名,将文件夹中所有前缀名包含’abc’的用’def’来替换path=’./此处填写要批量替换文件所在的文件夹名称’#文件夹地址file_list=os.listdir(path)

    2022年10月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号