数据库系列课程课件_第1页
数据库系列课程课件_第2页
数据库系列课程课件_第3页
数据库系列课程课件_第4页
数据库系列课程课件_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、NoSQL 数据库系列课程一、MemCached 缓存技术(一)什么是 MemCachedMemcache 是一套开源,高性能的分布式的内存对象缓存系统,目前被许多使用以提升的速度,尤其对于一些大型的、需要频繁数据库的速度提升效果十分显著。Memcache 将所有数据在内存中,并在内存里维护一个统一的巨大的 Hash 表,它能任意类型的数据,包括图像、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中,从而大大提高速度。(二)为什么要用 MemCached?请大家先看一个问题,这个问题在大并发,高负载的大家思考如何让速度更快。中必须考虑!解决方案:lll传统的 RDBMS

2、页面静态化MemCached 缓存技术基于 Memcached 的架构(三)MemCached 的基本原理和体系结构简单的说: memcached 就是在内存中维护一张巨大的hash 表,通过自己的一套路由算法来维护数据的操作。(四)MemCached 数据的过期1、数据方式:Slab Allocation 即:按组分配内存(1) 每次先分配一个 Slab,相当于一个 page,大小 1M。(2) 然后在 1M 的空间里根据内容再划分相同大小的 chunk(3) 优点是:最大限度的利用内存,避免产生内存碎片(4) 缺点是:会造成内存的浪费2、数据过期方式(1)懒过期方式(Lazy Expira

3、tion):memcached 内部不监视数据是否过期,而是 get 时查看间,检查是否已经过期,这叫惰性过期。时(2)LRU 算法:采用最近最少使用算法淘汰内存中的数据(五)MemCached 安装与部署实验环境:lllllOracleLinux-R6-U6-Server-i386-dvd.isomemcached-1.4.25.tar.gzmemcached-1.2.8-repcached-2.2.tar.gz libevent-2.0.21-stable.tar.gz spymemcached-2.10.3.jar1、安装 GCC 编译器所需的rpm 包rpm -ivh libgomp-

4、4.4.7-11.el6.i686.rpmrpm -ivh libstdc+-devel-4.4.7-11.el6.i686.rpm rpm -ivh kernel-headers-2.6.32-504.el6.i686.rpm rpm -ivh glibc-headers-2.12-1.149.el6.i686.rpm rpm -ivh glibc-devel-2.12-1.149.el6.i686.rpm rpm -ivh ppl-0.10.2-11.el6.i686.rpmrpm -ivh cloog-ppl-0.15.7-1.2.el6.i686.rpm rpm -ivh mpfr-2

5、.4.1-6.el6.i686.rpmrpm -ivh cpp-4.4.7-11.el6.i686.rpm rpm -ivh gcc-4.4.7-11.el6.i686.rpm rpm -ivh gcc-c+-4.4.7-11.el6.i686.rpm rpm -ivh telnet-0.17-48.el6.i686.rpm2、安装 Libevent*、确认是否已经安装?并删除旧版本rpm -qa | grep libeventrpm -e libevent-1.4.13-4.el6.i686 -nodeps*、解压:tar -zxvf libevent-2.0.21-stable.tar.g

6、z*、安装到/root/training/libevent 目录./configure -prefix=/root/training/libevent makemake install3、安装 MemCached4、启动 MemCached:memcached -h 帮助信息启动命令:./memcached -u root -d -m 128-p:指定端口 默认:11211-u:指定用户名(root 用户必须使用该选项)-m:分配的内存,默认:64M-c:最大并发连接,默认 1024-d:启动一个守护进程(六)操作 MemCached1、Telnet 方式(命令行方式)统计信息令:uuusta

