數(shù)據(jù)庫(kù)系列課程課件_第1頁
數(shù)據(jù)庫(kù)系列課程課件_第2頁
數(shù)據(jù)庫(kù)系列課程課件_第3頁
數(shù)據(jù)庫(kù)系列課程課件_第4頁
數(shù)據(jù)庫(kù)系列課程課件_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、NoSQL 數(shù)據(jù)庫(kù)系列課程一、MemCached 緩存技術(shù)(一)什么是 MemCachedMemcache 是一套開源,高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng),目前被許多使用以提升的速度,尤其對(duì)于一些大型的、需要頻繁數(shù)據(jù)庫(kù)的速度提升效果十分顯著。Memcache 將所有數(shù)據(jù)在內(nèi)存中,并在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的 Hash 表,它能任意類型的數(shù)據(jù),包括圖像、文件以及數(shù)據(jù)庫(kù)檢索的結(jié)果等。簡(jiǎn)單的說就是將數(shù)據(jù)調(diào)用到內(nèi)存中,然后從內(nèi)存中,從而大大提高速度。(二)為什么要用 MemCached?請(qǐng)大家先看一個(gè)問題,這個(gè)問題在大并發(fā),高負(fù)載的大家思考如何讓速度更快。中必須考慮!解決方案:lll傳統(tǒng)的 RDBMS

2、頁面靜態(tài)化MemCached 緩存技術(shù)基于 Memcached 的架構(gòu)(三)MemCached 的基本原理和體系結(jié)構(gòu)簡(jiǎn)單的說: memcached 就是在內(nèi)存中維護(hù)一張巨大的hash 表,通過自己的一套路由算法來維護(hù)數(shù)據(jù)的操作。(四)MemCached 數(shù)據(jù)的過期1、數(shù)據(jù)方式:Slab Allocation 即:按組分配內(nèi)存(1) 每次先分配一個(gè) Slab,相當(dāng)于一個(gè) page,大小 1M。(2) 然后在 1M 的空間里根據(jù)內(nèi)容再劃分相同大小的 chunk(3) 優(yōu)點(diǎn)是:最大限度的利用內(nèi)存,避免產(chǎn)生內(nèi)存碎片(4) 缺點(diǎn)是:會(huì)造成內(nèi)存的浪費(fèi)2、數(shù)據(jù)過期方式(1)懶過期方式(Lazy Expira

3、tion):memcached 內(nèi)部不監(jiān)視數(shù)據(jù)是否過期,而是 get 時(shí)查看間,檢查是否已經(jīng)過期,這叫惰性過期。時(shí)(2)LRU 算法:采用最近最少使用算法淘汰內(nèi)存中的數(shù)據(jù)(五)MemCached 安裝與部署實(shí)驗(yàn)環(huán)境: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*、確認(rèn)是否已經(jīng)安裝?并刪除舊版本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、啟動(dòng) MemCached:memcached -h 幫助信息啟動(dòng)命令:./memcached -u root -d -m 128-p:指定端口 默認(rèn):11211-u:指定用戶名(root 用戶必須使用該選項(xiàng))-m:分配的內(nèi)存,默認(rèn):64M-c:最大并發(fā)連接,默認(rèn) 1024-d:?jiǎn)?dòng)一個(gè)守護(hù)進(jìn)程(六)操作 MemCached1、Telnet 方式(命令行方式)統(tǒng)計(jì)信息令:uuusta

7、tsstats items stats slabs2、Java 客戶端方式spymemcached-2.10.3.jarl數(shù)據(jù)l數(shù)據(jù)l基于客戶端的分布式數(shù)據(jù)(七)MemCached 的路由算法1、求余數(shù) hash 算法用 key 做 hash 運(yùn)算得到一個(gè)整數(shù),根據(jù)余數(shù)路由。例如:服務(wù)器端有三臺(tái) MemCached 服務(wù)器根據(jù) key,做 hash 運(yùn)算7%3=1,那么就路由到第 2 臺(tái)服務(wù)器。6%3=0,那么路由到第 1 臺(tái)服務(wù)器5%3=2,那么路由到第 3 臺(tái)服務(wù)器優(yōu)點(diǎn):數(shù)據(jù)分布均衡在多臺(tái)服務(wù)器中,適合大多數(shù)據(jù)需求。 缺點(diǎn):如果需要擴(kuò)容或者有宕機(jī)的情況,會(huì)造成數(shù)據(jù)的丟失。2、一致性 has

