宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見問題
產(chǎn)品動態(tài)
精選推薦

Redis數(shù)據(jù)庫:關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫

管理 管理 編輯 刪除

相比于其他的內(nèi)存/緩存數(shù)據(jù)庫,redis可以方便的實現(xiàn)持久化的功能(保存至磁盤中)

一、關(guān)系數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫

1.1 關(guān)系型數(shù)據(jù)庫

       一個結(jié)構(gòu)化的數(shù)據(jù)庫,創(chuàng)建在關(guān)系模型基礎上一般面向于記錄

       SQL語句 (標準數(shù)據(jù)查詢語言) 就是一種基于關(guān)系型數(shù)據(jù)庫的語言,用于執(zhí)行對關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)的檢索和操作。

       主要有Oracle、MySQL、SQLServer、Microsoft Access、DB2等非關(guān)系型數(shù)據(jù)庫

1.2 非關(guān)系型數(shù)據(jù)庫

       除了主流的關(guān)系型數(shù)據(jù)庫外的數(shù)據(jù)庫,都認為是非關(guān)系型

       包括Redis、MongBD、Hbase、CouhDB等

1.3 關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的區(qū)別

1.3.1 數(shù)據(jù)存儲方式不同

       關(guān)系型數(shù)據(jù)天然就是表格式的,因此存儲在數(shù)據(jù)表的行和列中。數(shù)據(jù)表可以彼此關(guān)聯(lián)協(xié)作存儲,也很容易提取數(shù)據(jù)。

       非關(guān)系型數(shù)據(jù)不適合存儲在數(shù)據(jù)表的行和列中,而是大塊組合在一起。非關(guān)系型數(shù)據(jù)通常存儲在數(shù)據(jù)集中,就像文檔、鍵值對或者圖結(jié)構(gòu)。你的數(shù)據(jù)及其特性是選擇數(shù)據(jù)存儲和提取方式的首要影響因素。

關(guān)系型 依賴于關(guān)系模型E-R圖,同時以表格形式的方式存儲數(shù)據(jù)

非關(guān)系型 除了以表格形式存儲之外,通常會以大塊的形式組合在一起進行存儲數(shù)據(jù)

1.3.2 擴展方式不同

       SQL數(shù)據(jù)庫是縱向擴展,也就是說提高處理能力(增加更多的CPU),使用速度更快速的計算機,這樣處理相同的數(shù)據(jù)集就更快了。因為數(shù)據(jù)存儲在關(guān)系表中,操作的性能瓶頸可能涉及很多個表,這都需要通過提高計算機性能來克服。雖然SQL數(shù)據(jù)庫有很大擴展空間,但最終肯定會達到縱向擴展的上限。適用于小規(guī)模的數(shù)據(jù)庫或需要快速擴展的情況。

       而NoSQL數(shù)據(jù)庫是橫向擴展的。因為非關(guān)系型數(shù)據(jù)存儲天然就是分布式的,NoSQL數(shù)據(jù)庫的擴展可以通過給資源池添加更多普通的數(shù)據(jù)庫服務器 (節(jié)點) 來分擔負載。將數(shù)據(jù)分片存儲在多臺服務器上,每臺服務器負責處理部分數(shù)據(jù)。通過分區(qū)、分片技術(shù)來實現(xiàn)數(shù)據(jù)的水平劃分和負載均衡。適用于大規(guī)模數(shù)據(jù)和高并發(fā)的場景。

關(guān)系 縱向 天然表格式

非關(guān) 橫向 天然分布式

1.3.2.1橫向擴展和復制的常用用途有:

1、讀操作的負載均衡。

2、寫操作的負載均衡。按信息角色分發(fā),很少更新的表放在一個服務器,頻繁更新的表分割到多個服務器上面;按地理區(qū)域分割,流量直接定向到最近的服務器。

3、熱備份進行災難避免。配置專門的salve作為熱備份。

4、遠程復制進行災難避免。

