訂閱
糾錯(cuò)
加入自媒體

首款國(guó)產(chǎn)開(kāi)源數(shù)據(jù)庫(kù)TBase核心架構(gòu)演進(jìn)

2020-06-09 10:15
IT168
關(guān)注

舉個(gè)例子,比如說(shuō)上圖中的右邊是我們的數(shù)據(jù),左邊是我們的用戶(hù)。

成都分公司總經(jīng)理能夠從級(jí)別這里看到所有的數(shù)據(jù)。但是他在目錄這個(gè)級(jí)別的話(huà),他只能看到成都的機(jī)密級(jí)別以下的數(shù)據(jù)。同時(shí),因?yàn)樗慕M里面有工程部和人力資源部,他只有這兩個(gè),也就是說(shuō)他能夠看到工程部和人力資源部的成都的數(shù)據(jù)。對(duì)于總部的人力資源總經(jīng)理的話(huà),我們就會(huì)發(fā)現(xiàn)他能看到北京和成都的,也就是說(shuō)能看到所有歸屬地的員工的人力資源里面的數(shù)據(jù)。對(duì)于董事長(zhǎng)來(lái)講,一般董事長(zhǎng)的級(jí)別能夠看到所有的安全級(jí)別的數(shù)據(jù),他能看到北京和成都兩地的數(shù)據(jù)。在組的關(guān)系上來(lái)講,董事局一般是整個(gè)公司部門(mén)里面最高級(jí)的部門(mén),所以他在組這個(gè)級(jí)別上,他就能看到他下屬所有部門(mén)的數(shù)據(jù),也就是說(shuō)對(duì)鋼鐵俠來(lái)講,他能看到整個(gè)公司全部的數(shù)據(jù)。通過(guò)這個(gè)安全規(guī)則我們就可以做到對(duì)數(shù)據(jù)做到行級(jí)的過(guò)濾、行級(jí)的保護(hù)。

2、TBase的列級(jí)安全規(guī)則。

在TBase中是通過(guò)訪問(wèn)控制列表來(lái)實(shí)現(xiàn)的,也就是說(shuō)我們會(huì)在每一個(gè)列上加一個(gè)ACL的列表來(lái)指定這一列對(duì)誰(shuí)有權(quán)限,誰(shuí)沒(méi)有權(quán)限。

比如:我們?cè)谛匠晟显O(shè)定說(shuō)普通員工是沒(méi)有權(quán)限訪問(wèn),對(duì)蜘蛛俠或者普通員工來(lái)講的話(huà),他看到的數(shù)據(jù)就只有他自己的數(shù)據(jù)。但是對(duì)于鋼鐵俠來(lái)講,因?yàn)殇撹F俠是董事局的主席,他能看到這兩列所有的數(shù)據(jù)。通過(guò)行級(jí)權(quán)限控制和列級(jí)權(quán)限控制可以得出我們對(duì)表里面的數(shù)據(jù)能夠做到行和列的任意訪問(wèn)的控制。

3、TBase數(shù)據(jù)脫敏和加密。

脫敏和加密面對(duì)的場(chǎng)景有一些差別,加密主要面對(duì)的是數(shù)據(jù)文件本身的泄露,比如我的文件被別人拖走了,然后他通過(guò)代碼可以把數(shù)據(jù)解析出來(lái)。我們現(xiàn)在常見(jiàn)的數(shù)據(jù)庫(kù)的存儲(chǔ)格式基本上來(lái)講是屬于半公開(kāi)的狀態(tài)。也就是說(shuō)大家只要拿到了數(shù)據(jù)庫(kù)的數(shù)據(jù)文件,只要有一個(gè)數(shù)據(jù)程序就可以把它解析出來(lái),我們要通過(guò)數(shù)據(jù)中心的加密防止泄露。脫敏主要指的是我的數(shù)據(jù)在訪問(wèn)的時(shí)候,有些數(shù)據(jù)的用戶(hù)是沒(méi)有權(quán)限去看到它的明文的,但是它還用一些運(yùn)維的操作或者其他一些工作上的需要,他需要能訪問(wèn)這些數(shù)據(jù),但是他不需要真正看到這些數(shù)據(jù),這兩個(gè)是完全不同的需求。加密在存儲(chǔ)層的時(shí)候,存儲(chǔ)的是密文,只有在執(zhí)行這個(gè)程序的時(shí)候才會(huì)對(duì)數(shù)據(jù)進(jìn)行解密和加密,然后把它反饋給用戶(hù)。對(duì)于脫敏的話(huà),存儲(chǔ)的是明文,在buffer里面也是明文,只有在用戶(hù)訪問(wèn)的時(shí)候,我們授權(quán)用戶(hù)、非授權(quán)用戶(hù)來(lái)進(jìn)行公平的處理。對(duì)授權(quán)用戶(hù)得到的就是完整的數(shù)據(jù),對(duì)非授權(quán)用戶(hù)得到的數(shù)據(jù)就是脫敏以后的結(jié)果。加密和脫敏可以進(jìn)行混合的使用,也就是說(shuō)我們既可以對(duì)存儲(chǔ)內(nèi)容加密,也可以針對(duì)不同用戶(hù)采用用戶(hù)的一個(gè)脫敏的規(guī)則,來(lái)保證我數(shù)據(jù)訪問(wèn)的一個(gè)隔離。

