久久久久国产精品www,综合久久无码,亚洲精品99久久久久中文字幕,无码伊人网Apdm

系統(tǒng)架構(gòu)從RDBMS到NoSQL的演變
瀏覽:383 時間:2021-9-18

在互聯(lián)網(wǎng)時代背景下的大好機會,為什么要使用nosql

1單機MySQL的極客

在20世紀90年代,一個網(wǎng)站一般不是很受歡迎,很容易應(yīng)對單個數(shù)據(jù)庫。

那時,更多的是靜態(tài)網(wǎng)頁,并且沒有很多網(wǎng)站具有動態(tài)交互類型。

在上述架構(gòu)下,讓我們看一下數(shù)據(jù)存儲的瓶頸?

1.數(shù)據(jù)卷的總大小不適合機器

2.數(shù)據(jù)索引(B + Tree)不能存儲在機器中

3.訪問(讀寫混合)一個實例是不能容忍的

如果出現(xiàn)上述1或3個瓶頸,架構(gòu)就會開始發(fā)展到下一個階段:

2 Memcached(緩存)+ MySQL +垂直拆分

隨后,隨著訪問次數(shù)的增加,幾乎所有使用MySQL架構(gòu)的網(wǎng)站都開始在數(shù)據(jù)庫上出現(xiàn)性能問題。 Web應(yīng)用程序不再僅僅關(guān)注功能,還關(guān)注性能。程序員已經(jīng)開始使用大量的緩存技術(shù)來緩解數(shù)據(jù)庫的壓力并優(yōu)化數(shù)據(jù)庫的結(jié)構(gòu)和索引。通過文件緩存來緩解數(shù)據(jù)庫的壓力很受歡迎,但是當訪問次數(shù)持續(xù)增加時,無法通過文件緩存共享多個Web機器,并且大量小文件緩存也會帶來更高的IO壓力。在這個時候,Memcached自然成為一種非常時尚的科技產(chǎn)品。

作為單獨的分布式緩存服務(wù)器,Memcached為多個Web服務(wù)器提供共享的高性能緩存服務(wù)。在Memcached服務(wù)器上,它基于哈希算法開發(fā)了多個Memcached緩存服務(wù)的擴展。一致的哈希解決了增加或減少緩存緩存服務(wù)器的缺點導(dǎo)致重新哈希引起的大量緩存失效

限制:Memcached只能減輕數(shù)據(jù)庫的閱讀壓力。無法緩解大量寫入的應(yīng)用場景。