5、制作備份。在完全不影響master的前提下執(zhí)行備份。

6、生成報表。創(chuàng)建數(shù)據(jù)報表會降低服務器性能,影響較大,后臺作業(yè)可以專門salve執(zhí)行。

橫向擴展只能擴展讀操作,不能擴展寫操作。分片(sharding)的技術(shù)擴展寫操作。

同步復制要求master必須等待所有slave的寫操作完成。需要額外的同步機制來保證一致性,一般通過兩階段提交(two-phase commit)協(xié)議來實現(xiàn)。協(xié)議之所以慢,是因為需要4次消息傳遞,包括事務消息和準備請求的消息,master的提交會被阻塞直到所有slave確認事務。異步復制只需要一條事務消息即可。

異步復制其實是犧牲一致性為代價換取性能

有兩個問題:1、master出現(xiàn)故障,事務就會消失;2、slave執(zhí)行的查詢可能返回舊數(shù)據(jù)。

簡單拓撲和樹形拓撲用于橫向擴展,雙主拓撲用于故障轉(zhuǎn)移,環(huán)形拓撲和雙主結(jié)構(gòu)允許站點本地允許時還能將變更復制到其他站點。

級聯(lián)復制,添加額外的slave作為中繼salve,通過管理一群slave來減輕master上的復制負載。普通salve需要將變更應用到數(shù)據(jù)庫,但不寫入二進制日志。relay需要寫入二進制日志,但不應用變更。realy使用blackhole引擎,relay會產(chǎn)生額外延遲。


過濾復制事件

1、master上過濾事件,master過濾器,控制哪些被寫入二進制日志。無法使用PITR準確恢復數(shù)據(jù)庫。binlog-do-db、binlog-ignore-db,多個數(shù)據(jù)庫需要重復使用選項。

2、salve上過濾事件,slave過濾器,控制哪些在slave上執(zhí)行。所有變更通過網(wǎng)絡傳送,浪費帶寬??梢赃^濾數(shù)據(jù)庫,還可以過濾單個表以及使用通配符過濾一組表。replicate-do-db、replicate-ignore-db、replicate-do-table=dbname.tablename、replicate-ignore-table=dbname.tablename、replicate-wild-do-table、replicate-wild-ignore-table。

擔心網(wǎng)絡流量,可以在master保存完整二進制日志,relay過濾,減少流量。

數(shù)據(jù)的一致性管理

mysql5.6引入了全局事務標識符(GTID),master上提交的事務做個標記,等slave獲取到這個事務時才在slave上執(zhí)行查詢。

級聯(lián)部署一致性,,第一是利用全局事務標識符來提升slave,并反復輪詢slave有沒有處理這個事務;第二是利用函數(shù)master-pos-wait函數(shù)將maeter到salve路徑上的relay都連接起來,保證所有變化都能傳遞到salve。

1.3.3 對事務的支持性不同

       如果數(shù)據(jù)操作需要高事務性或者復雜數(shù)據(jù)查詢需要控制執(zhí)行計劃,那么傳統(tǒng)的SQL數(shù)據(jù)庫從性能和穩(wěn)定性方面考慮是最佳選擇。SQL數(shù)據(jù)庫支持對事務(ACID)原子性細粒度控制,并且易于回滾事務。

       雖然NoSQL數(shù)據(jù)庫也可以使用事務操作,但穩(wěn)定性方面沒法和關(guān)系型數(shù)據(jù)庫比較,所以它們真正閃亮的價值是在操作的擴展性和大數(shù)據(jù)量處理方面。

① 關(guān)系型:特別適合高事務性要求和需要控制執(zhí)行計劃的任務

② 非關(guān)系:此處會稍顯弱勢,其價值點在于高擴展性和大數(shù)據(jù)量處理方面

1.3.4 非關(guān)系型數(shù)據(jù)庫產(chǎn)生背景

可用于應對Web2.0純動態(tài)網(wǎng)站類型的三高問題。

