1. 程式人生 > >圖數據庫Neo4j在GIS系統的應用

圖數據庫Neo4j在GIS系統的應用

圖數據庫;gis

1. 概述

1.1. 圖數據庫簡介

圖數據庫(Graph Database)是基於圖論實現的一種新型的NoSQL數據庫。他的數據存儲結構和數據的查詢方式都是以圖論為基礎的,圖論中圖的基本元素為節點和邊,在圖數據庫中對應的就是節點和關系。

在圖數據庫中,數據與數據之間的關系通過節點和關系構成一個圖結構並且在此結構上實現數據庫的所有特性,如對圖數據對象進行創建、讀取、更新、刪除(Create、Read、Update、Delete,簡稱CRUD)等操作的能力,還有處理事務的能力和高可用性等。

1.2. 應用案例

從系統科學的視角來看,世界是由各種系統構成的,而系統由由系統的各個組成部分機器之間的聯系組成。從這個層面,便能直接的將系統及其之間的聯系映射為數學圖論中的結點與關系上來,從而運用圖論對世界進行直觀建模,圖數據庫技術以圖論為根,也可以說是表達多姿多彩世界的基礎性、通用性

“語言”。這種“語言”描述出來的仿真系統與原系統相比具有“高保真”得特性,與人們通常對系統的認知是一致的,並且非常直觀、自然、直接和高效,不需要中間過程的轉化和處理--這種中間過程的轉換和處理往往把問題復雜化或者漏掉很多有價值的信息。正是由於圖數據庫技術可以直接描述各種復雜的現實世界系統,才使其具有廣泛的適用性和更高的應用價值。

事實上,Neo4j已經成功“俘獲”大量客戶,並且客戶數量和應用領域還在不斷增長之中。這些客戶包括思科、惠普、沃爾曼、領英、阿迪達斯、和FT金融時報等國際知名企業或機構。Neo4j客戶的行業分類目前主要集中在社交網絡、人力資源與招聘、金融、保險、零售、廣告、電子商務、物流、交通、IT、電信、制造業、打印、文化傳媒和醫療等領域。上述大量的Neo4j客戶在未采用圖數據庫產品之前反復抱怨原有產品的不足,有待新產品去解決和實現,通稱為:痛點,下表中列出客戶和主要的痛點:

序號

企業名稱

痛點分析或挑戰

1

MigRaven

授權和訪問控制

2

Adidas

提供個性化體驗所需的數據分布在各種信息孤島上

3

BILLES

增加在線客戶:必須能夠處理大量的小打印訂單、大量的收購導致了IT系統的拼湊

4

Cerved

提高計算效率和快速識別,直接或間及控制公司的人員:獲取大數據網絡分析的頂尖技術

5

Die Bayerische

過時的管理系統和不同的數據格式:創建標準化數據框架

6

ICIJ

幫助記者打破復雜的瑞士樓棟數據,以獲得更好的調查性新聞

7

IRCC

關系數據庫沒有為多虛的多個功能提供足夠的靈活性

8

LinkedIn China

盡可能快的啟動社交網絡平臺,同時為重要的用戶和功能增長留出空間

9

Musimap

要映射所有音樂標題,每個具有55個加權描述標準,以允許深入處理和實時推薦

10

Qualia

原始產品僅被優化以跟蹤一個設備上的用戶行為

11

SchleichGmbH

在產品數據網絡中需要更大的可擴展性和靈活性

12

TRANSPARENCY-ONE

管理和所搜大量數據,沒有性能問題

13

Wanderu

幫助消費者在美國的旅行找到和預定城市間公共汽車和火車

14

WineDataSystem

沒有現有的參考資源,大量的信息和問題,關於訪問的方便性和用戶的靈活性

15

Wobi

快速分析大量的整個客戶信息

16

eBay

支持大規模的復雜路由查詢,具有快速和一致的性能

17

Global500 Logisitics

時時刻刻都產生地理位置路由信息,業務需要這些具有復雜關聯關系的位置信息來支持,這導致差傳統關系型數據庫面臨嚴重挑戰

18

Glowbl

講多有可能的設計啊網絡匯集到一起,以圖的形式表現所有的聯系人,並實時管理這些聯系人及其互動關系

19

InfoJobs

建立新的門戶,模擬求職者的潛在職業道路

20

Megree

提供這些鏈接的關系和強度的整體視圖

21

Pitney bowes

通過構建下一代工具,獲得360度的客戶洞察力,獲得競爭優勢

22

Walmart

為客戶提供最佳的網絡購物體驗

23

Telenor

在線自助服務管理門戶的背後,您可以找到負責管理客戶組織結構的協議

2. 圖數據庫在的應用及優勢

2.1. 圖數據庫的優勢

Neo4j最初的設計動機是為了更好的描述實體之間的聯系。在現實生活中,每個實體都與周圍的其他實體有著千絲萬縷的關系,這些關系裏存在著大量的潛在信息。但是傳統的關系型數據庫更加註重刻畫實體內部的屬性,實體與實體之間的關系主要通過外鍵來實現。因此在查詢一個實體的關系時需要join操作,特別是深層次的關系查詢需要大量的join操作,而join操作通常又非常耗時。隨著現實世界中關系數據的急劇增加,導致關系型數據庫已經逐漸的難以承載查詢海量數據深層次關系需要大量數據庫表操作帶來的運算復雜性,Neo4j在這樣的情況下應運而生。