8、h 算法l 基本原理:l一致性hash 算法下擴(kuò)容l一致性hash 算法下 DOWN 機(jī)(八)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出現(xiàn)以下錯(cuò)誤:解決辦法,編輯 memcached.c 文件如下:修改成如下形式:l啟動(dòng)第一臺(tái) MemCached,使用-x 指定對(duì)端服務(wù)器的地址./memcached -d -u root -m 128 -x 192.168.137.12l啟動(dòng)第二臺(tái) MemCached,使用-x 指定對(duì)端服務(wù)器的地址./memcached -d -u root -m 128 -x 192.168.137.11出現(xiàn)以下錯(cuò)誤:解決辦法:l查找 libevent-2.0.so.5 whereis libevent-2.0.so.5使用 ldd 命令查看 memcached 命令,發(fā)現(xiàn)找不到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 是一個(gè)交換機(jī)制的軟件。Keepalived 的作用是檢測(cè)服務(wù)器的狀態(tài),如果有一臺(tái) web 服務(wù)器死機(jī),或工作出現(xiàn)故障,Keepalived 將檢測(cè)到,并將有故障的服務(wù)器從系統(tǒng)中剔除,同時(shí)使用其他服務(wù)器代替該服務(wù)器的工作,當(dāng)服務(wù)器工作正常后 Keepalived 自動(dòng)將服務(wù)器加入到服務(wù)器群中,這些工作全部自動(dòng)完成,不需要人工只是修復(fù)故障的服務(wù)器。,需要

11、人工做的利用 Keepalived 實(shí)現(xiàn) MemCached 的主主高可用架構(gòu):llKeepalived 在 memcached 主服務(wù)器產(chǎn)生一個(gè)虛擬 IP(VIP) Keepalived 可以通過不斷的檢測(cè) memcached 主服務(wù)器的 11211 端口是否正常工作,如果發(fā)現(xiàn) memcached Down 機(jī),虛擬 IP 就從主服務(wù)器移到從服務(wù)器l配置 Keepalived(每臺(tái)都要配置):lrpm -ivh keepalived-1.2.13-4.el6.i686.rpml配置:主從節(jié)點(diǎn)都要配置,配置文件:n/etc/keepalived/keepalived.conf(主節(jié)點(diǎn)配置信息)

12、! Configuration File for keepalived(從節(jié)點(diǎn)配置信息)! 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驗(yàn)證 Keepalived:使用命令 ip ad sh 查看虛擬 ip 地址二、Redis 高性能內(nèi)存數(shù)據(jù)庫(kù)(一)什么是 Redis?Redis 是一個(gè)key-value系統(tǒng)。和Memcached 類似,它支持的value類型相對(duì),包括 string(字符串)、list(鏈表)、set(集合)、zset(sorted set -有序集合)和 hash(類型)。與 Memcached 一樣,為了保證效率,數(shù)據(jù)都是緩存在

15、內(nèi)存中。區(qū)別的是 redis 會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的同步。文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了 master-slave(主從)Redis 是一個(gè)高性能的 key-value 數(shù)據(jù)庫(kù)。Redis 的出現(xiàn),很大程度補(bǔ)償了memcached 這類 key/value的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了 Java,C/C+,C#,PHP,JavaScript,Perl,Object-C, Python,Ruby,Erlang 等客戶端,使用很方便。1Redis 支持主從同步。數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步,從服務(wù)器可以是關(guān)聯(lián)其他從服務(wù)器的

16、主服務(wù)器。(二)Redis 與 Memcached 的區(qū)別u 持久化:lRedis 可以用來做緩存,也可以做久化方式Memcached 只能緩存數(shù)據(jù);支持 ADF 和 RDB 兩種持lu 數(shù)據(jù)結(jié)構(gòu):lRedis 有豐富的數(shù)據(jù)類型:字符串、鏈表,Hash、集合,有序集合Memcached 一般就是字符串和對(duì)象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性能測(cè)試工具redis-check-aof檢查 AOF 日志redis-check-dump 檢查 RDB 日志啟動(dòng)命令行客戶端redis-cliredis-sentinel redis-server啟動(dòng) Redis 服務(wù)啟動(dòng) Redis:ll./redis-server ./etc/redis6379.conf./redis-server ./etc/redis6380.conf這樣就在 6379 和 6380 端口上,各自啟動(dòng)了一個(gè) Redis 實(shí)例;也可以通過 ps