(1) High performance-------對數(shù)據(jù)庫高并發(fā)讀寫需求

(2) HugeStorage--------------對海量數(shù)據(jù)高效存儲與訪問需求

(3) High Scalability && High Availability------- 對數(shù)據(jù)庫高可擴展性與高可用性需求

關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫都有各自的特點與應用場景,兩者的緊密結(jié)合將會給Web2.0的數(shù)據(jù)庫發(fā)展帶來新的思路。

讓關(guān)系數(shù)據(jù)庫關(guān)注在關(guān)系上,非關(guān)系型數(shù)據(jù)庫關(guān)注在存儲上。

例如,在讀寫分離的MySQL數(shù)據(jù)庫環(huán)境中,可以把經(jīng)常訪問的數(shù)據(jù)存儲在非關(guān)系型數(shù)據(jù)庫中,提升訪問速度。

MySQL高熱數(shù)據(jù)  ----》  redis

web  ----》  redis ----》  MySQL

CPU  ----》  內(nèi)存/緩存  ----》  磁盤

總結(jié)

關(guān)系型數(shù)據(jù)庫:

實例–>數(shù)據(jù)庫–>表(table)–>記錄行(row)、數(shù)據(jù)字段(column)——》存儲數(shù)據(jù)

非關(guān)系型數(shù)據(jù)庫:

實例–>數(shù)據(jù)庫–>集合(collection) -->鍵值對(key-value)

workdir=/usr/local/mysql

非關(guān)系型數(shù)據(jù)庫不需要手動建數(shù)據(jù)庫和集合(表)。

二、Redis簡介

       Redis是一個開源的、使用C語言編寫的NoSQL 數(shù)據(jù)庫?!痉顷P(guān)系型數(shù)據(jù)庫】

       Redis基于內(nèi)存運行并支持持久化(支持存儲在磁盤),采用**key-value (鍵值對)**的存儲形式,是目前分布式架構(gòu)中不可或缺的一環(huán)。

2.1 Redis服務器程序的單線程模型

Redis服務器程序是單進程模型

       Redis服務在一臺服務器上可以同時啟動多個Redis進程,Redis的實際處理速度則是完全依靠于主進程的執(zhí)行效率。若在服務器上只運行一個Redis進程,當多個客戶端同時訪問時,服務器的處理能力是會有一定程度的下降;若在同一臺服務器上開啟多個Redis進程,Redis在提高并發(fā)處理能力的同時會給服務器的CPU造成很大壓力。即: 在實際生產(chǎn)環(huán)境中,需要根據(jù)實際的需求來決定開啟多少個Redis進程。

建議可以開2個進程

1、備份

2、抗高并發(fā)的同時盡量不給CPU造成太大的壓力

若對高并發(fā)要求更高一些,可能會考慮在同一臺服務器上開啟多個進程。若CPU資源比較緊張,采用單進程即可。

單進程快速的原因:

PS : 補充加深一點

使用 epoll(默認) + I/O多路復用機制

首先,Redis 是跑在單進程中的,所有的操作都是按照順序線性執(zhí)行的,但是由于讀寫操作等待用戶輸入或輸出都是阻塞的,所以 I/O 操作在一般情況下往往不能直接返回,這會導致某一文件的 I/O 阻塞導致整個進程無法對其它客戶提供服務,而 I/O 多路復用就是為了解決這個問題而出現(xiàn)的。

epoll 機制優(yōu)勢:

1. epoll 沒有最大并發(fā)連接的限制,上限是最大可以打開文件的數(shù)目,這個數(shù)字一般遠大于 2048, 一般來說這個數(shù)目和系統(tǒng)內(nèi)存關(guān)系很大  ,具體數(shù)目可以 cat /proc/sys/fs/file-max 察看。

2. 效率提升, Epoll 最大的優(yōu)點就在于它只管你“活躍”的連接 ,而跟連接總數(shù)無關(guān),因此在實際的網(wǎng)絡環(huán)境中, Epoll 的效率就會遠遠高于 select 和 poll 。

