1. 程式人生 > >大規模知識圖譜資料儲存實戰解析

大規模知識圖譜資料儲存實戰解析

本文轉自公眾號PlantData知識圖譜實戰(ID:KGPlantData),本文摘錄自上海海翼知資訊科技有限公司胡芳槐博士4月14日在北京理工大學分享的《大規模知識圖譜資料儲存》PPT。

作者對知識圖譜的儲存進行了全面的介紹,內容包括:什麼是知識圖譜,知識圖譜的適用場景,知識圖譜資料儲存的幾種常見方式和最佳方案,知識圖譜中的時態資訊及其儲存實現,結合例項說明如何利用圖資料庫進行資料儲存。

1. 什麼是知識圖譜

我們的現實世界中有多種型別的事物:

圖片描述

事物之間有多種型別的連結:

圖片描述

而知識圖譜即用來描述真實世界中存在的各種實體或概念,以及它們之間的關聯關係。

其中:

  • 每個實體或概念用一個全域性唯一確定的ID來標識,稱為識別符號;
  • 每個屬性—值對用來刻畫實體的內在特性,而關係用來連線兩個實體,刻畫它們之間的關聯。

從抽象層面看,本體最抽象,其次是知識庫,最後才是知識圖譜,因此本體與知識圖譜的區別在於以下三點:

  • 知識圖譜並不是本體的替代品,它是在本體的基礎上進行了豐富和擴充,這種擴充主要體現在實體(Entity)層面;
  • 本體中突出和強調的是概念以及概念之間的關聯關係,而知識圖譜則是在本體的基礎上,增加了更加豐富的關於實體的資訊;
  • 本體描述了知識圖譜的資料模式(schema),即為知識圖譜構建資料模式相當於為其建立本體。

1.1 知識圖譜的應用

知識圖譜已經在人工和商業智慧方面有了一系列的應用,包括聊天機器人,臨床決策支援等。

圖片描述

同時為了應對大資料應用的不同挑戰,藉助知識圖譜,實現不同的業務需求。

圖片描述

2. 知識圖譜的適用場景

我們看到知識圖譜有了如此多的應用,不過它最適合處理還是這些資料:

  • 關係複雜的資料;
  • 型別繁多的資料;
  • 結構多變的資料。

作為資料融合與連結的紐帶,知識圖譜整合結構化、半結構化和非結構化資料,擁有如下的消費和資料場景。

圖片描述

但知識圖譜不是銀彈!需要我們依據不同的問題尋找合適的方法,不要為了用知識圖譜而用知識圖譜。

知識圖譜的不適用場景如下:

  • 不適用的資料場景:

    • 通常的二進位制資料
    • 日誌資料
    • 流式資料
  • 不適用的消費場景:

    • 資料統計
    • 資料計算

這些不適用場景都需要藉助其它工具儲存和處理,同時結合其它工具和方法使用,最終與知識圖譜進行資料鏈接。

3. 知識圖譜的儲存

通過上面的內容,我們瞭解到知識圖譜最適合處理關聯密集型的資料,因此首先需要存放的是圖譜中的節點和邊的資料;知識圖譜基於圖資料庫的優點,能夠方便的存放這一類關係型的資料,對於大量其他型別的資料我們如何處理呢?

圖片描述
圖片描述

由此可知知識圖譜資料的儲存不等於圖資料庫。

接下來本文重點介紹知識圖譜資料儲存的幾種常見方式。

3.1 知識圖譜資料儲存的幾種常見方式

知識圖譜的儲存並不依賴特定的底層結構,一般的做法是按資料和應用的需求採用不同的底層儲存。你甚至可以基於現有關係資料庫或NoSQL資料庫進行構建。我們來列舉一下幾種常見做法:

  • 三元組表(S,P,O)

類似RDF儲存結構(下文會進行介紹),以元組為單元進行儲存。語義較為明確。
問題:大量自連線操作的開銷巨大。

圖片描述
  • 屬性表:屬性相似的主語聚為一張表

類似關係型資料結構,每一條資料代表一個實體,每一列代表一個屬性。
問題:1.RDF靈活性(高於一階的關係查詢很複雜);2.查詢時必須指定屬性,無法做不確定屬性的查詢。

