偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

分庫(kù)又分表,吞吐要爆表

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
像這樣的大表場(chǎng)景,如果分庫(kù)分表,就是最終殺器。剛開始,幾個(gè)外企和民企的朋友,還經(jīng)常吵嘴。一波人說(shuō)分庫(kù)分表,另一波說(shuō) sharding, partitioning, 吵來(lái)吵去,都是一個(gè)意思。

本文轉(zhuǎn)載自微信公眾號(hào)「有關(guān)SQL」,作者Lenis 。轉(zhuǎn)載本文請(qǐng)聯(lián)系有關(guān)SQL公眾號(hào)。

“你們最大的表,有多少數(shù)據(jù)量?”

圈子里幾個(gè)常玩的伙伴,聚在一起吃火鍋,或者喝咖啡,通常都會(huì)問(wèn)些特技術(shù)范兒的問(wèn)題。上面這個(gè),就是常問(wèn)的問(wèn)題之一。

其實(shí),倒也不是真對(duì)數(shù)據(jù)量感興趣,而是量大了之后,碰到什么特別有意思的事情,以及,用了什么特別的方法解決。

上億了之后,怎么解決;上 TB 級(jí)別的存儲(chǔ)量,又怎么解決。

就這樣的問(wèn)題,如果是在星巴克,大家伙兒都能吹到下半夜去。我記得,最帶勁的劉哥,一言不合,就打開黑乎乎的 shell, 給我們演示。

像這樣的大表場(chǎng)景,如果分庫(kù)分表,就是最終殺器。剛開始,幾個(gè)外企和民企的朋友,還經(jīng)常吵嘴。一波人說(shuō)分庫(kù)分表,另一波說(shuō) sharding, partitioning, 吵來(lái)吵去,都是一個(gè)意思。

Partition 不是數(shù)據(jù)庫(kù)中常說(shuō)的表分區(qū),實(shí)際上它和分庫(kù)分表一個(gè)意思。而 Sharding (分片)則是 MongoDB, ElasticSearch 等這類 NoSQL 數(shù)據(jù)庫(kù)針對(duì)分庫(kù)分表的專有術(shù)語(yǔ)。

那么,分庫(kù)分表究竟該怎么用呢,涉及到的原理都有哪些呢?說(shuō)實(shí)話,這個(gè)話題太大,在本文中,并不能全部一一說(shuō)到,我只挑自己理解的來(lái)說(shuō)。

讀和寫,數(shù)據(jù)庫(kù)之本

這看起來(lái)是句廢話。數(shù)據(jù)庫(kù)可不就用來(lái)存儲(chǔ),和返回?cái)?shù)據(jù)的嘛!是的,同學(xué)你可以把搬磚放下,還不到砸我的時(shí)候。

讀和寫是基本,就和人要吃飯運(yùn)動(dòng)一樣,是最基本生理活動(dòng)。人吃飯吃多了,或者運(yùn)動(dòng)過(guò)多了,那問(wèn)題就大了。一旦讀和寫,都開始多起來(lái)了,同樣也會(huì)帶來(lái)一系列的問(wèn)題。

讀自己的數(shù)據(jù),讓別人無(wú)數(shù)據(jù)可讀

這,并不是玩笑話。但它有個(gè)前提,數(shù)據(jù)庫(kù)的連接數(shù),是有限的。一旦超額,就再也無(wú)法新建連接。此時(shí),只有先連上的用戶,才能讀取數(shù)據(jù)。之后的請(qǐng)求,只能排隊(duì)等待,或者干脆收到 timeout(超時(shí)) 警告。

說(shuō)到這,順便再提下,前兩天我在談到 Replication(復(fù)制時(shí)), 提到農(nóng)村里看電影的例子。

80年代的農(nóng)村,經(jīng)常有戲班子來(lái)放露天電影。所謂“露天”,就是臨時(shí)在村頭,搭個(gè)舞臺(tái),吊塊幕布,把電影投射上去,支個(gè)功放,村民就開始看電影了。

畫個(gè)草圖,大概就是這樣子:

這露天電影有個(gè)難受的地方,前排的人,耳朵炸聾,后排的人,啥都聽不見。觀影體驗(yàn)賊差,所以整場(chǎng)下來(lái),只有小孩和真正的影迷,能堅(jiān)持到最后。其他人中途都跑了。