7、tsstats items stats slabs2、Java 客户端方式spymemcached-2.10.3.jarl数据l数据l基于客户端的分布式数据(七)MemCached 的路由算法1、求余数 hash 算法用 key 做 hash 运算得到一个整数,根据余数路由。例如:服务器端有三台 MemCached 服务器根据 key,做 hash 运算7%3=1,那么就路由到第 2 台服务器。6%3=0,那么路由到第 1 台服务器5%3=2,那么路由到第 3 台服务器优点:数据分布均衡在多台服务器中,适合大多数据需求。 缺点:如果需要扩容或者有宕机的情况,会造成数据的丢失。2、一致性 has

8、h 算法l 基本原理:l一致性hash 算法下扩容l一致性hash 算法下 DOWN 机(八)MemCached 的主主和 HA1、Memcached 主主l安装具有功能的 memcached 版本tar zxvf memcached-1.2.8-repcached-2.2.tar.gzcd memcached-1.2.8-repcached-2.2./configure -prefix=/root/training/memcached_replication-with-libevent=/root/training/libevent/ -enable-replicationmakemake

9、install出现以下错误:解决办法,编辑 memcached.c 文件如下:修改成如下形式:l启动第一台 MemCached,使用-x 指定对端服务器的地址./memcached -d -u root -m 128 -x 192.168.137.12l启动第二台 MemCached,使用-x 指定对端服务器的地址./memcached -d -u root -m 128 -x 192.168.137.11出现以下错误:解决办法:l查找 libevent-2.0.so.5 whereis libevent-2.0.so.5使用 ldd 命令查看 memcached 命令,发现找不到ll建立软连

10、接ln -s /root/training/libevent/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.52、Memcached 的 HA(High Availablity)Keepalived 是一个交换机制的软件。Keepalived 的作用是检测服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后 Keepalived 自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工只是修复故障的服务器。,需要

11、人工做的利用 Keepalived 实现 MemCached 的主主高可用架构:llKeepalived 在 memcached 主服务器产生一个虚拟 IP(VIP) Keepalived 可以通过不断的检测 memcached 主服务器的 11211 端口是否正常工作,如果发现 memcached Down 机,虚拟 IP 就从主服务器移到从服务器l配置 Keepalived(每台都要配置):lrpm -ivh keepalived-1.2.13-4.el6.i686.rpml配置:主从节点都要配置,配置文件:n/etc/keepalived/keepalived.conf(主节点配置信息)

12、! Configuration File for keepalived(从节点配置信息)! Configuration File for keepalivedglobal_defs notification_global_defs notification_collen_trainingcollen_trainingnotification_notification_from collen_training_from collen_trainingsmtp_server 127.0.0.1smtp_connect_timeout 30 router_id LVS_DEVELsmtp_serve

13、r 127.0.0.1smtp_connect_timeout 30 router_id LVS_DEVELvrrp_instance VI_1 state MASTER interface eth0 virtual_router_id 51priority 101advert_int 1 authentication auth_type PASS auth_pass 1111virtual_ipaddress 192.168.137.88vrrp_instance VI_1 state MASTER interface eth0 virtual_router_id 51priority 10

14、0advert_int 1 authentication auth_type PASS auth_pass 1111virtual_ipaddress 192.168.137.88验证 Keepalived:使用命令 ip ad sh 查看虚拟 ip 地址二、Redis 高性能内存数据库(一)什么是 Redis?Redis 是一个key-value系统。和Memcached 类似,它支持的value类型相对,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set -有序集合)和 hash(类型)。与 Memcached 一样,为了保证效率,数据都是缓存在

15、内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的同步。文件,并且在此基础上实现了 master-slave(主从)Redis 是一个高性能的 key-value 数据库。Redis 的出现,很大程度补偿了memcached 这类 key/value的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了 Java,C/C+,C#,PHP,JavaScript,Perl,Object-C, Python,Ruby,Erlang 等客户端,使用很方便。1Redis 支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的