圖片描述
  • 垂直分割:以謂語劃分三元組表

根據屬性的不同建立資料表,資料結構較為清晰。
問題:1.大量資料表;2.刪除屬性代價大。

圖片描述

以上這些方案都會有各自的優缺點,在實現時需要根據不同的應用場景來進行選擇,並設計索引、約束等方法來解決查詢效率問題。

目前圖結構儲存有兩種通用的儲存方案:RDF儲存和圖資料庫(Graph Database)。下圖為兩種儲存在http://db-engines.com/上的發展趨勢:

圖片描述

可以明顯地看到基於圖的儲存方式在整個資料庫儲存領域的發展飛速。

3.1.1 RDF儲存

RDF儲存亦稱三元組儲存(triplestore),它是專為儲存三元組形式的資料而設計的專用資料庫,通過六重索引(SPO、SOP、PSO、POS、OSP、OPS)的方式解決了三元組搜尋的效率問題。

其優點是:

  • 三元組模式查詢(triple pattern)的高效執行;
  • 任意兩個三元組模式的高效歸併連線(merge-join)。

但缺點也很明顯:

  • 六重索引意味著6倍空間開銷,如果是 (S, P, O, C) 四元組呢?
  • 更新維護代價大。

現在越來越多的RDF資料庫通過列式儲存的方式來對三元組進行儲存,進一步提高六重索引下的查詢效率。

3.1.2 圖資料庫

圖資料庫的結構定義相比RDF資料庫更為通用,實現了圖結構中的節點,邊以及屬性來進行圖資料的儲存,典型的開源圖資料庫就是Neo4j。

這種做法的優點是資料庫本身提供完善的圖查詢語言、支援各種圖挖掘演算法,但圖資料庫的分散式儲存實現代價高,資料更新速度慢,大節點的處理開銷很高。

3.2 大規模知識圖譜儲存最佳解決方案

圖片描述

指導思想仍舊是之前提到的“資料思維”和“No Size Fits All”,整體原則歸結為以下六點:

1.基礎儲存

  • 可按資料場景選擇使用關係資料庫、NoSQL資料庫及記憶體資料庫;
  • 基礎儲存保證可擴充套件、高可用。

2.資料分割

  • 屬性表:依據資料型別劃分
    • 基本型別:整數表、浮點數表、日期型別表、…
    • 集合型別:List型表、Range型表、Map型表、…
  • 大屬性單獨列表:例如數量超過10M的屬性單獨列表。

3.快取與索引

  • 使用分散式 Redis 作為快取,按需對資料進行快取;
  • 對三元組表按需進行索引,最多情況下可建立九重索。

圖片描述

4.善於使用現有成熟儲存

  • 使用ElasticSearch實現資料的全文檢索;
  • 結構固定型的資料可使用關係資料庫或NoSQL。

5.對於非關係型的資料儘量不入圖儲存,避免形成大節點

  • 非關係型的資料,使用適合的資料儲存機器進行儲存,通過實體連結的方式實現與圖譜資料的關聯。

6.不直接在圖儲存中進行統計分析計算

  • 對於需要進行統計分析計算的資料,需要匯出到合適的儲存中進行。

4. 知識圖譜時態資訊及儲存

眾所周知,資訊是有時態的,時態特性是資訊的客觀存在,同時知識和資料是不斷更新的,這些變化的時間點同樣代表了有意義的資訊。

時態資訊的需求與技術一直伴隨著資料庫技術的發展而產生和發展。下圖為時態資料庫與其他型別資料庫相比的發展趨勢:

圖片描述

可以發現時態資料庫的發展趨勢遠遠高於與其他資料儲存方式。

知識圖譜中的時態資訊包含以下四個方面:

  • 事實的生成時間;
  • 某事實的有效時間段;
  • 某一物件在特定歷史時刻的狀態;
  • 知識圖譜在過去特定時間的版本。

下面的視訊為利用PlantData知識圖譜資料智慧平臺,查詢出的北京小桔科技有限公司(嘀嘀打車)擁有時態資訊的企業創投知識圖譜。

圖片描述

結合最近很火的一部電視劇《人民的名義》我們來理解一下知識圖譜中的時態資訊。

圖片描述
圖片描述
圖片描述

