1. 程式人生 > >圖資料庫Neo4J

圖資料庫Neo4J

背景

  歷史上,多數企業級應用都執行在一個關係型資料庫上(RDBMS),近年來,隨著資料儲存技術的飛速發展,關係型資料庫在靈活性和可伸縮性方面不再處於壟斷地位。NoSQL 作為一組迅速崛起的資料儲存技術,用於解決關係型資料庫在多變的應用場景下的效能限制,目前包含如下幾種型別:

  • 鍵值型,如 Redis 或 Riak

  • 列型,如 HBase 或 Cassandra

  • 文件型,如 MongoDB 或 CouchDB

  • 圖型,如 Neo4j 或 GraphDB

  這些資料庫各有自己擅長的領域,都在恆昌有著非常廣泛的應用場景。尤其是圖資料庫,作為恆昌知識圖譜的底層儲存方案,是多方資料的知識融合及提煉後進行匯聚的場所,為恆昌豐富的產品線與資料技術間的承轉起著重要作用。

 

圖資料庫

簡介

  圖資料庫中的“圖”,取自數學中的一個分支——“圖論”。在圖論中,“圖”代表的是一種資料結構,形式上,其實就是“頂點”和“邊”的集合,用更為通俗地語言來講,圖通常具備如下特徵:

  • 由節點和邊構成;

  • 節點可以有屬性(通常以鍵值對的方式出現);

  • 邊可以有方向,並總是有一個開始節點和一個結束節點;

  • 邊也可以有屬性。

  圖資料庫就是利用圖的特性來對資料進行儲存管理,並對傳統圖的概念進行了擴充套件。越來越成熟的資料模型,使得利用事物(即“節點”或“實體”)及事物之間的聯絡(即“邊”或“關係”)來對各類業務場景進行抽象變得更加容易。也正因為圖資料庫基於圖論的理論和演算法實現,相對於關係型資料庫,它也更擅於處理網狀的複雜關係。

  圖資料庫有多種實現,它們通常都支援對圖資料模型的增、刪、改、查(CRUD)方法,並較多地用於事務(OLTP)系統中被應用系統實時訪問。圖資料庫所涉及的核心技術主要包括兩層:

  1. 底層儲存;大體上它們可以分為“原生圖儲存”和“非原生圖儲存”。原生圖儲存會針對圖的鏈式提取進行優化,在事務性方面會有較強的保障;非原生圖儲存,一般會將圖資料序列化,然後將資料儲存到某種特定的 NoSQL 系統(比如鍵值型或列型資料庫),甚至是其他通用的資料儲存中。

  2. 處理引擎;處理引擎的實現,在一定程式上依賴於底層儲存。原生圖儲存模型通常會使用“免索引鄰接”,這通常是指關聯節點在資料庫裡面是物理意義上指向彼此的;而很多采用非原生圖儲存模型的圖資料庫系統會選擇以分散式的方式實現,它們更適用於大資料量下的聯機分析處理(OLAP)。

  目前市場上常見的一些圖資料庫可以參考下圖 ,橫軸越往右表示其底層儲存更偏向原生圖的方式,縱軸越往上表示其計算引擎更傾向以原生圖的方式來處理資料。

 

Neo4j

 

  恆昌廣泛使用 Neo4j 作為知識圖譜底層圖資料持久化的方案,並基於其優異的事務能力對業務團隊提供實時的資料查詢能力,除此外還在 Titan、Gaffer 等分散式圖資料庫或計算引擎上有著深入的研究。Neo4j 是目前最成熟的圖資料庫之一,毫無疑問也是最流行的。它無論在事務、效能,還是安全性、可靠性等角度,都能比擬現存最優秀的資料庫系統,有些特性甚至更為優秀。下圖顯示了它在所有圖資料庫系統中的優勢。

 

 

  Neo4j 提供了對 ACID(原子性、一致性、隔離性、永續性)的完整支援,並且優雅地實現了“免索引鄰接”。這使其在處理 N 度關係的時候能夠“得心應手”,當伴隨著附加的處理條件時,優勢尤為明顯。以恆昌客戶在 Neo4j 中的資料模型為例來分析一次一度關係的提取,任意兩個有關聯的恆昌客戶及他們之間的關係在 Neo4j 中典型的物理儲存結構可以參考下圖。

0?wx_fmt=png

  將上面的案例簡單地擴充套件一下,從一個借款客戶出發,提取其周邊三層關係以內的聯絡人在恆昌是否有借款以及具體的借款狀態是非常有意義的,因為從社會網路分析的角度來講,這些資訊可以一定程度上刻畫該借款人的信用或欺詐風險。目前此類操作可以做到毫秒級響應(未優化的測試資料約為25毫秒左右),這正是因為 Neo4j 中每一層關係都是物理意義上的指標連線;相同的操作,在關係型資料庫裡面,需要基於聯絡人關係表分別進行一級、兩級、三級表關聯操作,並將取得的結果合併、排重,這組操作即使進行了有針對性的優化,仍舊非常耗時。

 