下面針對(duì)TBase MLS透明脫敏和透明加密舉個(gè)例子。

我們有兩個(gè)脫敏和加密的規(guī)則,也就是說(shuō)我們會(huì)針對(duì)非董事長(zhǎng)用戶(hù)進(jìn)行加密的脫敏。脫敏之后的數(shù)據(jù),我們可以指定一個(gè)任意的值來(lái)展示給這個(gè)非授權(quán)用戶(hù),F(xiàn)在我們對(duì)于這個(gè)非授權(quán)用戶(hù),也就是說(shuō)對(duì)于成都的分公司總經(jīng)理和總部人力資源總經(jīng)理,他們看到這兩個(gè)數(shù)據(jù),一個(gè)是0,一個(gè)是1。但是對(duì)于董事長(zhǎng)來(lái)講,因?yàn)樗浅?jí)用戶(hù),他是沒(méi)有受到加密和脫敏的約束的,所以他看到的數(shù)據(jù)是正常的數(shù)據(jù)。通過(guò)這種方式我們就可以很好的來(lái)隔離系統(tǒng)里面不同等級(jí)用戶(hù)對(duì)于同樣一些數(shù)據(jù)看到的視圖,達(dá)到一個(gè)隔離的效果。

另外,跟大家分享下TBase MLS的審計(jì)能力。

TBase具備完整的審計(jì)能力:1、語(yǔ)句審計(jì),對(duì)特定的語(yǔ)句類(lèi)型進(jìn)行審計(jì);2、對(duì)象審計(jì),可以針對(duì)數(shù)據(jù)庫(kù)的某個(gè)對(duì)象,比如說(shuō)一張表,或者一個(gè)數(shù)據(jù)庫(kù),甚至一個(gè)索引來(lái)進(jìn)行一個(gè)審計(jì)。3、記錄用戶(hù)審計(jì),記錄用戶(hù)所有的訪問(wèn)。4、還有一個(gè)比較好玩兒的功能是TBase的一個(gè)系統(tǒng)的審計(jì),我們可以做一些針對(duì)用戶(hù)自定義的審計(jì)規(guī)則,比如審計(jì)的時(shí)候,我們判斷如果用戶(hù)的余額大于這個(gè)值的時(shí)候,我們就會(huì)把它的審計(jì)結(jié)果記錄下來(lái)。同時(shí)我們還會(huì)自定義它的審計(jì)的一個(gè)動(dòng)作,也就是說(shuō)如果這個(gè)條件被觸發(fā)了之后,我們會(huì)去做什么事情。比如說(shuō)上面這個(gè)例子是我們會(huì)調(diào)用一個(gè)發(fā)文件的功能來(lái)做我們的審計(jì)。

PartⅢ TBase客戶(hù)案例

下面介紹一下TBase的客戶(hù)案例。

TBase最早是在2016年初的時(shí)候替換了微信支付原有的分庫(kù)分表的MySQL集群。當(dāng)時(shí)大概每天只有500萬(wàn)筆,后來(lái)支撐到每天數(shù)億筆。整個(gè)過(guò)程中我們保證了微信支付業(yè)務(wù)的連續(xù)性和穩(wěn)定性。

主要有幾個(gè)策略:

