本文根據邵宗文老師在〖2019 Gdevops全球敏捷運維峰會-廣州站〗現場演講內容整理而成。
講師介紹
邵宗文,騰訊雲數據庫產品副總監。十餘年數據庫從業經驗,2009年加入騰訊,曾負責騰訊網、新聞客戶端、快報、視頻、財經、體育等數據庫平臺,部署、規劃及運維支持工作。06-09年曾任新浪數據庫專家、數據庫平臺主管,有非常豐富的海量大數據經驗。
分享概要
1、圖數據庫市場分析
2、圖數據庫應用場景
3、圖數據庫的優劣
大家好,非常榮幸今天跟大家分享圖數據庫的場景及展望。首先我想做一個調查,在座有哪些同學用圖數據庫的?看來就只有幾個同學使用了,那我這次的分享會比較有價值,能讓大家知道圖數據庫到底是什麼,以及圖數據庫能做什麼。
一、市場分析
首先大家可以看一下,這是一個調研報告,目前世界一百強企業使用圖數據庫的比例。金融行業用圖數據庫的特別多,因為金融反欺詐、金融風控可以用圖來降低損失。第二個行業是軟件,像Oracle、SQL Server裡面都會帶有一些圖數據庫的功能。另外像零售,物流,電信行業也會用圖數據庫解決一些成本問題或是物流的最短路徑問題。還有一些醫療行業,比如一個患者可能有很多疾病,可能有些藥之間會有相互作用,還有吃的飲食和藥也會衝突,這些用圖數據庫都能比較好地去分析處理。
然後我今天主要會圍繞圖數據庫的潛在市場是什麼樣,以及相關場景,包括圖數據庫的優劣,跟傳統數據庫有什麼樣的差別做分享。
這個是各種數據庫軟件評比網站DB-Engines的一個走勢圖。大家可以看到,在裡面圖數據庫的增速從2013年開始一直是最快增長的數據庫分類,像數據庫頂尖大會如VLDB也是圖數據庫的相關論文數能排到第二。
圖數據庫增長非常快,並且還有很多細分領域,標紅的是研究比較深入或者用得比較多的,作為研發同學或者技術同學也想知道這麼多細分的數據到底我學哪一個會比較好?或者哪個對我就業或者個人提升有價值?
這是一個github的starts數,包括軟件的版本更新進展。
像Neo4J已有千萬級的下載量,增速非常快,有星星之火可以燎原的勢頭。
同時大家可以看到數據庫的巨頭也在加大對圖數據庫的投入,從2017年亞馬遜發佈了圖數據庫Neptune,SQL Server也是在2017年做了rc1發佈,引入了圖數據庫的支持,還有Oracle、華為、阿里雲螞蟻金服都做了圖數據庫。騰訊也在近期推出了圖數據庫引擎柏拉圖(Plato)。
Plato:https://github.com/Tencent/plato
看到國內外巨頭都在搶灘圖數據庫這個陣地,圖數據庫的機遇是在什麼地方呢?它其實有點跟大數據行業的發展比較接近,像大數據的行業規模增長從2017年170億到現在900多億,增速是非常快的。在非關係型數據庫裡面,複合增長率也是將近40%左右。
同時我們也看到國內的大數據增長勢頭也是快於國外,我們能看到在目前存量市場的數據量隨著5G或者隨著後面相關的數據越來越多,這個需求量會急劇上升。
大數據整體硬件成本將近30%,每個企業都會有自己的成本考慮,包括騰訊也是,我們之前推的柏拉圖就是為了降低成本,估計很多其他企業也會出於對硬件成本的考慮會嘗試用圖數據庫來替代。
隨著萬物互聯,數據爆發帶來了圖數據庫的增長機會。隨著非結構化數據數據越來越多,所以這塊大家不用擔心說學了圖數據庫沒有用武之地。
二、應用分析
剛才說的都是一些市場的機會,我們在一個行業,一個公司,我如何來用圖數據庫呢。可以參考下圖數據庫像Neo4J自帶直觀性的展示,一圖勝過千言萬語,很快速能知道各個人的屬性關係以及聯繫。
剛才說了一些圖數據庫的場景,我們來看一下到底圖數據庫有什麼特點。
首先它提供了一個更好的交叉性能,原來可能大家發現在幾百萬、幾千萬的join操作還能勉強跑下來,隨著現在萬物互聯,可能隨便一個手環、智能手錶都有上億人的設備,你要跑一些join操作基本跑不出來了,圖數據庫其實可以很好解決這樣的問題。
第二,圖數據庫也可以找到更多的關係,包括物與物、物與人、人與人之間的關係,這也是傳統數據庫無法提取的問題。還有一些結構的靈活性,比較好添加這種Schema。
在圖數據庫用比較多的先是社交跟金融領域,社交領域用在什麼地方?比如好友推薦,看過了這本書或者看過了這個電影,然後其他也看過這個書和電影的人都會看哪些書比較多,可以把對應的書和電影推薦出來。
同時一些網絡的運維IT服務可能有設備上萬臺,車聯網之後可能汽車也會上千萬輛,汽車與汽車之間,人與汽車之間的關聯也會越來越多,還有金融風控,及時找到欺詐、詐騙等相關的異常。
金融風控在傳統數據庫無法很好解決的問題,比如員工和親屬、員工與客戶、客戶之間的關係,還有業務合規的關係,這些都是非常複雜的關係。
可能用這個圖看得比較明顯,通過這個圖我知道這個客戶對公、對私、對員工及相關的管理,緯度特別多,很多統計數據出來。如果用傳統的數據庫找裡面的規律很難找,圖數據庫可以很簡潔明瞭地知道都集中在哪幾個類似客戶上或者有員工頻繁會跟他的親屬進行轉賬關係或者有一些深度資金往來,這樣可以顯示出非常大的價值。
這是另外一個基於隱藏的例子,有些人幕後黑手控制了很多公司或者控制了很多集團,你通過圖數據庫可以看到具體是某一個人或者某一個真正的公司在控制、操縱相關公司的行為。
這是一些黑產的例子,像一些挖掘的效果及擔保關係挖掘效果,可以快速知道這個人有沒有問題,或者這個黑產有沒有一些集中的特徵。
另外我再舉個例子,比如辦一個活動,我需要找出一些潛在對這個活動議題的興趣愛好者,通過這種圖可以很好知道用戶所匹配的相關信息,如誰參加過類敏捷大會或者IFOQ的,可能會來參加騰訊數據庫技術大會。
上面的截圖案例是通過cypher語言實現的,通過興趣、參會來找特徵。
我們另外也想知道這些活動或者領域裡哪些是被大家關注的專家、公眾人物或者所謂的超級大V,可以通過圖快速知道集中在某些人身上,我們可以快速找到這些專家幫我們做評價或者做相關的事情,這也是圖數據庫所擅長的事情。
三、優劣對比
說了那麼多,大家可能比較感興趣了,那我們接著討論圖數據庫的學習成本。我做一下簡單介紹,圖數據庫可能能做到像一些單向、雙向的關係,如我可能喜歡這本書,別人還有誰喜歡這本書,喜歡這本書的人都有誰,這類人還會經常看其他什麼書,圖數據庫很容易分析。另外,圖數據庫可以做在線可視化。
但目前的缺陷還是有不少,如大量導入的時候可能基於事件、條數太多,會產生性能不足。另外不適合做二進制文件導入。同時併發性能也比較弱,像MySQL在調優情況下能跑到每秒上百萬的請求,而圖數據庫可能停留在幾千。
另外圖數據庫比起MySQL來說相關的書籍會偏少,不利於大家快速學習掌握。有一些書是翻譯的兩三年前的書,所以在學習資源上明顯弱於MySQL的書。另外一些文檔還有在線問題的回答也是明顯少,大家只能通過谷歌上可能搜到一些,但在國內相關檢索的內容偏少。
這是一個用Neo4J舉的例子,大家可以在官網鏈接上找到,在圖的領域裡可能你看到的是比較是和MySQL的交互關係。
原來我們要查詢這張表裡的字段,右邊的其實也是差不多,滿足這個條件反饋一個什麼樣的字段。第二個可能稍微有一些排序,它其實也支持一些排序的操作,其實感覺差不多。第三個是基於一些like的操作,也有不錯的效果。
看看接下來的,左邊可能大家經常會發現這樣的SQL越多之後,數據裡面的關係會越來越亂,有的可能一個屏幕的SQL都寫不下。右邊,我剛才說了它顯示得像在描述一句話,比如我有什麼產品,然後它的訂單被哪些人所購買,之後的產品名或者公司名,就是這種比較偏樸實一點的,相當於這種描述語。右邊是這樣的,你可以匹配這種相關的語言,比之前的數據庫簡化很多。
四、未來展望
為什麼推圖數據庫以及圖數據庫對我所在行業有什麼幫助,大家應該通過上述整體內容有一個大概的瞭解,並且大家也看到了各個行業比較領先的公司已經在用圖數據庫做各種創新,提升他們的服務品質或者整體公司的影響力,所以希望能有更多技術同學一起來學習圖數據庫。
>>>>
Q&A
Q1:老師,剛剛你介紹了很多關於圖數據庫,有很多收穫。想問一下,圖數據庫分佈式概念或者高可用相關的有沒有分享?
A:如果看Neo4J單機版也是能跑到40億的頂點和邊,你用分佈式是想解決單機容量不夠的問題還是解決高可用的問題?因為高可用,可能目前用圖的業務很少有真正跑在生產環節,更多是偏一些數據分析、偏非實時,做一些統計性的,所以我不知道你的擔心是它的單機扛不住還是高可用?
追問:都有可能,一個是單機的性能情況,一個是高可用問題。
A:單機的話,類似於我們現在的新硬件,比如在雲上服務器的內存普遍單機能達到700多G內容,我相信大部分的企業單機配置其實都能cover它的數據量。之前如果擔憂單機性能扛不住,用雲就可以解決問題。高可用性的問題,可能這塊確實目前也是一個問題,就是運維這個圖數據庫診斷定位還是有很多欠缺,包括怎麼把一些相關的數據做實時的導出和恢復,這塊都挺有難度的。現在剛剛起步,需要大家一起來推動,所以使用的人數越來越多,可能參與的人一起去貢獻穩定性、貢獻備份、恢復等等,人的能力也會越來越多。你可以看一下我們開源專柏拉圖的數據庫,幫助我們不斷地完善。
Q2:剛才提到多表查詢,在上面我也看到圖數據庫有一個非常大的優勢就是把這東西展現得非常簡單和明顯,多表查詢的時候圖數據庫的性能怎麼樣?
A: 它本身的設計,比如它所有關係已經建好,傳統數據庫做大量join時會產生很多大的臨時表,導致吞吐變得很慢,圖數據庫會做天然的嵌套,所以我感覺圖未來在數據越來越大爆發式的情況下它的優勢會越來越明顯。
Q3:老師,我想問一下圖數據庫知識圖譜的時候,它的查詢前後查找,這兩個性能的對比哪個好?
A:這得看各自業務的情況,這也不太好說。
追問:我們之前在顯示上就很危險,對用戶顯示得很好,在性能上神經網絡如果太深了,那性能就好慢。
A:你說的是基於AI跟圖的差異是吧?上次好像分享的時候有人也說基於AI的圖,如果真去研究AI,它基於數據,它需要大量的數據訓練模型,得到這個模型之後再拿一些測試題來反饋出你要的玩法。圖非常實時,你的東西就在整個結構體系裡,快速所見即所得,不需要花很多時間訓練,而且不斷升級模型,所以它很靈活。當然在一些精度要求下,可能它比AI效果更好,因為它直接反應真實數據,你這還是在數據跟數據間找規律的模型。
Q4:我想問一下圖數據庫的執行速度,比如我定位前後查找的數據,我有一個GB。
A:這隻能看你具體的數據量和查詢句式,這沒辦法,我也不清楚你的硬件,所以這很難回答到底能執行多快,只能是你自己去試。我個人建議,以前圖數據庫為什麼很難大家用起來,就是因為它需要太多的大內存還有大容量。現在隨著雲的到來,這種大內存大容量可以觸手可及。可能你就是想分析一兩個月用,可能用完就退了,其實可以很好解決成本問題。我感覺有了雲之後,圖數據庫的就越來越方便,更方便大家使用,看到效果。因為有效果之後,能幫助企業更快地找到怎麼及時收穫、體現效果,反正我感覺這是很有幫助。
閱讀更多 dbaplus社群 的文章