圖資料庫在恆昌的應用

 

  從資料規模來看,目前我們的圖資料庫已經融合了多方資料,包括業務系統主要產品線各階段的資料、使用者授權資料等。這些資料形成的實體規模已過億,所形成的關係更是多達數億。隨著恆昌產品越來越豐富,以及使用者對恆昌平臺越來越信任,這個資料還在持續高速增長;從資料產品來看,基於圖資料庫開發的知識圖譜正在發揮著越來越大的作用,目前已經上線或待上線的產品覆蓋了客戶失聯修復、反欺詐規則引擎、欺詐團伙調查等,近期還會覆蓋風險預警、獲客等方向。

資料科學領域有名名言叫“一圖勝千言”。圖資料庫的優勢在於能通過“實體”和“關係”這種簡單直觀的描述方法來表述現實世界中錯綜複雜的關聯關係。然而,圖資料庫呈現資訊的方式,並不限於簡單的節點和邊。它可以提供逐層挖掘的方式,引導使用者逐步深入分析各種關係;還可以快速及時地呈現實體之間最新的關係變化,為使用者積累新鮮的知識和經驗;也可以清晰地呈現複雜關係間的聯絡線索,為使用者判斷事件來龍去脈提供有效引導。此處,我們仍然以恆昌的客戶為例,參考下圖中的客戶徐某(因資料安全的原因,部分資訊作了塗抹,並對原有圖結構進行了簡化),如果僅考慮該客戶自己填寫的資訊,雖然我們也能看到一度關聯資訊,但完全看不出該結構會有什麼問題,也無法進行深入調查。

0?wx_fmt=jpeg

  當關聯資訊得到補充(相對於原來的進件聯絡人,補充了同事、鄰居、親屬、朋友等關係,還基於使用者授權資料進行了深度擴充套件)後,暫不考慮物品(如手機號、銀行賬號、地址等),僅考慮自然人,獲取徐某二度關係內同時在恆昌有借款行為的使用者,得到下圖(基於同樣原因資料有塗抹及簡化)的結果,該圖每一個圓都代表一位恆昌客戶,圖頂部的狀態說明了客戶當前所處狀態。仔細觀察左下角以徐某為中心的四個客戶(已用紅框標出),他們剛好是所呈現圖的最大完全子圖,符合圖論中團的定義。再看除徐某外的三個客戶:兩個逾期,一個被拒。如果徐某是新入圖資料庫的借款人,從數學模型的角度看,幾乎可以直接判定拒絕。因為符合這種狀態的團,是欺詐團伙或是組團代辦的機率非常大。

0?wx_fmt=jpeg

  到這時工作並未完結,如果有需要,可以基於圖中的關係嘗試與幾位客戶聯絡以進行深入背景調查證實,調查的結論可以融合到圖資料庫中形成資料閉環,直接改善後續自動化預警的結果。

 

風險事件預警

 

  儘管欺詐團伙調查能取得很不錯的效果,但因為其可能需要調查員隨時聯絡客戶或其周邊人群以驗證調查員的的推論,因此整體成本還是相當高的。為了解決這個問題,基於模型的風險事件預期就應聲而出了。如果說欺詐團伙調查是主動出擊,則風險事件預警更像是被動防禦。她隨時守護著恆昌的客戶群體,一旦有判定的風險事件就會警告相關方,必要的時候可以自動向調查員提請欺詐團伙調查。

  風險事件預警會通過模型生成一組類似上述欺詐團伙調查中出現的場景,但給每一個場景一個相對低一些的初始置信度,後期通過不斷地反饋迭代來優化置信度。當一個新客戶到來之後,首先會將其資訊整合到知識圖譜中。緊接著,該客戶會被規則引擎捕捉到,規則引擎會基於客戶資訊從知識圖譜中提取一組特徵,由該特徵決定了引擎首先會觸發哪些場景,而這些場景的結論可能導致規則引擎又觸發另外一組場景。在滿足特定條件下,最終結果輸出,如果有相應的風險事件被觸發則資訊會送達相關團隊。

  風險事件預警最有意思的地方在於,一個新客戶的到來,可能會導致一個早先客戶的風險事件被觸發。這主要是因為新客戶融入到知識圖譜中時帶進的新資料,可能會讓圖譜中的某些子網的結構發生徹底的改變。我們目前採用一組啟發式的演算法來擴充套件新進客戶的影響,效果顯著。這同時也意味著,風險事件預警並非只針對貸前風險事件,還會對貸後風險事件作為預警。比如觸發了某個老客戶的潛在逾期風險時,就可以引導相關團隊提前關注,在情況惡化前及時止損。具體的技術細節不再贅述。

 