3. 內(nèi)存拷貝, Epoll 在這點上使用了“共享內(nèi)存 ”,這個內(nèi)存拷貝也省略了

I/O多路復用就通過一種機制,可以監(jiān)視多個描述符,一旦某個描述符就緒,能夠通知程序進行相應的操作。

2.2 I/O復用技術(shù)介紹

一個線程同時追蹤、管理多個連接(原本默認情況下是一個線程對應一個連接)

回調(diào): 預先定義具體的執(zhí)行過程(定義一個方法) ,等待調(diào)用,在一個線程給執(zhí)行時,可以根據(jù)“觸發(fā)器”“鉤子” 完成回調(diào),回調(diào)的目的是提高處理性能 和節(jié)省資源

2.3 Redis 具有以下幾個優(yōu)點(redis 特性(與其他nosql對比))

(1)、具有極高的數(shù)據(jù)讀寫速度:數(shù)據(jù)讀取的速度最高可達到 110000 次/s,數(shù)據(jù)寫入速度最高可達到 81000 次/s。

(2)、支持豐富的數(shù)據(jù)類型:支持key-value、 Strings、Lists、 Hashes(散列值)、 Sets 及Ordered Sets 等數(shù)據(jù)類型操作。

ps:

string 字符串(可以為整形、浮點和字符型,統(tǒng)稱為元素)

list 列表:(實現(xiàn)隊列,元素不唯一,先入先出原則)

set  集合:(各不相同的元素)

hash  hash散列值:(hash的key必須是唯一的)

set /ordered sets 集合/有序集合

(3)支持數(shù)據(jù)的持久化:可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時候可以再次加載進行使用。

(4)原子性:Redis所有操作都是原子性的。

(5)支持數(shù)據(jù)備份:即master-salve 模式的數(shù)據(jù)備份。

豐富的特性 – Redis還支持 publish(消息發(fā)布)/subscribe(訂閱), 通知, 設置key有效期等等特性。

Redis作為基于內(nèi)存運行的數(shù)據(jù)庫,緩存是其最常應用的場景之一。除此之外,Redis常見應用場景:包括獲取最新N個數(shù)據(jù)的操作、排行榜類應用、計數(shù)器應用、存儲關(guān)系、實時分析系統(tǒng)、日志記錄。

支持key-value、 Strings、Lists、 Hashes(散列值)、 Sets 及Ordered Sets 等數(shù)據(jù)類型操作。

三、安裝Redis和Redis命令工具

3.1 安裝Redis

systemctl stop firewalld

setenforce 0

yum install -y gcc gcc-c++ make

tar zxvf redis-5.0.7.tar.gz -C /opt/

cd /opt/redis-5.0.7/

make && make PREFIX=/usr/local/redis install

#由于Redis源碼包中直接提供了Makefile 文件,所以在解壓完軟件包后,不用先執(zhí)行./configure 進行配置,可直接執(zhí)行make與make install命令進行安裝

請登錄后查看

小碼二開 最后編輯于2024-08-03 09:52:54

快捷回復
回復
回復
回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
排序 默認正序 回復倒序 點贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無簡介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復' : '回復'}}
刪除
回復
回復

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復' : '回復'}}
刪除
回復
回復
查看更多
打賞
已打賞¥{{reward_price}}
1420
{{like_count}}
{{collect_count}}
添加回復 ({{post_count}})

相關(guān)推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見問題 產(chǎn)品動態(tài) 精選推薦 首頁頭條 首頁動態(tài) 首頁推薦
取 消 確 定
回復
回復
問題:
問題自動獲取的帖子內(nèi)容,不準確時需要手動修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認打賞

微信登錄/注冊

切換手機號登錄

{{ bind_phone ? '綁定手機' : '手機登錄'}}

{{codeText}}
切換微信登錄/注冊
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服