所以戲班子想了個(gè)法兒,在村頭村尾各搭個(gè)舞臺(tái)。這樣容納的人就多了。有些村實(shí)在口人太大,那就村東村西,再放兩個(gè)舞臺(tái)。這樣村子里所有人,都可以照顧到了。而實(shí)現(xiàn)這個(gè)目的,就只需復(fù)刻 3 份膠卷。

這就是數(shù)據(jù)庫(kù)復(fù)制原理所在。把數(shù)據(jù)復(fù)刻多份的時(shí)候,就可以供更多人讀取。

所謂“做人留一線,日后好相見”??磦€(gè)電影而已,沒(méi)必要傷害鄉(xiāng)里鄉(xiāng)親的感情。大家為了搶一個(gè)好位置,最后結(jié)局只能是誰(shuí)都看得不爽。所以這里看不了,我就去別的場(chǎng)地看。

復(fù)制技術(shù)出來(lái)之后,讀數(shù)據(jù)就不搶占一個(gè)庫(kù)了。這臺(tái)服務(wù)器讀請(qǐng)求,在排隊(duì),那就去另一臺(tái)服務(wù)器。假設(shè)網(wǎng)絡(luò)里,服務(wù)器夠多,那么總有一臺(tái)能讀到數(shù)據(jù)。

SQL Server 可以支持 8 臺(tái)服務(wù)器同時(shí)服務(wù)讀,而 MySQL 通過(guò)中間件,則可以支持更多,比如 MySQL Proxy, MySQL Cat, MySQL DAL等等。

寫入時(shí)代大爆炸

之前欣賞電影,只能在電影院,生產(chǎn)這些電影,往往都是大團(tuán)隊(duì)。那時(shí),看電影,純屬于消費(fèi)時(shí)代。

但4G, 5G來(lái)了之后,消費(fèi)時(shí)代悄然變化了。小團(tuán)隊(duì),甚至個(gè)人,開始制作電影。小眾視頻,勝在長(zhǎng)尾效應(yīng)。比如 Youtube, B 站,這個(gè)時(shí)代,人人兼可創(chuàng)作。

如此之多的視頻,僅靠電影制片廠,是完全來(lái)不及生產(chǎn)了。網(wǎng)民集體的創(chuàng)作狂熱,必須由民間力量,B站,愛奇藝,騰訊視頻等等,來(lái) Hold 住。

就像,你的數(shù)據(jù)庫(kù),在經(jīng)歷了 7, 8年的發(fā)展后,受眾越來(lái)越多,大家寫入的熱情也越來(lái)越高漲。此時(shí),數(shù)據(jù)庫(kù),也將面臨跟視頻網(wǎng)站一樣的困擾,究竟該如何支撐主這些 “洪流”?

經(jīng)歷了大爆炸后,視頻平臺(tái)痛下決心,把視頻服務(wù)器分散,開到全國(guó)去。在全國(guó)各個(gè)重要的大城市,組建視頻中心,讓周圍的視頻創(chuàng)作者,把視頻傳到這些服務(wù)器上。

這就是分庫(kù)分表的模式。

雖然華東南西北中,是相互獨(dú)立的,但它們的視頻始終都以邏輯整體存在。一個(gè)VLOG作者,在北京上傳了個(gè)視頻,如果坐飛機(jī)到了廣州,他就訪問(wèn)不到在北京上傳的那個(gè)視頻,那怎么也說(shuō)不過(guò)去。

所以,所有這些視頻,都是維護(hù)在一張邏輯表中。根據(jù)這些視頻的上傳者GIS地址,傳到最近的服務(wù)器上。這就是分庫(kù)分表常用的,按 Key 值分區(qū)策略。雖然這樣的策略,會(huì)有一系列問(wèn)題,但暫且這么理解。

分庫(kù)分表好處非常明顯,一來(lái)可以容納更多數(shù)據(jù)量,二來(lái)訪問(wèn)更快捷。

怎么實(shí)現(xiàn)分庫(kù)分表呢?

有人說(shuō),可以用客戶端代碼來(lái)控制訪問(wèn)數(shù)據(jù)庫(kù);也有人說(shuō),我就愛寫中間件,讓服務(wù)器自動(dòng)支持分庫(kù)分表,并且沒(méi)有語(yǔ)言限制,也很極客;還有人說(shuō),用云原生,程序員負(fù)責(zé)實(shí)現(xiàn)邏輯,運(yùn)維這檔子事交給供應(yīng)商。

