01.ShardingSphere笔记
#1.分庫(kù)分表的概念
#1.1.垂直分表
概念:就是把一個(gè)表里的字段,分成多個(gè)表進(jìn)行存儲(chǔ),比如一個(gè)學(xué)生表,有姓名,性別,年齡,年級(jí),班級(jí)等信息。那么進(jìn)行垂直分表的概念就是把學(xué)生表中的姓名,性別,年齡分成了一個(gè)表,年級(jí),班級(jí)等信息又分成了另外一個(gè)表。
思考這樣做的好處:
1.減少了IO流操作。因?yàn)橛袝r(shí)候,我們就只需要學(xué)生的姓名,性別,年齡即可。其他的班級(jí)信息是不需要的。
2.就是當(dāng)我們?nèi)绻谧鲂薷牟僮鞯臅r(shí)候,修改會(huì)有鎖表的操作。那么分表的好處就是可以不影響另外一張表查詢。
如果一個(gè)表中某些列常用,而另外一些列不常用,則可以采用垂直分割,另外垂直分割可以使得數(shù)據(jù)行變小,一個(gè)數(shù)據(jù)頁(yè)就能存放更多的數(shù)據(jù),在查詢時(shí)就會(huì)減少I/O次數(shù)。
那既然有好處,那肯定就有弊端:
1.其缺點(diǎn)是需要管理冗余列,查詢所有數(shù)據(jù)需要join操作
#1.2.垂直分庫(kù)
比如一個(gè)學(xué)生選課系統(tǒng),里面有學(xué)生表信息,選課信息。
那么我們?yōu)榱藴p輕數(shù)據(jù)庫(kù)的壓力,可以做到專庫(kù)專用,就是某些業(yè)務(wù),我們可以放在單獨(dú)的數(shù)據(jù)庫(kù)里。
像這個(gè)學(xué)生選課系統(tǒng),那么我們就可以把學(xué)生表放在一個(gè)庫(kù),選課表放在另外一個(gè)庫(kù)。
#2.1.水平分庫(kù)
概念,就是把所有表都復(fù)制一份出來(lái),然后部署到不同的服務(wù)器上,這樣就能減輕數(shù)據(jù)庫(kù)的壓力。
#2.2.水平分表
概念:就是在同一個(gè)數(shù)據(jù)庫(kù)中,把表復(fù)制出多份結(jié)構(gòu)相同的表。比如學(xué)生表,就分為學(xué)生表1,學(xué)生表2....
#3.總結(jié)
垂直分庫(kù)分表:是對(duì)(庫(kù)里的表)或者是(表里的字段)進(jìn)行垂直切分。
水平分庫(kù)分表:是對(duì)(整個(gè)庫(kù))或者是(整個(gè)表信息)進(jìn)行水平復(fù)制。簡(jiǎn)單理解就是水平分庫(kù)分表就是切分成多個(gè)同樣的庫(kù)和多個(gè)同樣的表。
#4.分庫(kù)分表應(yīng)用和問(wèn)題
#4.1.應(yīng)用
1.在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)候就要考慮垂直分庫(kù)和垂直分表的場(chǎng)景。
2.隨著數(shù)據(jù)庫(kù)數(shù)據(jù)量增加,不要馬上考慮做水平切分,首先考慮緩存處理,讀寫分離,使用索引等等方式,如果這些方式不能根本解決問(wèn)題了,再考慮做水平分庫(kù)和水平分表。
#4.2.分庫(kù)分表帶來(lái)的問(wèn)題
1.跨節(jié)點(diǎn)連接查詢問(wèn)題(分頁(yè)、排序)。
2.多數(shù)據(jù)源管理問(wèn)題。
因?yàn)榉謳?kù)分表后,就存在不同的表存放在不同的庫(kù),一些業(yè)務(wù)上是需要展示多個(gè)表數(shù)據(jù)的。這個(gè)時(shí)候就出現(xiàn)了跨節(jié)點(diǎn)連接查詢的問(wèn)題了。
#2.Sharding-JDBC
#2.1.簡(jiǎn)介
1.是一個(gè)輕量級(jí)的java框架,是增強(qiáng)版的JDBC驅(qū)動(dòng)。官網(wǎng):https://shardingsphere.apache.org/index_zh.html
#2.2.目的
主要目的:簡(jiǎn)化對(duì)分庫(kù)分表之后數(shù)據(jù)相關(guān)操作。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的01.ShardingSphere笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: centos7中安装JDK8-281版本
- 下一篇: RocketMQ历史版本下载