2.1.1. 免索引鄰接

Neo4j有一個重要的特點,就是用來保證關系查詢的速度,即免索引鄰接屬性,數據庫中的每個節點都會維護與它相鄰節點的引用。因此每個節點都相當於與他相鄰節點的微索引,這比使用全局索引的代價要小得多。這意味著查詢時間和圖的整體規模無關,只與他附近節點的數量成正比。在關系型數據庫中使用全局索引連接每個節點,這些索引對每個遍歷都會增加一個中間層,因此會導致非常大的計算成本。而免索引連接為圖數據庫提供了快速高效的圖遍歷能力。下圖展示了關系型數據庫和Neo4j在查找關系時的區別:

技術分享圖片

2.2. 風險控制

1、一組兩個或兩個以上的人組成一個刷單環路

技術分享圖片

2、監控一個打車訂單的整個生命周期

當前我們一個訂單的數據涉及到多個表,隨著業務發展,訂單數據量越來越多的時候,數據庫面臨的連接操作越來越多:

技術分享圖片

在數據決策系統中最長的SQL達到400行,連接了七個表,使用Neo4j的賽博語言可以大大減少查詢的復雜度。

2.3. 地理信息系統

1、路網系統搭建

可以將獲取的點和路徑經緯度數據導入到Neo4j,通過其內置的最短路徑函數查詢最短的導航路徑。可以給現在的軌跡數據進行糾偏。

2、Neo4j Spatial

Neo4j Spatial是一個讓Neo4j能夠進行完整的空間操作的庫,支持ESRI Shapfile文件和OSM數據的導入,支持大多數的幾何形狀如點、線、多邊形等,能夠對時空數據進行拓撲操作如包含、覆蓋、相交等。此外,Neo4j Spatial除了本身的基於空間結構的R-Tree索引外,可以靈活的支持其他索引,只要能夠將數據映射為幾何形狀都可以使用Neo4j Spatial處理。這些特征使得Neo4j對時空數據的分析和處理效率更高、使用範圍更廣。

3. 配置要求

3.1. 數據大小

(武漢路網)目錄如下:

技術分享圖片

文件總大小截圖

經過清洗匯總去重導入到圖數據庫中顯示節點數據總共:

技術分享圖片

當前數據庫節點數:

技術分享圖片

總共武漢有經緯度點約200萬,點與點的關系約400萬,全部保存進去數據文件約占磁盤空間4.5G,加上後續要添加點與點的距離和角度等屬性數據,武漢路網數據總共約占磁盤10G。

根據城市規模計算,與武漢同等規模城市(一線城市、新一線城市)有:

北京市、上海市、廣州市、深圳市、成都市、杭州市、武漢市、重慶市、南京市、天津市、蘇州市、西安市、長沙市、沈陽市、青島市、鄭州市、大連市、東莞市、寧波市。保守估計占據磁盤空間200G。二線城市路網數據保守估計100G。城市之間數據約100G(數據量通過POI比例所占估計),所以申請機器磁盤500G。

3.2. CPU、內存要求

py2neo訪問圖數據庫,模擬二十個線程不斷計算最短路徑,機器配置和CPU情況如下:

技術分享圖片

程序截圖

技術分享圖片

機器配置截圖

CPU狀態截圖

技術分享圖片

內存狀態截圖

技術分享圖片

圖中采用8核心處理器、8G內存,CPU和內存基本用完,訪問頻率約在20次1秒,根據日百萬訂單規劃也就是每秒11.57次,高峰時期,每秒在10這個數量級。保留一定的空余給操作系統使用,所以申請16G內存

4. 擴展方案

4.1. 只讀副本

只讀副本的主要職責是擴展圖操作的工作負載(比如:Cypher查詢、過程處理等)。只讀副本就像是核心服務器中受保護數據的高速緩存,但他們不是簡單的的鍵值高速緩存。事實上,只讀副本是能夠完成任意(只讀)圖查詢和過程處理的全功能的Neo4j數據庫。

只讀副本通過事務日誌以異步的方式從核心服務器復制數據。只讀副本會周期性的(通常在毫秒範圍內)輪詢核心服務器,以查找自上次輪詢後處理的任何新事務,然後核心服務器將這些新事務發送到只讀副本。大量的只讀副本可以從相對較少的核心服務器復制數據,從而確保大量的圖查詢工作負載得以分攤。

4.2. 城市分庫

因為我們的查詢具有較高的獨立性,例如一個在武漢的網約車的路徑完全在武漢數據範圍內完成查詢。所以當後續負載壓力提高時,可以將不同城市的數據分別部署到不同的機器上,城市間城際拼車需要的數據可以另外部署。也可根據不同的經緯度範圍放置數據來分攤查詢壓力。

圖數據庫Neo4j在GIS系統的應用