第一個(gè)是大小商戶(hù)策略。微信商戶(hù)系統(tǒng),商戶(hù)業(yè)務(wù)不同于個(gè)人業(yè)務(wù),存在大商戶(hù)和小商戶(hù)的區(qū)別。大商戶(hù)像大型的網(wǎng)購(gòu)平臺(tái),還有電商平臺(tái),它都屬于大商戶(hù)。小商戶(hù)就是各種各樣的小店,他們的數(shù)據(jù)量不一樣的,所以我們需要對(duì)于不同的用戶(hù)量來(lái)進(jìn)行一個(gè)處理,來(lái)保證兩邊服務(wù)的質(zhì)量。

第二個(gè)是冷熱分離的策略,因?yàn)閷?duì)于微信支付的系統(tǒng)來(lái)講的話(huà),它的冷熱存活都是我們的訂單數(shù)據(jù),都是跟錢(qián)相關(guān)的東西。這一塊來(lái)講的話(huà),跟我們相關(guān)法律的要求,這些數(shù)據(jù)我們需要存儲(chǔ)四年以上。但是,其實(shí)對(duì)于其中的數(shù)據(jù),絕大部分來(lái)講,比如說(shuō)三個(gè)月以前的數(shù)據(jù)訪問(wèn)量是非常低的,我們?nèi)绻际褂孟嗤拇鎯?chǔ)策略,我們整個(gè)集群有400多T的數(shù)據(jù),如果都是用成本較高的SSD存儲(chǔ),效率和成本之間不是最優(yōu)的結(jié)果。所以我們就需要一些針對(duì)最近3-4個(gè)月的熱數(shù)據(jù)和4個(gè)月以前的冷數(shù)據(jù)采用不同的存儲(chǔ)策略,來(lái)幫助業(yè)務(wù)降低成本,同時(shí)來(lái)保證我們業(yè)務(wù)的訪問(wèn)效率。

第三是我們還為業(yè)務(wù)提供了一個(gè)跨城容災(zāi)的能力,來(lái)保證業(yè)務(wù)的連續(xù)性。

由于來(lái)訪問(wèn)這個(gè)系統(tǒng)的業(yè)務(wù)有很多種,運(yùn)維的同學(xué)也會(huì)有潛在的不同的各種各樣的應(yīng)用程序,我們需要針對(duì)不同的應(yīng)用程序或者不同的用戶(hù),來(lái)提供不同的數(shù)據(jù)視圖,來(lái)保證我數(shù)據(jù)整體的可靠性。這個(gè)是前面提到的第四是MLS的安全系統(tǒng)。

總結(jié)一下,微信支付整個(gè)集群大概是這么一個(gè)結(jié)構(gòu)。

圖中最上面是我們CLB,是騰訊內(nèi)部的一個(gè)負(fù)載均衡的組件。CLB下面是我們的接入節(jié)點(diǎn),我們?cè)趦?nèi)部首先把數(shù)據(jù)會(huì)分為大商戶(hù)和小商戶(hù),在下面可以看出來(lái)小商戶(hù)熱數(shù)據(jù)集群,小商戶(hù)冷是商戶(hù)冷數(shù)據(jù)集群,大商戶(hù)熱是大商戶(hù)熱數(shù)據(jù)集群,大商戶(hù)冷是大商戶(hù)冷數(shù)據(jù)集群。冷熱集群之間的差別在于說(shuō)存儲(chǔ)設(shè)備是不一樣的。熱集群主要使用的是SSD的設(shè)備,冷集群使用的是普通的TS5的設(shè)備,降低存儲(chǔ)成本。整體來(lái)講的話(huà),通過(guò)這種方式之后,我們就把我們整個(gè)集群的成本降低到了ICB存儲(chǔ)的四分之一左右,全部使用ICB存儲(chǔ)的四分之一。

在外部我們有一個(gè)比較大的保險(xiǎn)公司,然后上線(xiàn)了200多個(gè)TBase實(shí)例在跑保險(xiǎn)的核心業(yè)務(wù),這里只展示了我們的部署架構(gòu)。