16、主服务器。(二)Redis 与 Memcached 的区别u 持久化:lRedis 可以用来做缓存,也可以做久化方式Memcached 只能缓存数据;支持 ADF 和 RDB 两种持lu 数据结构:lRedis 有丰富的数据类型:字符串、链表,Hash、集合,有序集合Memcached 一般就是字符串和对象l(三)Redis 的安装与配置1解压:tar -zxvf redis-3.0.5.tar.gz 2make3. make PREFIX=/root/training/redis install4. cp /tools/redis-3.0.5/redis.conf /root/trainin

17、g/redis/etc/Redis 的配置文件:redis.conf令:Redisllllllredis-benchmark性能测试工具redis-check-aof检查 AOF 日志redis-check-dump 检查 RDB 日志启动命令行客户端redis-cliredis-sentinel redis-server启动 Redis 服务启动 Redis:ll./redis-server ./etc/redis6379.conf./redis-server ./etc/redis6380.conf这样就在 6379 和 6380 端口上,各自启动了一个 Redis 实例;也可以通过 ps

18、 命令查看:启动 Redis 的客户端:redis-clil默认连接 6739 端口,也可以通过-p 指定连接的端:l./redis-cli -help 显式帮助信息(四)Redis 的操作1键值操作2数据类型字符串1链表23Hash键值命令示例keys patternrandomkeyexists keytype keyexpire keypexpire keypersist key4无序集合5有序集合6Redis 数据类型案例分析:统计用户登录的次数a. 1 亿个用户,有经常登录的,也有不经常登录的b. 如何来用户的登录信息c.如何活跃用户:比如:一周内,登录 3 次的l 解决方案一:采用

19、关系型数据库l 解决方案二:采用Redis登录信息可以使用 Redis 的 setbit,登录与否:有 1 和 0 就可以表示3Java 客户端1基本操作2连接池(五)Redis 的事务和消息机制1Redis 的事务Redis 对事务的支持目前还比较简单。redis 只能保证一个 client 发起的事务中令可以连续的执行,而中间其他client令。由于 redis 是单线程来处理所有client 的请求的所以做到这点是很容易的。一般情况下 redis 在接受到一个 client 发来令后会立即处理并 返回处理结果,但是当一个 client 在会进入一个事务上下文,该连接后续接中发出 mult

20、i 命令有,这个连接令并不是立即执行,而是先放到一个队列中。当从此连接受到 exec 命令后,redis 会顺序的执行队列中的所有命令。并将所有命令的运行结果打包到一起返回给 client.然后此连接就 结束事务上下文。Oracle 数据库中的事务和 Redis 的事务对比2Redis 的事务示例:转账l从 Tom 转 100 块钱给 Mike set tom 1000set mike 1000 multidecrby tom 100incrby mike 100 exec3Redis 的锁机制:watchl举例:买票OracleRedis开启事务的方式自动开启事务multi操作DML 语句R

21、edis 命令提交事务commitexec回滚事务rollbackdiscard4Java 应用程序中的事务和锁1事务2锁5Redis 的消息机制:消息的发布与订阅,适合做聊天lpublish:发布消息n格式:publish channel 名称 “消息内容”lsubscribe: 订阅消息n格式:subscribe channel 名称lpsubscribe: 使用通配符定义消息n格式:psubscribe channel*名称l使用 Java 程序实现消息的发布与订阅,需要继承 JedisPubSub 类(六)Redis 的持久化Redis 提供了多种不同级别的持久化方式:uRDB 持久化

22、可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。uAOF (Append-only file)持久化服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在对 AOF 文件进行重写(rewrite),使得RedisAOF 文件的体积还可以同时使用超出保存数据集状态所需的实际大小。uAOF 持久化和RDB 持久化。 在这种情况AOF 文件来还原数据集, 因下, 当为 AOF整。Redis 重启时, 它会优先使用文件保存的数