當(dāng)然,統(tǒng)統(tǒng)都可以。但是本文還是著重講講中間件。畢竟,供應(yīng)商費(fèi)銀子,客戶端費(fèi)腦子,只有中間件,可以一勞永逸。

分享 2 種方法:

Percona XtraDB Cluster方案

Percona XtraDB Cluster簡(jiǎn)稱PXC。Percona Xtradb Cluster的實(shí)現(xiàn)是在原mysql代碼上通過(guò)Galera包將不同的mysql實(shí)例連接起來(lái),實(shí)現(xiàn)了multi-master的集群架構(gòu)。

上圖中有三個(gè)實(shí)例,組成了一個(gè)集群,而這三個(gè)節(jié)點(diǎn)與普通的主從架構(gòu)不同,它們都可以作為主節(jié)點(diǎn),三個(gè)節(jié)點(diǎn)是對(duì)等的,這種一般稱為multi-master架構(gòu),當(dāng)有客戶端要寫入或者讀取數(shù)據(jù)時(shí),隨便連接哪個(gè)實(shí)例都是一樣的,讀到的數(shù)據(jù)是相同的,寫入某一個(gè)節(jié)點(diǎn)之后,集群自己會(huì)將新數(shù)據(jù)同步到其它節(jié)點(diǎn)上面,這種架構(gòu)不共享任何數(shù)據(jù),是一種高冗余架構(gòu)。

作者:羅阿紅 出處:http://www.cnblogs.com/luoahong/

MySQL DAL (Data Access Layer )

當(dāng)年手機(jī)之家高春輝領(lǐng)導(dǎo)開發(fā)的產(chǎn)品。它解決了單臺(tái)計(jì)算機(jī)容量有限的難題。真正實(shí)現(xiàn)了分庫(kù)分表的優(yōu)勢(shì)。

DAL 有三大組件,Java Netty 框架,ZooKeep 控態(tài),SQL 處理模塊( 通過(guò)分解 SQL 生成語(yǔ)法樹,依據(jù) SQL 路由表,生成對(duì)應(yīng)的執(zhí)行路徑)

由于 MySQL DAL 是閉源產(chǎn)品,相關(guān)的實(shí)現(xiàn)沒(méi)有源碼可看。但我看到這篇論文有提及部分原理:

嗯,上次有微信群水友問(wèn),數(shù)據(jù)庫(kù)開發(fā)與數(shù)據(jù)庫(kù)開發(fā)有什么區(qū)別。大概在這里,可以說(shuō)的明白了。

 

一類人,是做CRUD應(yīng)用系統(tǒng)的開發(fā),比如做個(gè)報(bào)表,寫個(gè)ETL;另一類數(shù)據(jù)庫(kù)開發(fā),是實(shí)現(xiàn)數(shù)據(jù)庫(kù)的某項(xiàng)功能,比如分庫(kù)分表組件。

 

責(zé)任編輯:武曉燕 來(lái)源: 有關(guān)SQL
相關(guān)推薦

2021-01-26 05:37:08

分庫(kù)分表內(nèi)存

2019-09-09 08:28:48

互聯(lián)網(wǎng)數(shù)據(jù)磁盤

2021-10-27 20:54:24

分庫(kù)分表高并發(fā)

2020-07-30 17:59:34

分庫(kù)分表SQL數(shù)據(jù)庫(kù)

2021-03-17 16:15:55

數(shù)據(jù)MySQL 架構(gòu)

2020-11-18 09:39:02

MySQL數(shù)據(jù)庫(kù)SQL

2022-12-27 19:07:52

2025-09-23 01:11:00

分庫(kù)分表分布式數(shù)據(jù)庫(kù)

2019-11-12 09:54:20

分庫(kù)分表數(shù)據(jù)

2021-08-31 20:21:11

VitessMySQL分庫(kù)

2022-07-11 08:16:47

NewSQL關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)

2020-07-28 09:04:09

NewSQL分庫(kù)分表

2024-07-26 00:16:11

2025-04-01 08:45:00

2022-06-30 07:34:46

分庫(kù)分表外賣訂單系統(tǒng)

2024-08-07 10:34:46

2024-08-02 15:47:28

數(shù)據(jù)庫(kù)分庫(kù)分表

2024-11-22 15:32:19

2025-02-17 10:30:01

2023-03-28 08:58:47

分庫(kù)分表TiDB
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)