知識圖譜時態資訊儲存實現的設計原則如下:

圖片描述

5. 使用圖資料庫進行資料儲存

在選擇圖資料儲存的指標上,需要考慮以下幾個方面:

  • 資料儲存支援;
  • 資料操作和管理方式;
  • 支援的圖結構;
  • 實體和關係表示;
  • 查詢機制。

不同的圖資料儲存之間的區別,可至公眾號PlantData知識圖譜實戰(KGPlantData)回覆資料儲存獲取完整PPT。

此處選擇圖資料庫進行知識圖譜資料的儲存:

  • 應用場景:創投知識圖譜;
  • 資料維度:創投知識圖譜描述創業企業與投資機構之間以投資為主線的多種關係,包含:企業產品、創始人、股東、高管、行業、細分行業、新聞、投融資事件、關注度、活躍度、招聘等方面;
  • 應用目標:基於創投知識圖譜及平臺分析功能,投資機構能夠完成創業企業、行業調研及追蹤,為投資進行輔助決策;創業企業也可以分析熱點投資賽道、關注行業動態及競爭對手動向。

初創企業相關的資料包括:

  • 工商註冊資訊
  • 企業產品
  • 創始人/股東/高管
  • 所屬行業/領域
  • 投融資事件
  • 專利/招聘/訴訟/失信
  • 新聞/社交網路資料
  • 產品活躍資料

關係型資料(通過關係形成網路):

  • 企業與創始人
  • 企業與投資人(機構)
  • 企業與產品
  • 企業與高管
  • 高管與高校

關係型資料的儲存方法:作為實體存入知識圖譜,通過它們之間的關係形成圖譜網路。

結構型資料(與主體進行關聯,但不會再續延伸):

  • 企業與專利/招聘/訴訟/失信
  • 企業與新聞
  • 企業與投融資事件
  • 企業產品活躍資料

結構型資料的儲存方法:作為記錄型資料存入合適的儲存中,通過連結與圖譜中的實體進行關聯。

屬性型資料

  • 企業的工商註冊中基本資訊
  • 企業的所屬行業
  • 創始人的基本資訊
  • 產品的基本資訊
  • 投資機構基本資訊
  • 高校基本資訊

屬性型資料的儲存方法:作為實體的數值屬性存入知識圖譜。

時態型資料

  • 企業的成立時間
  • 高管的任職時間
  • 投資關係的發生時間
  • 產品的釋出時間

時態型資料的儲存方法:使用基於知識圖譜上的時間儲存中介軟體進行儲存和查詢處理。

Schema定義:概念選取

  • 企業
    • 創業企業
    • 投資機構
  • 人物
    • 投資個人
    • 高管
    • 股東
  • 產品

Schema定義:關係和屬性的定義

  • 關係的定義
    • 企業與創始人的關係
    • 企業與投資人(機構)的投資關係
    • 企業與產品的所屬關係
    • 企業與高管的任職關係
    • 高管與高校的教育背景關係
  • 屬性的定義
    • 企業的屬性
    • 人物的屬性
    • 產品的屬性

使用圖資料庫進行資料儲存一般過程:

  1. 匯入實體,概念(Label)
  2. 匯入實體屬性
  3. 匯入實體間關係

最佳實踐過程:

  1. 分批匯入,並使用Index提升匯入時查詢效率
  2. 按資料的型別、屬性不同準備匯入檔案
  3. 資料主鍵維護,使用Constraints
  4. 儘可能保證匯入資料格式正確

總結一下,複雜應用場景下知識圖譜資料儲存的原則:

  • 關係型資料:使用圖形資料儲存;
  • 關聯型資料:作為記錄型資料存入合適的儲存中,通過實體連結與圖譜中實體關聯;
  • 屬性型資料:作為實體的數值屬性存入知識圖譜;
  • 時態型資料:使用基礎儲存上的時態處理中介軟體進行儲存與查詢。

PlantData知識圖譜資料智慧平臺以“連結資料 洞察價值”為理念,致力於知識圖譜實戰技能的挖掘與應用,為資料分析師、資料工程師、行業愛好者等從業人員提供知識圖譜資料集及工具,知識圖譜文章投稿郵箱:[email protected]

圖片描述