原來雲資料庫也是有思想的…

騰訊雲+社群發表於2018-12-10

本文由一刻talks發表

邵宗文,騰訊雲資料庫專家副總監。十餘年資料庫從業經驗,2009年加入騰訊,曾負責騰訊網,新聞客戶端,快報,視訊,財經,體育等資料庫平臺部署、規劃及運維支援工作。本文是邵宗文在一刻talks第100場演講局「先見·未來大會」上的演講實錄。每個行業對資料庫有不一樣的要求,雲上資料庫通過智慧化運維,資料會越來越多,準確度也越來越高,模型也會越來越精準。騰訊雲上資料庫如何滿足使用者多樣化的訴求?一起來聽聽聽吧。

1

為使用者提供資料庫服務

大家下午好,我是一刻talks講者邵宗文。我今天給大家帶來的是關於雲上資料庫及智慧DBA的分享。

我們是怎麼給使用者很好的資料庫服務的?

首先我們會給客戶按模組劃分,比如它是電商的或者是金融的客戶,因為每個行業它對資料庫的要求是不一樣的。金融的客戶,他會要求資料庫的強一致性,對吧?資料是不能丟失的。如果說是一些電商,它有一些雙11的活動,它可能會要求資料庫有瞬間的這種支撐高併發的能力。

然後首先通過第一步,先讓使用者能夠遷移上雲,並且能夠在我們的雲上直接進行資料的快速傳遞和搬遷。第二,通過智慧化的一些運維,現在還在持續不斷做,因為智慧不斷進化,隨著你資料越來越多,你的準確度會越來越高,你的模型會越來越精準。

我們幫助客戶支撐這麼大的資料量之後,使用者可能會有更多的想法。

比如說這些資料能不能進行商業的分析,對吧?能不能訂閱到他自己的一些商業專用的資料庫裡面去,挖掘出這些資料的價值。有時候為了時效,他想能不能延遲比較低一點,可能幾秒,幾十秒就能把我的這些資料傳到我的商業資料分析裡面去,可能能做到實時的一些推薦,幫助客戶能夠在這種競爭激烈的這種行業中能脫穎而出。

另外我們也能看到雲也是一個生態,它不光是說我把資料庫做好就OK了,很多使用者可能是需要這種生態來幫他解決問題。比如說有些金融客戶還有審計的需求;有些遊戲客戶也需要通過審計來查詢,有沒有人在盜用、盜取他們的資料;有一些客戶可能需要這種相關的快速備份和恢復,比如一些遊戲要不斷地升級它的版本的時候,需要快速的備份。

另外我們也需要支援豐富的多型別資料庫。像我們用到一些遷移的亮點,就是能支援資料庫的多種型別。因為資料庫也是不斷在升級迭代版本,所以說雲的話才有這樣的人力去做這樣的事情。否則像一家小公司它可能開發人員也非常少,如果還去投入去做這種維護各種版本升級的工作,其實是得不償失的。

2

資料遷移到騰訊雲

我們能支援有使用者自己在本地機房遷移過來,也可以通過使用者說我從其他雲上遷移過來。因為大家可能擔心在一個雲上,可能萬一出問題,我的資料什麼都沒有了。

另外我們有自建的,因為剛開始可能使用者說我可能對你的雲資料庫不太瞭解,對吧?我原來是什麼樣的,我現在放下來我還是什麼樣,我用CDM自建,但是自建的過程中可能他感覺到,就像我拜訪一個客戶的時候,他感覺到你的訂閱功能非常好用,如果我自己去搭,或者我自己去維護的話,我的成本是非常高的,可能需要投入兩個研發同學去做這樣的一些元件。

然後還有跨區。大家也知道我們騰訊是有非常多的海外機房,或還有很多像東京,像其他國家這種資源,很多的公司要出海,他如果是自己去建,成本也是非常高。所以說通過我們遷移可以實現整個世界的打通。

3

資料庫審計

使用者遇到審計的問題,首先你要審計記下來,儲存量也是非常驚人的,就是大家知道每個請求的操作,正常情況下是記不住的。它可能只記一些慢日誌,或者只直接寫操作,我們要把這讀寫全部記下來。這個儲存成本是要求非常高,需要一個分散式的儲存來支撐這個量。

我們也是有這樣的,騰訊基於這樣的一個技術背景,其實完全能夠幫助到使用者去解決這樣的儲存問題。幾十億條、幾百億條資料,我要查一個什麼狀態的資料,我能不能快速地去查到,這個也是需要我們這個系統,能夠強勁地支援。通過我們研發同學的不斷努力,也是實現了這樣的一個快速的響應,在30億級的資料量情況下,差不多6到8秒的響應。

審計應用場景,就是國家三級甲等的一些要求,還有一些是技術人員的風險,另外還有一些技術的這種SQL隱碼攻擊的問題。

這是一個大概的簡單的一個介面,就是可以看到我們對誰做了哪些SQL命令,可以進行一個查詢,並且可以快速地知道都有哪個時間點,哪個使用者做的這樣操作,避免了以前出現沒有這種審計情況下,我們需要大海撈針一樣去找。

