Neo4j BI Connector:效能

2021-08-01

David Allen Picture
David Allen, Technology Partner Architect, Neo4j Dec 14, 2020

資料平台的使用率逐年上升。但這是否意味著人們必須放棄他們最喜歡的 BI 工具?答案是完全否定的。

Neo4j BI Connector 可以讓使用者直接利用熱門的商業智慧平台即時顯示圖資料集,支援的平台包含 Tableau、Looker、TIBCO Spotfire Server 以及 Microstrategy。BI Connector 是第一個企業級應用程式,將資料結果連接到BI使用者,避免程式設計、自定義腳本和不受管控的存取。

在此章節,我們將描述基本的效能調整和故障排除。


效能注意事項

BI 連接器是從 client 擷取 SQL 查詢語言,轉換為 Cypher 圖查詢語言並獲取結果來執行。在某些案例下,工具有可能在表達 Cypher 時不等同於 SQL 架構,BI 連接器具有可用於滿足任何標準 SQL 查詢語言的內建 SQL 執行引擎 (in-memory SQL Execution Engine)

因此,你會發現可以在 BI 驅動程式 (BI Driver) 裡拋出任何 SQL 查詢並且是可行的。但在某些狀況下,比起在 client 端處理結果是絕對必要的,查詢可能從 Neo4j 抓取回更多訊息。

隨著 BI 驅動程式隨著時間的推動不斷發展,關鍵事項之一是增加下推操作的數量來獲得最佳效能並擷取最少的資料量。後續版本將有更具效能的下推操作,進而提高效能。

如果你需要詳細了解 BI 連接器的執行細節,請在你的 Neo4j 伺服器上啟動查詢日誌記錄,並使用 Neo4j 監控工具追蹤這些查詢語言。


在 SQL 執行引擎裡面,有許多記憶體管理技術會影響大量資料集的效能。

SQL 引擎嘗試將越多的資料保存在記憶體中以提高效能,但是需要在執行速度和不消耗太多 client 記憶體之間取捨。因此,如果資料集變得太大,SQL 引擎可能會溢出到磁碟,做為不要消耗太多資源的取捨而導致減慢查詢回應時間。

如果您想了解更多有關查詢的執行方式的技術細節,我們推薦你參閱協作查詢執行概述

在查詢執行期間,驅動程式將在記憶體中快取最多 1 GB 的中間資料,如果超過限制,就會開始溢出到磁碟。驅動程式查看 java.io.tmpdir 系統屬性確保在檔案系統中建立調換檔的位置。使用者可以透過 -Djava.io.tmpdir JVM 屬性控制調換檔位置。目前驅動程式沒有配置對使用者控制記憶體的限制。


故障排除

出現問題時,技術棧中發生狀況的可視化是一個很好的切入點,使我們快速隔離問題所在並執行解決方案。

下圖顯示了從底層的 Neo4j 資料庫到最上層的 BI 工具 (例如 Tableau) 的資料流。


讓我們從底層開始單獨處理每一層,這裡提供一些故障排除的提示和技巧。

Neo4j 資料庫

  • 在資料庫層,你可能希望啟動查詢日誌記錄去看 BI 連接器發送到資料庫的直接的 Cypher 查詢。
  • 使用諸如 Halin 之類的 Neo4j 監控工具獲得針對圖叢集還有多少可用記憶體以及整體吞吐量的寶貴建議。如果叢集超載,身為另一個 client 的 BI 連接器將無法正確執行。

Neo4j BI 連接器

極力建議使用連接器日誌來協助故障排除;如果你需要向 Neo4j 原廠申請工單處理,Neo4j 會要求你提供這些日誌。透過向 JDBC 連接字串語法添加一些內容來啟用連接器日誌記錄,如下圖所示:


這命令驅動程式保留和 SQL clients 互動的日誌並將這些文本日誌儲存在暫存目錄中。EnableJavaDriverLogging 標誌告訴 BI 連接器也記錄與 Neo4j (做為 Bolt client) 的互動。

檢查這些日誌時,需要注意以下幾點:

  • 實際的 SQL 發送給驅動程式,以及驅動程式是否可以回應/遭遇錯誤
  • Neo4j 資料庫的所有驅動程式溝通錯誤的證據
  • 使用連接的證據;一些表現不佳的 SQL clients 可能會創建過多的並行全開連接,這會減慢速度。

商業智慧(BI)工具

追根究底,有多少種工具就有多少種故障排除的方法。對於最受歡迎的 Tableau 安裝,我們建議你查看 Tableau 官網的說明來更改與產品相關的日誌等級,你可以深入了解 Tableau 正在執行的操作。

總結

能夠在你最喜歡的 BI 工具中查詢和分析 Neo4j 的資料。Neo4j BI 連接器只是 Neo4j 在架構中與其他程式互相協作的方式之一。了解更多關於 Neo4j 如何和 Spark, Kafka 等等介接。