首頁  >  文章  >  後端開發  >  Gremlin-Go:樹步驟不可序列化

Gremlin-Go:樹步驟不可序列化

王林
王林轉載
2024-02-09 10:51:19989瀏覽

Gremlin-Go:樹步驟不可序列化

php小編蘋果Gremlin-Go是一種新型的分散式資料庫,它採用了樹步驟不可序列化的技術,為使用者提供了更有效率、更可靠的數據儲存和處理方案。透過將資料儲存在樹狀結構中,並使用不可序列化的步驟來實現資料的讀寫操作,Gremlin-Go能夠在分散式環境下保持資料的一致性和可靠性。這種創新的設計理念使得Gremlin-Go成為了目前領先的分散式資料庫之一,為各種規模的企業提供了強大的資料支援。

問題內容

我正在執行一個查詢來遍歷特定標籤後面的所有「入」邊,稍後我將對「出」邊執行類似的查詢。我想將其作為一棵樹,因為可能有一個具有多個邊的頂點要遍歷,並且需要在我的客戶端中反映這一點,所以我不能在這裡僅使用tolist()

我目前正在使用 gremlin-go sdk,但是在呼叫 tree() 步驟時出現反序列化錯誤。這是我的客戶端程式碼的片段:

    res, err := g.v(id).
        emit().
        repeat(__.in(label)).
        tree().
        next() // other terminal steps produce same issue

這會在資料型別 0x2b 上產生反序列化錯誤,該資料型別是 graphbinary 核心資料型別「tree」

2023/02/28 12:23:05 Error occurred during operation gremlinServerWSProtocol.readLoop(): 'E0408: unknown data type to deserialize 0x2b'
2023/02/28 12:23:05 Read loop error 'E0408: unknown data type to deserialize 0x2b', closing read loop.
2023/02/28 12:23:05 Connection error callback invoked, closing protocol.

gremlin-go 參考文件似乎沒有提及任何有關特定序列化支援的內容。根據 gremlin-go readme,它支援所有核心 graphbinary 資料類型。我已經在 gremlin 控制台中測試了我的查詢以驗證查詢和伺服器: g.v(<id>).emit().repeat(__.in(<label>)).tree().next()</label></id>

對於一些額外的上下文,我正在本地針對 gremlin-server:3.5.3 進行開發,以進行實驗,目的是透過對 aws neptune 的支援來完成查詢。我知道這些不能完全互換,並且將遵循 neptune-gremlin 參考。 neptune 的最新版本指定 gremlin 的最新支援版本為 3.5.3。

解決方法

一般來說,只有 Java(以及其他基於 JVM 的客戶端)能夠反序列化像子圖或樹這樣的結構。這是因為這些是唯一具有目前可用資料結構的本機實作的 Gremlin 用戶端(例如 JVM 用戶端具有可用的 TinkerGraph)。

這是 TinkerPop 社群非常了解的一項,而且它在值得改進的事項清單中。

一種可能的解決方法(不是很好)是使用 HTTP 端點(以文字形式傳送查詢)並處理傳回的 GraphSON(如果必須傳回此類資料結構)。

以上是Gremlin-Go:樹步驟不可序列化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除