23、据集通常比 RDB 文件所保存的数据集更完u你甚至可以关闭持久化功能,让数据只在服务器运行时存在。1、RDBl工作原理:每隔一定时间给内存照一个快照,将内存中的数据写入文件(rdb 文件)配置参数:redis.conf 文件llRDB 示例测试:可以使用 redis-benchmark 进行测试n./bin/redis-benchmark -n 100000表示执行 100000 个操作lRDB 的缺点:nn在两次快照之间,如果发生断电,数据会丢失举例:在生成 rdb 后, 失新值。突然断电,数据可能会丢2、AOF:通过日志的方式ll工作原理: 配置参数:操作令l什么是 AOF 的重写:rew

24、riten将内存中的 key 逆向生成命令,如同一个可以,反复操作了100 次,aof 文件会过大例如: set age 0 incr age incr age. 100 次最后 age 的值是 100100 次操作,这样会导致 AOF 文件经过重写后,直接执行: set age 100可以通过观察 aof 日志文件的大小n3、Redis 持久化注意的问题llRDB 恢复的速度快如果 RDB 和 AOF 都有,默认使用 AOF 进行恢复(七)Redis 的集群1集群的作用lll主从备份 防止主机宕机读写分离,分担 master 的任务任务分离,如从服分别分担备份工作与计算工作2Redis 集群

25、的两种部署方式3Redis 主从服务的通信原理4配置Redis 的集群(主从模式)ll主节点:关闭 rdb 和 aof 即可从节点:slaveof localhost 6379开启 rdb 和 aof5Redis 集群的高可用性llRedis 2.4+自带了一个 HA 实现 Sentinel配置文件:sentinel.confllredis-sentinel ./etc/sentinel.conf查看日志:6实现Redis 的分片llTwemproxy 是一种分片机制,由开源。Twemproxy 作为则,转发给,可接受来自多个程序的,按照路由规的各个 Redis 服务器,再原路返回。该方案很好

26、的解决了单个 Redis 实例承载能力的问题。l安装./configure -prefix=/root/training/proxy makemake installl配置文件l检查配置文件是否正确./nutcracker -t conf/nutcracker.ymll启动服务器./nutcracker -d -c conf/nutcracker.yml三、HBase:基于 HDFS 的列式数据库(一)什么是 HBase?HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的利用了“Bigtable:一个结构化数据的分布式系统”。就像 Bigtable文件系

27、统(File System)所提供的分布式数据一样,HBase 在Hadoop 之上提供了类似于 Bigtable 的能力。HBase 是 Apache 的 Hadoop 项目的子项目。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据库。另一个不同的是 HBase 基于列的而不是基于行的模式。的数据(二)HBase 的体系结构(三)HBase 的表结构(四)HBase 的安装和部署lll本地模式伪分布模式集群模式本地模式的配置伪分布模式参数文件配置参数参考值.bash_profileHBASE_HOME/root/training/hbase-0.96.2-hadoop2hbas

28、e-env.shJAVA_HOME/root/training/jdk1.7.0_75HBASE_MANAGES_ZKtruehbase-site.xmlhbase.rootdirhdfs:/192.168.137.111:9000/hbasehbase.cluster.distributedTruehbase.zookeeper.quorum192.168.137.111dfs.replication1regionservers192.168.137.111参数文件配置参数参考值.bash_profileHBASE_HOME/root/training/hbase-0.96.2-hadoop

29、2hbase-env.shJAVA_HOME/root/training/jdk1.7.0_75hbase-site.xmlhbase.rootdirfile:/root/training/hbase-0.96.2-hadoop2/data集群模式注意每台的时间,可以使用 date -s 11/22/2016 设置时间HBase Web Console(60010)参数文件配置参数参考值.bash_profileHBASE_HOME/root/training/hbase-0.96.2-hadoop2hbase-env.shJAVA_HOME/root/training/jdk1.7.0_75HBASE_MANAGES_ZKtruehbase-site.xm lhbase.rootdirhdfs:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论