我們上面分為兩個(gè)平面,一個(gè)是讀寫(xiě)平面,一個(gè)是只讀平面。讀寫(xiě)平面,業(yè)務(wù)通過(guò)VIP來(lái)提供讀寫(xiě)能力。我們的只讀平面通過(guò)業(yè)務(wù)VIP在多個(gè)節(jié)點(diǎn)做負(fù)載均衡,提供一個(gè)業(yè)務(wù)的只讀能力。然后TBase的數(shù)據(jù)在生成之后,我們還需要把這個(gè)數(shù)據(jù)同步到我們其他的一些系統(tǒng)里面去,比如說(shuō)ES、INFORMIX、MONGODB或者說(shuō)MySQL,甚至同步到Oracle里面去。同步到Oracle和INFORMIX里面去主要是為了保證業(yè)務(wù)切換的可靠性,也就是我們把數(shù)據(jù)再回寫(xiě)回去,來(lái)保證這個(gè)切換過(guò)程中的穩(wěn)定性。需要補(bǔ)充一下,TBase在往這個(gè)后面同步數(shù)據(jù)的時(shí)候,其實(shí)我們是先通過(guò)自己的邏輯解析的數(shù)據(jù),把數(shù)據(jù)解析成了Json格式,通過(guò)Kafka同步過(guò)去。

PartⅣ 國(guó)產(chǎn)化能力建設(shè)

下面介紹一下TBase在數(shù)據(jù)庫(kù)國(guó)產(chǎn)化方面的工作。第一個(gè),在國(guó)產(chǎn)化平臺(tái)上面,我們支持了國(guó)內(nèi)主要的平臺(tái),包括華為的泰山,還有中標(biāo)麒麟。在操作系統(tǒng)這一塊的話(huà),中標(biāo)麒麟已經(jīng)支持和UOS也在支持中。國(guó)產(chǎn)芯片這一塊, X86和ARM我們是支持的比較好的。

在國(guó)產(chǎn)化計(jì)劃這塊,一定會(huì)提到數(shù)據(jù)庫(kù)的異構(gòu)遷移,TBase現(xiàn)在已提供了完整的數(shù)據(jù)庫(kù)遷移服務(wù)。

主要分為兩部分,一部分是工具,在工具這一塊的話(huà),我們有數(shù)據(jù)的遷移工具,數(shù)據(jù)遷移評(píng)估工具以及數(shù)據(jù)校驗(yàn)的工具。同時(shí)我們還提供了專(zhuān)門(mén)的專(zhuān)家咨詢(xún)服務(wù),專(zhuān)家咨詢(xún)的話(huà),我們會(huì)有一些遷移評(píng)估,方案設(shè)計(jì),改造建議,優(yōu)化建議等等。通過(guò)整體的解決方案,我們會(huì)把數(shù)據(jù)從原有的商業(yè)數(shù)據(jù)庫(kù),包括Oracle、MySQL等等可以把它很可靠的同步到TBase里面來(lái),來(lái)解決數(shù)據(jù)庫(kù)國(guó)產(chǎn)化替換的一個(gè)數(shù)據(jù)遷移的問(wèn)題。

在硬件這一塊的話(huà),現(xiàn)在我們常見(jiàn)的幾種硬件進(jìn)行了性能的評(píng)測(cè),下面是評(píng)測(cè)結(jié)果。

在前面提到的X86環(huán)境下的話(huà),我們?cè)诜⻊?wù)器上跑了68萬(wàn)TPM。然后LinuxOne能跑127萬(wàn),測(cè)試結(jié)果跟服務(wù)器的配置有關(guān)系。說(shuō)到數(shù)據(jù)庫(kù)的國(guó)產(chǎn)化替換,肯定是繞不開(kāi)Oracle兼容的,Oracle兼容TBase做了相當(dāng)多的工作,包括我們的對(duì)象的支持,數(shù)據(jù)類(lèi)型的支持,函數(shù),SQL特性和存儲(chǔ)過(guò)程。這一塊我們后續(xù)會(huì)進(jìn)行一些增強(qiáng)和擴(kuò)展,來(lái)提升我們的兼容度。

PartⅤ Q&A

Q:分布式表的庫(kù)備份,所有的DN都要獨(dú)立備份一份嗎?

A:TBase每個(gè)DN是整個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)的分片,所以說(shuō)在備份的時(shí)候,至少每個(gè)DN是要備份一份出來(lái)的,但是它不是獨(dú)立的一份,因?yàn)樵趥浞葸壿嬂锩鏁?huì)控制保障整個(gè)集群的完整性,也就是各個(gè)DN之間,每個(gè)DN都會(huì)有一個(gè)相應(yīng)的副本存儲(chǔ)到冷備里面去。