然後可能是某個同學誤操作了,他可能不承認,現在的話有這樣的一套系統能幫助你快速的去尋找這些痛點。

然後還有支援很多命令,比如說某個ID的話,我還要知道超過多少毫秒的到底有多少,這樣可以幫助它可以解決一些慢日誌的問題。

4

資料訂閱

現在很多公司對資料重視起來。我們的資料訂閱,針對使用者可以做可配置化,他說我可以需要訂閱哪些庫,哪些表,因為有些全訂閱也沒有必要。基於我們通用的一些像,可以把我們的資料訂閱到Kafka,Kafka是一個非常通用的資料的中間儲存,你可以通過Kafka去消費到你的各種相關的一些商業的資料庫裡面去。

我可以在資料庫做一個操作,然後通過我的資料定義功能,馬上Kafka的主題就收到了我這個資料庫的Insert操作。這樣的話可以根據這種固定的格式,我可以把這個資料轉到比如說像Redis,對吧?我可以只寫一個資料庫,我就可以操縱我的中間快取,或者我通過我的資料庫直接可以到我的資料的倉庫,而不需要說我還要再額外的去做很多額外的成本,這是我剛才說的,就是基於通過我的對資料庫的增刪改查,去影響到我的快取,降低開發者的這種縮短開發的一些工作內容。

另外還有資料訂閱的別的場景,就是使用者可以通過,比如說我沒有在你的雲上資料庫,但我可以通過自建遷移,然後遷移到你這個資料庫,然後在這個資料上去開啟我們的這樣的一個訂閱。對已有的資料庫,我又不想在我主庫上影響效能的話,你可以再從庫上,我們也可以進行這樣資料訂閱。外部的,這種通過我們的遷移工具,然後可以通過外部雲上遷到我們這,然後我們也可以幫他實現這樣一個資料的功能。

5

智慧DBA

最後我們現在結合本次主題的亮點就是智慧DBA,因為我剛才說到了,我們現在雲上有大量的這種使用者業務,就是說有非常多的使用者業務,然後可能有近百萬家的企業在雲上。

如果說讓使用者進來給他的很多的資料是比較抽象的,比如說多少毫秒的延遲,多少的慢日誌數,其實使用者是無感知的,因為很多使用者是小白使用者,他可能會想到能不能告訴我,我整體這個業務現在質量得分是多少,對吧?0到100是滿分,我現在是90分,我可能很開心,我的業務是穩定的,如果說50分是不是我的業務就有問題了,我得查一查是什麼原因。

所以說我們去做這樣的一些智慧方向,就是把所有的大量的資料,可能很多維度資料去做這樣的質量得分。然後另外我們會把這些庫表,就是使用者經常會遇到這些問題,我們會提前去分析。

可能有些使用者說我之前SQL語句什麼都沒改過,為什麼我現在變得非常慢,那我可能會說有一個很好的比喻告訴他,就是你剛開始是個小孩的時候,你這件衣服是夠穿的,對吧?但你這個孩子是在不斷成長,你的業務也在不斷成長,可能原來一張表只有不到100萬的資料,現在一張表已經有1000萬的資料,這個衣服已經無法承載你這個發展,所以說你的SQL語句雖然沒變,但是你的業務資料量發生了變化,所以你就成為慢日誌了。所以你要去進行優化。

另外還有一個問題就是使用者說,我想知道比如說一些企業會做一些預算,我到底明年會用多少你的資料量,或者你的訪問量會有多少?我們通過AI,我們可以跟進使用者,比如說半年內的資料,我可以預測出來它未來半年或者未來幾個月,它的資料量可能會達到多少,或者它的訪問量比如說會比現在翻多少倍,這樣使用者大概對未來的訪問量有預知的話,他可以提前做好一個規模的預算。

這個其實可以看到,通過用質量得分的形式,就讓使用者知道我的訂單模組,購物模組目前是一個什麼樣的情況,如果是90分,看看還有哪幾個是影響他的,大概他是什麼原因。

然後另外就是我們自己在不斷的嘗試一些demo,我們會做一些模型出來,質量得分,然後告訴這可能是什麼原因,是cpu過度,可能是一些複雜SQL,還有一些其他的維度、碎片、索引是否合理。

然後另外我會對這種死索,就是資料庫經常會遇到問題,也會進行智慧的分析。相當於使用者只要知道我的得分,然後順藤摸瓜,大概就能知道自己的問題,然後還能知道自己對應的請求SQL語句的問題。

今天我的分享就到這,然後之前我說的很多像智慧化的這種資料,其實在騰訊已經非常多的在去推廣起來,如果大家能夠儘快的去應用我們雲的話,可以節約很多的時間,像我們的一個大客戶,就三年上市的某團,大家也看到了,他就是在我們雲上,基於我們的雲上的這種基礎服務,得到了一個快速的發展。今天的分享就到此結束,謝謝大家。

此文已由作者授權騰訊雲+社群釋出

相關文章