3 Mysql主從分離(

由于數(shù)據(jù)庫上的寫壓力增加,Memcached只能緩解數(shù)據(jù)庫的讀取壓力。讀寫都集中在一個數(shù)據(jù)庫上,使數(shù)據(jù)庫不堪重負。大多數(shù)網(wǎng)站使用主從復(fù)制技術(shù)來實現(xiàn)讀寫分離,以提高讀寫性能和讀取庫可擴展性。 Mysql的主從模式成為該站點的標準。

4子數(shù)據(jù)庫子庫+橫向拆分+ mysql集群

在Memcached的緩存中,MySQL的主從復(fù)制,讀寫分離,當MySQL主庫的寫壓力開始出現(xiàn)瓶頸,并且數(shù)據(jù)量繼續(xù)飆升,因為MyISAM使用表鎖,在高并發(fā)下會有嚴重的鎖定問題,大量高并發(fā)MySQL應(yīng)用程序開始使用InnoDB引擎而不是MyISAM。

PS:MyISAM引擎使用表鎖,InnoDB引擎使用行鎖

同時,使用子表來緩解寫壓力和數(shù)據(jù)增長的擴展問題已變得很流行。此時,子數(shù)據(jù)庫成為一項熱門技術(shù),熱門的訪談問題也是業(yè)界討論的熱門技術(shù)問題。此時,MySQL引入了一個不夠穩(wěn)定的表分區(qū),這也為具有一般技術(shù)實力的公司帶來了希望。雖然MySQL推出了MySQL Cluster集群,但其性能并不能滿足互聯(lián)網(wǎng)的要求,但它為高可靠性提供了非常大的保證。

子庫:將與業(yè)務(wù)相關(guān)的數(shù)據(jù)表放在同一個庫中。同時,您還可以根據(jù)冷熱數(shù)據(jù)和相關(guān)性劃分庫。

當同一表中的數(shù)據(jù)量很大時,還需要子段表。例如,記錄ID1-100000進入1號庫,100001-200000進入2號庫。 。 。

5 MySQL可擴展性瓶頸

MySQL數(shù)據(jù)庫通常還存儲大型文本字段,從而產(chǎn)生非常大的數(shù)據(jù)庫表。進行數(shù)據(jù)庫恢復(fù)時,速度很慢,快速恢復(fù)數(shù)據(jù)庫并不容易。例如,1000萬個4KB文本接近40GB。如果你可以從MySQL保存這些數(shù)據(jù),那么MySQL將變得非常小。關(guān)系數(shù)據(jù)庫功能強大,但它們不能很好地處理所有應(yīng)用程序場景。 MySQL的可擴展性差(需要復(fù)雜的技術(shù)實現(xiàn)),大數(shù)據(jù)下的IO壓力,表結(jié)構(gòu)變化都很困難,是目前開發(fā)人員使用MySQL所面臨的問題。

還有視頻,大圖片等,傳統(tǒng)的關(guān)系數(shù)據(jù)庫不適合作為數(shù)據(jù)存儲的解決方案。

6今天是什么樣的?

負載平衡—— Nginx

App server—— Tomcat

數(shù)據(jù)庫(集群)— — Mysql,Oracle

緩存,Hadoop集群,實時通信服務(wù)器,流媒體服務(wù)器,電子郵件,圖像服務(wù)器等。

7為什么要使用NoSQL

為什么要使用NoSQL?

今天,我們可以通過第三方平臺(例如Google,F(xiàn)acebook等)輕松訪問和抓取數(shù)據(jù)。用戶的個人信息,社交網(wǎng)絡(luò),地理位置,用戶生成的數(shù)據(jù)和用戶操作日志成倍增加。如果我們想挖掘這些用戶數(shù)據(jù),那么SQL數(shù)據(jù)庫就不再適合這些應(yīng)用程序,而NoSQL數(shù)據(jù)庫的開發(fā)可以很好地處理這些大數(shù)據(jù)。

描述人與人之間關(guān)系的社交數(shù)據(jù)不適合存儲和處理與此類數(shù)據(jù)相關(guān)的傳統(tǒng)數(shù)據(jù)。

2. NoSQL概述——四點

1它是什么

NoSQL(NoSQL=Not Only SQL),意思是“而不僅僅是SQL”,

指非關(guān)系數(shù)據(jù)庫。隨著Internet web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫正在應(yīng)對web2.0網(wǎng)站,特別是超大規(guī)模,高并發(fā)的SNS類型web2.0純動態(tài)網(wǎng)站已經(jīng)變得無能為力,暴露出許多難以克服的問題。非關(guān)系數(shù)據(jù)庫由于其自身的特點而迅速發(fā)展。創(chuàng)建NoSQL數(shù)據(jù)庫是為了解決大規(guī)模數(shù)據(jù)收集的多種數(shù)據(jù)類型帶來的挑戰(zhàn),特別是大數(shù)據(jù)應(yīng)用程序問題,包括大規(guī)模數(shù)據(jù)的存儲。

(例如,谷歌或Facebook每天為其用戶收集數(shù)萬億比特的數(shù)據(jù))。這些類型的數(shù)據(jù)存儲不需要固定模式,并且可以在沒有不必要的操作的情況下擴展。

2我該怎么辦?

1.易于擴展

NoSQL數(shù)據(jù)庫種類繁多,但常見的功能是刪除關(guān)系數(shù)據(jù)庫的關(guān)系性質(zhì)。

數(shù)據(jù)之間沒有關(guān)系,因此很容易擴展。同樣無形,它在架構(gòu)層面帶來了可擴展的功能。

2.高數(shù)據(jù)量和高性能

NoSQL數(shù)據(jù)庫具有非常高的讀寫性能,尤其是在大數(shù)據(jù)量的情況下。

這是由于它的非關(guān)系和數(shù)據(jù)庫的簡單結(jié)構(gòu)。

通常,MySQL使用查詢緩存,每個表的更新緩存無效。它是一個大粒度的Cache,

在頻繁與Web 2.0交互的應(yīng)用程序中,緩存性能不高。 NoSQL的緩存是記錄級的,

是一個細粒度的Cache,所以NoSQL在這個級別上更強大

Redis每秒寫入80,000次,讀取次數(shù)為110,000次

3.多樣化和靈活的數(shù)據(jù)模型

NoSQL可以隨時存儲自定義數(shù)據(jù)格式,而無需為要存儲的數(shù)據(jù)創(chuàng)建字段。在關(guān)系數(shù)據(jù)庫中,

添加和刪??除字段是一項非常麻煩的任務(wù)。如果它是一個非常大量的數(shù)據(jù),添加一個字段只是一場噩夢

4.傳統(tǒng)的RDBMS VS NOSQL

RDBMS與NoSQL

RDBMS

- 高度組織的結(jié)構(gòu)化數(shù)據(jù)

- 結(jié)構(gòu)化查詢語言(SQL)

- 數(shù)據(jù)和關(guān)系存儲在單獨的表中。

- 數(shù)據(jù)操作語言,數(shù)據(jù)定義語言

- 嚴格的一致性

- 基本事務(wù)

NoSQL的

- 代表不僅僅是SQL

- 沒有聲明性查詢語言

- 沒有預(yù)定義的模式

-key - 值對存儲,列存儲,文檔存儲,圖形數(shù)據(jù)庫

- 最終一致性,而不是ACID屬性

- 非結(jié)構(gòu)化和不可預(yù)測的數(shù)據(jù)

- CAP定理

- 高性能,高可用性和可擴展性

3去哪里

Memcached:但就緩存而言,最快的是memcached

Redis:但數(shù)據(jù)類型豐富,redis和tair(Ali,Meituan)更好

mongodb的

4怎么玩

KV——鍵值對

高速緩存——高速緩存

持久性——持久性

3.互聯(lián)網(wǎng)數(shù)據(jù)3V和3高和當前NoSQL經(jīng)典應(yīng)用

(1)3V和3高

3V

質(zhì)量體積

品種多樣

實時速度

3高

高并發(fā)性

高度可擴展性 - ——水平附加CPU或機器,構(gòu)建陣列或集群。

高性能

(2)當前的NoSQL經(jīng)典應(yīng)用程序

NoSql應(yīng)用程序解決方案的所有方面的解決方案:這是一個從不同的地方看一個腳本的例子,我感覺很好,所以這里列出了大綱,我不會寫。

1冷數(shù)據(jù),常數(shù)數(shù)據(jù),如商品的基本信息,存儲在關(guān)系數(shù)據(jù)庫中。

2產(chǎn)品描述,細節(jié),評估信息(多文本類),存儲在MongoDB中。

多文本信息描述類,IO讀寫性能更差

文檔數(shù)據(jù)庫MongDB

3張產(chǎn)品圖片

產(chǎn)品圖像顯示類

分布式文件系統(tǒng)

淘寶自己的TFS

谷歌的GFS

Hadoop HDFS

4產(chǎn)品關(guān)鍵詞

搜索引擎,用于淘寶

ISEARCH

5帶狀熱點產(chǎn)品的高頻信息

內(nèi)存數(shù)據(jù)庫

Tair,Redis,Memcache

例如,在情人節(jié)期間,電子商務(wù)網(wǎng)站上的巧克力,玫瑰等將成為熱門搜索,這將被放置在redis緩存中。

6商品交易,價格計算和積分累積

外部系統(tǒng),外部第三方支付界面

(3)總結(jié)大規(guī)模Internet應(yīng)用程序(大數(shù)據(jù),高并發(fā),多種數(shù)據(jù)類型)的難點和解決方案

難點

數(shù)據(jù)類型多樣性

數(shù)據(jù)源多樣性和變更重構(gòu)

數(shù)據(jù)源轉(zhuǎn)換和數(shù)據(jù)服務(wù)平臺不需要大面積重建

溶液

EAI和統(tǒng)一數(shù)據(jù)平臺服務(wù)層

阿里和淘寶做了什么? UDSL(統(tǒng)一數(shù)據(jù)平臺服務(wù)層)

4. NoSQL數(shù)據(jù)模型簡介

(1)比較與電子商務(wù)客戶,訂單,訂單和地址模型的關(guān)系

(2)數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫

1您如何設(shè)計傳統(tǒng)的關(guān)系數(shù)據(jù)庫?

ER圖(1: 1/1: N/N: N,主外鍵等)

2 nosql你如何設(shè)計

什么是BSON:BSON()是類json的二進制形式存儲類,稱為二進制JSON,

它支持嵌入式文檔對象和數(shù)組對象,如JSON

為學生提供他們使用BSon構(gòu)建的數(shù)據(jù)模型

3對比,問題和困難

為什么可以使用聚合模型處理上述情況

對于關(guān)聯(lián)查詢,建議不要高度并發(fā)操作,

(3)互聯(lián)網(wǎng)公司使用冗余數(shù)據(jù)來避免相關(guān)查詢

分布式事務(wù)不能支持太多的并發(fā)性

按BSon查詢

(4)聚合模型

KV鍵值

BSON

列族

顧名思義,數(shù)據(jù)存儲在列中。最大的特點是可以方便地存儲結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),以便輕松進行數(shù)據(jù)壓縮,