Q:冷備這塊最大一致時(shí)間戳方式,會(huì)不會(huì)因?yàn)榉⻊?wù)器之間的時(shí)間差異造成備份不一致?

A:冷備的時(shí)間戳問(wèn)題,我覺(jué)得這個(gè)不用擔(dān)心,分享中我提到有5種方式:1)分布式快照隔離;2)絕對(duì)物理時(shí)間隔離;3)硬件絕對(duì)物理時(shí)間隔離;4)本地時(shí)間隔離;5)邏輯時(shí)間戳的隔離。TBase使用的是邏輯時(shí)間戳,這個(gè)時(shí)間戳不是本地的時(shí)間戳,是TBase內(nèi)部的時(shí)間戳,我們會(huì)保證它的穩(wěn)定性和單向遞增,它不會(huì)發(fā)生反轉(zhuǎn),也不會(huì)發(fā)生偏移,而且它有容災(zāi)的特性。即使機(jī)器發(fā)生故障,然后再把它拉起來(lái),它也是能保證整個(gè)穩(wěn)定性的。

Q:時(shí)間戳是個(gè)全局自增值嗎?gtid?

A:至于說(shuō)這個(gè)時(shí)間戳是不是一個(gè)自增值,簡(jiǎn)單理解上,說(shuō)是自增值是沒(méi)有問(wèn)題的。但是核心問(wèn)題是我們需要保證它,不能讓它有全局瓶頸,不能讓它因?yàn)橐话焰i,把它全局吞吐量都拉下降了。

Q:安全控制方式上,select 如何輸入token?

A:TBase的安全控制方式更多的是通過(guò)用戶(hù)的接口,比如說(shuō)安全管理員,他會(huì)有自己的一套接口來(lái)創(chuàng)建自己的密鑰,創(chuàng)建自己的安全規(guī)則。

Q:冷熱數(shù)據(jù)分離是通過(guò)人工方式做的還是自動(dòng)方式?判斷冷熱數(shù)據(jù)的標(biāo)準(zhǔn)是啥?有沒(méi)有采用存儲(chǔ)分層的能力自動(dòng)來(lái)判斷?

A:至于冷熱分離的轉(zhuǎn)儲(chǔ)是存儲(chǔ)層的設(shè)置策略還是在云數(shù)據(jù)庫(kù)層去做,其實(shí)冷熱轉(zhuǎn)儲(chǔ)這一塊,冷熱的訪問(wèn)邏輯和邏輯的定義是在數(shù)據(jù)庫(kù)里面定義的,但是冷熱的轉(zhuǎn)儲(chǔ),是通過(guò)TBase的管控系統(tǒng)來(lái)做,這個(gè)邏輯相對(duì)來(lái)講還是比較重,我們需要有一些專(zhuān)門(mén)的機(jī)制來(lái)保障它的可靠性和易用性,所以TBase整個(gè)把它移到了管控系統(tǒng)里面來(lái)。

冷熱分離的方式是人工去定義的,我們根據(jù)的業(yè)務(wù)邏輯來(lái)定義哪個(gè)數(shù)據(jù)是冷,哪個(gè)數(shù)據(jù)是熱的。但是它的判斷,它下層的遷移的邏輯是自動(dòng)的,只要把這個(gè)規(guī)則定義好了之后,整個(gè)系統(tǒng)會(huì)自動(dòng)的運(yùn)行,不需要人為干預(yù)。

判斷冷熱的標(biāo)準(zhǔn)是什么,舉個(gè)例子,比如說(shuō)微信支付是四個(gè)月的數(shù)據(jù)是熱數(shù)據(jù),四個(gè)月之前的數(shù)據(jù)是冷數(shù)據(jù),其實(shí)是按照時(shí)間來(lái)判斷的,我們?nèi)‘?dāng)前的時(shí)間往前面算,往前面偏移。超過(guò)了一定的閾值它就是冷數(shù)據(jù)。

關(guān)于存儲(chǔ)分層之后,TBase更多是從數(shù)據(jù)庫(kù)本身的能力來(lái)做。