18、 命令查看:?jiǎn)?dòng) Redis 的客戶端:redis-clil默認(rèn)連接 6739 端口,也可以通過-p 指定連接的端:l./redis-cli -help 顯式幫助信息(四)Redis 的操作1鍵值操作2數(shù)據(jù)類型字符串1鏈表23Hash鍵值命令示例keys patternrandomkeyexists keytype keyexpire keypexpire keypersist key4無序集合5有序集合6Redis 數(shù)據(jù)類型案例分析:統(tǒng)計(jì)用戶登錄的次數(shù)a. 1 億個(gè)用戶,有經(jīng)常登錄的,也有不經(jīng)常登錄的b. 如何來用戶的登錄信息c.如何活躍用戶:比如:一周內(nèi),登錄 3 次的l 解決方案一:采用

19、關(guān)系型數(shù)據(jù)庫(kù)l 解決方案二:采用Redis登錄信息可以使用 Redis 的 setbit,登錄與否:有 1 和 0 就可以表示3Java 客戶端1基本操作2連接池(五)Redis 的事務(wù)和消息機(jī)制1Redis 的事務(wù)Redis 對(duì)事務(wù)的支持目前還比較簡(jiǎn)單。redis 只能保證一個(gè) client 發(fā)起的事務(wù)中令可以連續(xù)的執(zhí)行,而中間其他client令。由于 redis 是單線程來處理所有client 的請(qǐng)求的所以做到這點(diǎn)是很容易的。一般情況下 redis 在接受到一個(gè) client 發(fā)來令后會(huì)立即處理并 返回處理結(jié)果,但是當(dāng)一個(gè) client 在會(huì)進(jìn)入一個(gè)事務(wù)上下文,該連接后續(xù)接中發(fā)出 mult

20、i 命令有,這個(gè)連接令并不是立即執(zhí)行,而是先放到一個(gè)隊(duì)列中。當(dāng)從此連接受到 exec 命令后,redis 會(huì)順序的執(zhí)行隊(duì)列中的所有命令。并將所有命令的運(yùn)行結(jié)果打包到一起返回給 client.然后此連接就 結(jié)束事務(wù)上下文。Oracle 數(shù)據(jù)庫(kù)中的事務(wù)和 Redis 的事務(wù)對(duì)比2Redis 的事務(wù)示例:轉(zhuǎn)賬l從 Tom 轉(zhuǎn) 100 塊錢給 Mike set tom 1000set mike 1000 multidecrby tom 100incrby mike 100 exec3Redis 的鎖機(jī)制:watchl舉例:買票O(jiān)racleRedis開啟事務(wù)的方式自動(dòng)開啟事務(wù)multi操作DML 語句R

21、edis 命令提交事務(wù)commitexec回滾事務(wù)rollbackdiscard4Java 應(yīng)用程序中的事務(wù)和鎖1事務(wù)2鎖5Redis 的消息機(jī)制:消息的發(fā)布與訂閱,適合做聊天lpublish:發(fā)布消息n格式:publish channel 名稱 “消息內(nèi)容”lsubscribe: 訂閱消息n格式:subscribe channel 名稱lpsubscribe: 使用通配符定義消息n格式:psubscribe channel*名稱l使用 Java 程序?qū)崿F(xiàn)消息的發(fā)布與訂閱,需要繼承 JedisPubSub 類(六)Redis 的持久化Redis 提供了多種不同級(jí)別的持久化方式:uRDB 持久化

22、可以在指定的時(shí)間間隔內(nèi)生成數(shù)據(jù)集的時(shí)間點(diǎn)快照(point-in-time snapshot)。uAOF (Append-only file)持久化服務(wù)器執(zhí)行的所有寫操作命令,并在服務(wù)器啟動(dòng)時(shí),通過重新執(zhí)行這些命令來還原數(shù)據(jù)集。 AOF 文件中令全部以 Redis 協(xié)議的格式來保存,新命令會(huì)被追加到文件的末尾。 Redis 還可以在對(duì) AOF 文件進(jìn)行重寫(rewrite),使得RedisAOF 文件的體積還可以同時(shí)使用超出保存數(shù)據(jù)集狀態(tài)所需的實(shí)際大小。uAOF 持久化和RDB 持久化。 在這種情況AOF 文件來還原數(shù)據(jù)集, 因下, 當(dāng)為 AOF整。Redis 重啟時(shí), 它會(huì)優(yōu)先使用文件保存的數(shù)