對一列或多列的查詢有一個非常大的IO優(yōu)勢。

5.四類NoSQL數(shù)據(jù)庫

(1)KV鍵值:典型介紹

新浪:BerkeleyDB + redis

美國代表團:redis + tair

阿里,百度:memcache + redis

(2)文檔類型數(shù)據(jù)庫(bson格式更多):典型介紹

CouchDB的

MongoDB的

MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。用C ++編寫。旨在為Web應(yīng)用程序提供可擴展的高性能數(shù)據(jù)存儲解決方案。

MongoDB是關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品。它是非關(guān)系數(shù)據(jù)庫中功能最多,關(guān)系最密切的數(shù)據(jù)庫。

(3)列存儲數(shù)據(jù)庫

卡桑德拉,HBase

分布式文件系統(tǒng)

(4)圖形關(guān)系數(shù)據(jù)庫

它不是圖形,它是一種關(guān)系,如朋友社交網(wǎng)絡(luò)的:圈,廣告推薦系統(tǒng)

社交網(wǎng)絡(luò),推薦系統(tǒng)等。專注于建立關(guān)系圖

Neo4J,InfoGrid

(5)四方比較

6. CAP原則CAP + BASE

在分布式數(shù)據(jù)庫中

1.什么是傳統(tǒng)的ACID?