Q:備份工具是原生內(nèi)置的嗎?

A:TBase的備份工具不是數(shù)據(jù)庫(kù)內(nèi)置的,是我們?cè)诠芸乩锩孀龅,說(shuō)句實(shí)在話(huà),冷備這一塊東西需要打交道的周邊模塊比較多。比如需要把冷備的數(shù)據(jù)同步到一個(gè)外部存儲(chǔ)里面,外部存儲(chǔ)有可能是一個(gè)磁盤(pán)陣列,有可能是一個(gè)HDFS,也有可能是一個(gè)其他的存儲(chǔ),這些東西放在數(shù)據(jù)內(nèi)核里面不合適,太重了,冷備功能是我們提供的獨(dú)立工具來(lái)做的。

Q:TBase本身就是一個(gè)數(shù)據(jù)庫(kù)引擎,它不是一個(gè)數(shù)據(jù)庫(kù)中間件?

A:TBase本質(zhì)上是一個(gè)數(shù)據(jù)庫(kù)引擎。今天我講的PPT里面,大家可以看到,整個(gè)過(guò)程中其實(shí)我都沒(méi)有提中間件,一直在講數(shù)據(jù)庫(kù)底層引擎的一個(gè)原理,比如說(shuō)優(yōu)化器的原理、執(zhí)行器的原理,還有分布式優(yōu)化邏輯,以及我們的分布式事務(wù)的邏輯,其實(shí)都是引擎里面的原理。中間件一般只會(huì)做SQL解析、SQL轉(zhuǎn)發(fā)和結(jié)果的返回,很少涉及到執(zhí)行計(jì)劃。

Q:PUSH QUERY和PULL DATA如何選擇?

A:其實(shí)PUSH QUERY和PULL DATA這個(gè)選擇沒(méi)有一個(gè)嚴(yán)格的界限,一般PUSH QUERY在數(shù)據(jù)量相對(duì)比較大的時(shí)候會(huì)比較有效一點(diǎn),因?yàn)榘裃UERY下推之后,下層節(jié)點(diǎn)的執(zhí)行會(huì)過(guò)濾掉大部分?jǐn)?shù)據(jù),拉取的數(shù)據(jù)量大大的減小。然后PULL DATA在一些簡(jiǎn)單的查詢(xún),表非常小的時(shí)候,把它拉回來(lái)算可能更快一點(diǎn)。這一塊選擇沒(méi)有嚴(yán)格的標(biāo)準(zhǔn),可以根據(jù)我們的場(chǎng)景決定。

Q:如果是從ORACLE轉(zhuǎn)到分布式數(shù)據(jù)庫(kù)有哪些知識(shí)需要補(bǔ)充?

A:說(shuō)實(shí)在話(huà), Oracle是一個(gè)發(fā)展了三四十年的數(shù)據(jù)庫(kù)產(chǎn)品,整體的架構(gòu)和功能都非常強(qiáng)大了。分布式數(shù)據(jù)庫(kù)是一個(gè)新興的領(lǐng)域,產(chǎn)品架構(gòu),包括它的生態(tài)也都是一直處于建設(shè)和完善中,因此在調(diào)優(yōu)、使用和數(shù)據(jù)業(yè)務(wù)的建模這一塊跟以前的Oracle還是有所區(qū)別的。從哪一塊入手,我覺(jué)得這要看你使用的是哪些分布式數(shù)據(jù)庫(kù)。如果是MPP的話(huà),可能就需要了解一下MPP里面的關(guān)鍵點(diǎn)。比如數(shù)據(jù)的分片怎么分,跑SQL的時(shí)候,怎么去結(jié)合分布邏輯去很好的設(shè)計(jì)SQL,這個(gè)可能是在接觸分布式數(shù)據(jù)庫(kù)的時(shí)候需要考慮的一個(gè)比較重要的問(wèn)題。

Q:兩個(gè)大表分布在不同的DN,做HASH,如何保證選擇正確的執(zhí)行計(jì)劃和高效率?