23、據(jù)集通常比 RDB 文件所保存的數(shù)據(jù)集更完u你甚至可以關(guān)閉持久化功能,讓數(shù)據(jù)只在服務(wù)器運(yùn)行時(shí)存在。1、RDBl工作原理:每隔一定時(shí)間給內(nèi)存照一個(gè)快照,將內(nèi)存中的數(shù)據(jù)寫入文件(rdb 文件)配置參數(shù):redis.conf 文件llRDB 示例測(cè)試:可以使用 redis-benchmark 進(jìn)行測(cè)試n./bin/redis-benchmark -n 100000表示執(zhí)行 100000 個(gè)操作lRDB 的缺點(diǎn):nn在兩次快照之間,如果發(fā)生斷電,數(shù)據(jù)會(huì)丟失舉例:在生成 rdb 后, 失新值。突然斷電,數(shù)據(jù)可能會(huì)丟2、AOF:通過日志的方式ll工作原理: 配置參數(shù):操作令l什么是 AOF 的重寫:rew

24、riten將內(nèi)存中的 key 逆向生成命令,如同一個(gè)可以,反復(fù)操作了100 次,aof 文件會(huì)過大例如: set age 0 incr age incr age. 100 次最后 age 的值是 100100 次操作,這樣會(huì)導(dǎo)致 AOF 文件經(jīng)過重寫后,直接執(zhí)行: set age 100可以通過觀察 aof 日志文件的大小n3、Redis 持久化注意的問題llRDB 恢復(fù)的速度快如果 RDB 和 AOF 都有,默認(rèn)使用 AOF 進(jìn)行恢復(fù)(七)Redis 的集群1集群的作用lll主從備份 防止主機(jī)宕機(jī)讀寫分離,分擔(dān) master 的任務(wù)任務(wù)分離,如從服分別分擔(dān)備份工作與計(jì)算工作2Redis 集群

25、的兩種部署方式3Redis 主從服務(wù)的通信原理4配置Redis 的集群(主從模式)ll主節(jié)點(diǎn):關(guān)閉 rdb 和 aof 即可從節(jié)點(diǎn):slaveof localhost 6379開啟 rdb 和 aof5Redis 集群的高可用性llRedis 2.4+自帶了一個(gè) HA 實(shí)現(xiàn) Sentinel配置文件:sentinel.confllredis-sentinel ./etc/sentinel.conf查看日志:6實(shí)現(xiàn)Redis 的分片llTwemproxy 是一種分片機(jī)制,由開源。Twemproxy 作為則,轉(zhuǎn)發(fā)給,可接受來自多個(gè)程序的,按照路由規(guī)的各個(gè) Redis 服務(wù)器,再原路返回。該方案很好

26、的解決了單個(gè) Redis 實(shí)例承載能力的問題。l安裝./configure -prefix=/root/training/proxy makemake installl配置文件l檢查配置文件是否正確./nutcracker -t conf/nutcracker.ymll啟動(dòng)服務(wù)器./nutcracker -d -c conf/nutcracker.yml三、HBase:基于 HDFS 的列式數(shù)據(jù)庫(kù)(一)什么是 HBase?HBase 是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù),該技術(shù)來源于 Fay Chang 所撰寫的利用了“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式系統(tǒng)”。就像 Bigtable文件系

27、統(tǒng)(File System)所提供的分布式數(shù)據(jù)一樣,HBase 在Hadoop 之上提供了類似于 Bigtable 的能力。HBase 是 Apache 的 Hadoop 項(xiàng)目的子項(xiàng)目。HBase 不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)庫(kù)。另一個(gè)不同的是 HBase 基于列的而不是基于行的模式。的數(shù)據(jù)(二)HBase 的體系結(jié)構(gòu)(三)HBase 的表結(jié)構(gòu)(四)HBase 的安裝和部署lll本地模式偽分布模式集群模式本地模式的配置偽分布模式參數(shù)文件配置參數(shù)參考值.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參數(shù)文件配置參數(shù)參考值.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集群模式注意每臺(tái)的時(shí)間,可以使用 date -s 11/22/2016 設(shè)置時(shí)間HBase Web Console(60010)參數(shù)文件配置參數(shù)參考值.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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論