A(原子性)原子性

C(一致性)一致性

我(隔離)獨立

D(持久性)持久性

關(guān)系數(shù)據(jù)庫遵循ACID規(guī)則

交易是英語交易,類似于現(xiàn)實世界中的交易。它具有以下四個特征:

1.(原子性)原子性

原子性很容易理解,也就是說,事務(wù)中的所有操作都已完成或未完成。交易的成功是交易中的所有操作都是成功的。只要一個操作失敗,整個事務(wù)就會失敗并需要返回。滾。例如,銀行轉(zhuǎn)賬,從A賬戶到100元到B賬戶,分為兩步:1)從A賬戶拿100元; 2)存入100元到B賬戶。這兩個步驟要么一起完成要么一起完成。如果只是第一步完成而第二步失敗,那么錢將莫名其妙地低于100元。

2,C(一致性)一致性

一致性也更容易理解,這意味著數(shù)據(jù)庫應(yīng)始終處于一致狀態(tài),并且事務(wù)的操作不會更改數(shù)據(jù)庫的原始一致性約束。

3.我(隔離)獨立

所謂獨立意味著并發(fā)事務(wù)不會相互影響。如果一個事務(wù)要訪問的數(shù)據(jù)被另一個事務(wù)修改,只要沒有提交另一個事務(wù),它訪問的數(shù)據(jù)就不會受到未提交事務(wù)的影響。 。例如,如果有從A賬戶到100賬戶到B賬戶的交易,如果交易尚未完成,如果B此時查詢自己的賬戶,則不會看到新增加的100元

。

4. D(持久性)持久性

持久性意味著一旦提交了事務(wù),即使出現(xiàn)停機,它所做的更改也將永久存儲在數(shù)據(jù)庫中。

2.什么是CAP

C:一致性

一個:可用性

P:分區(qū)容差

3. CAP三只能滿足兩個!!! (第3章第2條)

CAP理論意味著在分布式存儲系統(tǒng)中,最多可以實現(xiàn)上述兩點。

而且因為當前的網(wǎng)絡(luò)硬件肯定會出現(xiàn)延遲丟包等問題,所以

分區(qū)容差是我們必須實現(xiàn)的。

所以我們只能在一致性和可用性之間進行權(quán)衡,沒有NoSQL系統(tǒng)可以同時保證這三點。

========================================================================

C:強一致性A:高可用性P:分布式容差