A:兩個(gè)大表分布在不同的節(jié)點(diǎn)里面,我們要進(jìn)行一個(gè)查詢(xún),如何提升它的效率。如果兩個(gè)大表,首先第一個(gè)來(lái)講,我們得搞清楚這些表進(jìn)行查詢(xún)的時(shí)候關(guān)聯(lián)的KEY有哪些。比如說(shuō)如果我們都是使用這一列進(jìn)行關(guān)聯(lián),那是不是可以在設(shè)計(jì)的時(shí)候就按照性能這一列進(jìn)行數(shù)據(jù)的分片,在進(jìn)行查詢(xún)的時(shí)候,就可以下推到每個(gè)DN節(jié)點(diǎn)來(lái)執(zhí)行,換句話(huà)說(shuō)每個(gè)DN節(jié)點(diǎn)的執(zhí)行層是并行的,沒(méi)有相互之間的交互,這樣效率在分布式的時(shí)候是最高的。

如果這個(gè)表查詢(xún)的SQL非常多,一張表有一兩百個(gè)字段,但是關(guān)聯(lián)的時(shí)候,有的是按照分布KEY進(jìn)行關(guān)聯(lián),有的不是按照分布KEY進(jìn)行關(guān)聯(lián),這個(gè)時(shí)候就得有一些取舍。要看一下,如果按照分布KEY進(jìn)行關(guān)聯(lián)效率會(huì)最高,而且可能會(huì)比不按照分布KEY的效率高不少,那么我們會(huì)選擇優(yōu)先的把我們業(yè)務(wù)里面用到的一些頻率比較高的,要求比較高的一些SQL優(yōu)先的按照那些SQL來(lái)設(shè)計(jì)表的分布方式。然后對(duì)于其他的一些SQL,對(duì)于那些JOIN的列進(jìn)一步建索引,提升查詢(xún)效率。

另外在寫(xiě)SQL的時(shí)候,盡量做到某個(gè)節(jié)點(diǎn)上進(jìn)行查詢(xún)的時(shí)候,能夠通過(guò)我們表達(dá)式的過(guò)濾掉一些無(wú)效的數(shù)據(jù)傳輸,這樣的話(huà)就可以保證一個(gè)相對(duì)比較好的效率。

Q:學(xué)習(xí)分布式數(shù)據(jù)庫(kù)有哪些知識(shí)要補(bǔ)充?從哪里開(kāi)始?A:至于說(shuō)這些數(shù)據(jù)庫(kù)知識(shí)有哪些需要補(bǔ)充,我覺(jué)得是這樣的,數(shù)據(jù)庫(kù)本身是一個(gè)比較古老的技術(shù),如果說(shuō)從哪里開(kāi)始,有機(jī)會(huì)的話(huà),從使用開(kāi)始就最好了。比如說(shuō)先做一些最簡(jiǎn)單的數(shù)據(jù)庫(kù)的使用,建表、生成數(shù)據(jù),最好有一個(gè)業(yè)務(wù)系統(tǒng)作為驅(qū)動(dòng),邊用邊學(xué),這樣上手更快一些。

Q:TBase代碼開(kāi)源了嗎?A:TBase的代碼已經(jīng)開(kāi)源,大家有興趣的話(huà),歡迎訪問(wèn):https://github.com/Tencent/TBase。TBase預(yù)計(jì)今年年中左右會(huì)重新推動(dòng)一個(gè)新的版本出來(lái),大家敬請(qǐng)期待。

以上是今天的分享和Q&A的解答,感謝大家的聆聽(tīng)。

TBase是騰訊TEG數(shù)據(jù)庫(kù)工作組三大產(chǎn)品之一,是在開(kāi)源的PostgreSQL基礎(chǔ)上研發(fā)的企業(yè)級(jí)分布式HTAP數(shù)據(jù)庫(kù)管理系統(tǒng)。通過(guò)單一數(shù)據(jù)庫(kù)集群同時(shí)為客戶(hù)提供高一致性的分布式數(shù)據(jù)庫(kù)服務(wù)和高性能的數(shù)據(jù)倉(cāng)庫(kù)服務(wù),形成一套融合完整的企業(yè)級(jí)解決方案。

<上一頁(yè)  1  2  3  4  
聲明: 本文由入駐維科號(hào)的作者撰寫(xiě),觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

    掃碼關(guān)注公眾號(hào)
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯(cuò)
    x
    *文字標(biāo)題:
    *糾錯(cuò)內(nèi)容:
    聯(lián)系郵箱:
    *驗(yàn) 證 碼:

    粵公網(wǎng)安備 44030502002758號(hào)