失聯資訊修復

 

  眾所周知,網際網路金融的核心是風險控制。無論屬於何種風險,最終極的形態就是“人間蒸發”,行話即“客戶失聯”。首先,“失聯”是要儘量避免的。如果客戶奔著欺詐而來,那幾乎也註定了後續無法聯絡上,姑且讓我們稱此類失聯為“第一類失聯”;其次,“失聯”是無法完全避免的,主要是因為失聯的“成本”很低,很多客戶受到一點挫折就可能遊走在“消失”與“不消失”的邊緣。即使客戶自身“消失”的意願不高,換個手機號、搬個家、換個公司都有可能導致客戶及其聯絡人完全聯絡不上,讓我們稱此類除第一類失聯之外的為“第二類失聯”。原則上,如果反欺詐做得好,“第一類失聯”是不應該出現的。而對於第二類失聯,則恰恰是圖資料庫大展身手的地方。

  將圖資料庫應用於失聯修復是非常直接而自然的,因為圖資料庫的特點就是其在資料豐富的條件下,能非常方便地進行各類關係的提取。恆昌的失聯修復專案結合了知識圖譜(基於圖資料庫)及傳統的機器學習技術,前者作為修復策略的具體聯絡方式來源;後者作為策略有效性的評估依據。目前我們能做到失聯客戶實時修復,修復專員完成具體操作後會有相應的備註及日誌資訊,這些資料會被實時收集用於改進修復策略。本文僅拿眾多策略中較為容易理解的一條來略作說明,這條策略主要是從圖資料庫中提取和失聯客戶處於同一公司,且當前住址與失聯客戶接近的使用者作為修復中間人。雖然是一條簡單的策略,但深入考慮一下,會發現國內有很多規模不小的工廠會吸引周邊村子的人去工作,而這些村子可能本身規模也不小,這樣的話修復中間人不見得認識失聯人。因此這條簡單的策略背後會也會有一個啟發式演算法,通過公司/工廠的規模來調整當前住址需要匹配的粒度(比如,是到村、到組、還是得具體到門牌相鄰)。更進一步地,如果在此基礎之上,修復中間人和失聯人有過通話記錄往來或是有通訊錄關聯(事實的條件遠比這個複雜),就大幅增加了該修復中間人的置信度,甚至可以基於此條件在圖資料庫查詢過程中提前中止,直接返回相關結論。以上操作基於圖資料庫可以將資料一次取出再進行處理,基本是毫秒級響應,如果觸發了提前中止,耗時可能更短;但如果基於關係型資料庫,首先會涉及多張業務表的檢索、關聯;其次,還可能按照初次處理結果多次連線資料庫,造成資料庫資源的浪費。

 

獲客

 

  這部分主要談“開源節流”中的“開源”。網際網路金融的出現,加速暴露了中國長期以來以銀行為核心的金融體系形成的弊端。由於銀行獨特運營特徵,讓資金的融通出現了供給與需求較為嚴重的錯配現象,在銀行的金融體系中較為較為青睞的貸款客戶很多壓根都用不著貸款。而對於大多數真正需要借款作為資金週轉的人往往很難達到銀行所需的借款資質。

  圖資料庫在商品推薦場景下的應用已然非常成熟,但主要集中在電商行業。我們採用的方案有兩個步驟,第一步是自動識別優質客戶,採用 Bootstrap 方法,基於一組種子優質客戶進行多次迭代以擴充套件優質客戶。這個過程的特點是除了客戶自身屬性特徵,還會基於圖資料庫提取基於社會網路分析的特徵;第二步是基於圖資料庫挖掘較高置信度的優質客戶周邊人群,將滿足特定模式條件人作為潛在客戶,兩個步驟各自都有嚴格的評估標準以保準最終效果。

 

總結

 

  在實際的應用架構中,通常會混合使用多種資料庫,以利用它們各自的特點來建立一個數據生態系統。對於恆昌而言,業務系統的高效及事務特徵會讓關係型資料庫繼續出彩;大規模的使用者授權資料可能會讓我們在底層配上分散式的列式儲存或鍵值儲存庫;但迴歸根本,恆昌期望為客戶提供優異的財富管理及借款資訊諮詢與服務,就需要優秀的風險控制作保障。而這,恰恰也是圖資料庫能最大程度發揮價值的領域之一。我們長久以來踐行將“風險控制”作為平臺生命線,致力於以先進的金融創新技術護航平臺安全,以知識圖譜等最前沿的高新技術鑄風控之盾,勢必能打造一個安全、高效、使用者體驗好的網際網路金融平臺。

轉自 https://blog.csdn.net/TgqDT3gGaMdkHasLZv/article/details/78199666