CA傳統(tǒng)Oracle數(shù)據(jù)庫

AP選擇大多數(shù)網(wǎng)站架構(gòu)

CP Redis,Mongodb

注意:在選擇分布式架構(gòu)時,您必須進行權(quán)衡。

一致性和可用性之間的平衡。過多的Web應(yīng)用程序不需要強大的一致性。

所以犧牲C代表P,這是當前分布式數(shù)據(jù)庫產(chǎn)品的方向

========================================================================

一致性和可用性的選擇

對于Web 2.0站點,關(guān)系數(shù)據(jù)庫的許多主要功能通常都是無用的

數(shù)據(jù)庫事務(wù)一致性要求

許多Web實時系統(tǒng)不需要嚴格的數(shù)據(jù)庫事務(wù),并且對讀取一致性的要求很低。在某些情況下,寫入一致性要求不高。允許最終的一致性。

數(shù)據(jù)庫實時寫入和讀取實時要求

對于關(guān)系數(shù)據(jù)庫,在插入數(shù)據(jù)后立即查詢肯定可以讀出數(shù)據(jù),但對于許多Web應(yīng)用程序,不需要如此高的實時性能,例如,在發(fā)送消息后,幾秒鐘后即便在十幾秒后,我的訂閱者看到這種動態(tài)完全可以接受。

需要復(fù)雜的SQL查詢,尤其是多表關(guān)聯(lián)查詢

任何大型數(shù)據(jù)量Web系統(tǒng)都非常嫉妒多個大型表關(guān)聯(lián)查詢,以及復(fù)雜的數(shù)據(jù)分析類型報告查詢,特別是SNS類型的網(wǎng)站,從需求和產(chǎn)品設(shè)計的角度來避免這種情況。生產(chǎn)。通常更多的是單個表的主鍵查詢,以及單個表的簡單條件頁面查詢,SQL的功能被大大削弱。

4.經(jīng)典CAP地圖

CAP理論的核心是分布式系統(tǒng)不能同時滿足一致性,可用性和分區(qū)容錯的三個要求,

充其量只能同時滿足兩個。

因此,根據(jù)CAP原則,NoSQL數(shù)據(jù)庫分為三類:滿足CA原則,滿足CP原則,滿足AP原則:

CA - 單點集群,一種滿足一致性和可用性的系統(tǒng),在可伸縮性方面通常不那么強大。

CP - 滿足一致性和分區(qū)容差的系統(tǒng),通常性能不是特別高。

AP - 滿足可用性,分區(qū)容差的系統(tǒng),通??赡芫哂休^低的一致性要求。

注意:Nosql的實際使用是AP

5.什么是BASE?

BASE是一種解決由關(guān)系數(shù)據(jù)庫的強一致性引起的問題引起的問題的解決方案。

BASE實際上是以下三個術(shù)語的縮寫:

基本可用

軟狀態(tài)

最終一致

它的想法是通過讓系統(tǒng)在某個時刻放松對數(shù)據(jù)一致性的要求來改變系統(tǒng)的整體可擴展性和性能。你為什么這么說?原因在于,由于地理分布和極高的性能要求,大型系統(tǒng)通常不可能采用分布式交易來完成這些指標。為了獲得這些指標,我們必須用另一種方法來完成它們。解決這個問題的方法

6.分布式+集群簡介

(1)分布式系統(tǒng)

分布式系統(tǒng)

它由多臺計算機和通過計算機網(wǎng)絡(luò)連接(本地網(wǎng)絡(luò)或廣域網(wǎng))通信軟件組件組成。分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)。由于軟件的性質(zhì),分布式系統(tǒng)具有高度凝聚力和透明性。因此,網(wǎng)絡(luò)和分布式系統(tǒng)之間的差異在于高級軟件(尤其是操作系統(tǒng))而不是硬件。分布式系統(tǒng)可以應(yīng)用于不同的平臺,例如:PC,工作站,局域網(wǎng)和廣域網(wǎng)。

海瑤seo工程師只是說:

1分布:不同的服務(wù)模塊(工程)部署在不同的服務(wù)器上。他們在Rpc/Rmi之間進行通信和呼叫,以提供外部服務(wù)和組內(nèi)協(xié)作。

2集群:不同的服務(wù)器部署在不同的服務(wù)器上,分布式調(diào)度軟件用于統(tǒng)一調(diào)度,提供外部服務(wù)和訪問。