2017-08-01 103 views
1

我正在考慮學習JanusGraph在我的新大項目中使用,但我無法理解一些事情。我應該使用JanusGraph作爲主數據庫來存儲我的一個新項目的所有數據嗎?

劍鋒可以像使用任何數據庫,並支持「插入」,「更新」,「刪除」操作,以便將JanusGraph數據寫入到卡桑德拉或其他數據庫來存儲這些數據,對吧?

凡JanusGraph存儲節點,邊,屬性等,將這些寫入數據庫,對不對?

這些數據應該由Janus在內存中加載,還是一直會從Cassandra讀取?

是JanusGraph讀取的數據,必須在JanusGraph負荷在每一個查詢或會做選擇在數據庫中檢索,我需要的數據?

在數據庫中檢索到的數據只是我需要的數據,或者Janus會一直讀取數據庫中的所有記錄?

我應該在我的生產項目中使用JanusGraph還是應該等到生產就緒?

我正在開發某種社會網絡上需要存儲的友誼,文章,評論,用戶塊以及做一些elasticsearch過,在這種情況下,我應該用什麼數據庫後端?

+0

同一主題在janusgraph-users郵件列表https://groups.google.com/d/msg/janusgraph-users/0hb5FbYZTU8/04CM6nOCBQAJ –

回答

6

Janus會將數據寫入Cassandra或其他數據庫來存儲這些數據,對嗎?

凡劍鋒店的節點,邊,屬性等,將這些寫入數據庫,對不對?

Janus Graph會將數據寫入您配置使用的任何storage backend。這包括Cassandra。它這個數據寫入到使用大致概括here

這些數據應在內存劍鋒加載或將從卡桑德拉所有的時間讀取數據模型墊層數據庫?

在數據庫中檢索到的數據只是我需要的數據,或者Janus會一直讀取數據庫中的所有記錄?

Janus圖將只加載到您在查詢/遍歷期間觸摸的內存頂點和邊。所以,如果你這樣做:

graph.traversal().V().hasLabel("My Amazing Label");

劍鋒將讀取並與label加載到內存中頂點。因此,您不必擔心初始化圖形連接,然後等待整個圖形被序列化到內存中,然後才能查詢。 Janus是一個懶惰的讀者。

我應該在我的生產項目中使用Janus還是應該等到產品準備就緒?

這完全取決於你和你的使用情況。 Janus已經在生產中使用,可以在頁面底部看到here。Janus從TitanDB中分離出來並進行了改進,這也用於幾個生產用例。所以如果你想知道「是否準備好了」,那麼我會說是的,鑑於它的現有用途,它顯然已經準備就緒。

我應該使用什麼數據庫後端?

再次,這完全取決於你。我使用Cassandra,因爲它可以水平縮放,我發現它更容易處理。它似乎也適合所有不同大小的數據。我玩過Google Big Table,這看起來也很強大。但是,它只適用於非常大的數據,而且它也只能在雲中使用,因爲Cassandra可以非常容易地在本地託管。

我還沒有使用Janus HBaseBerkeleyDB所以我不能在那裏發表評論。但是,在後端之間切換非常簡單(您需要做的就是調整一些配置並檢查依賴關係是否到位),因此在您的開發過程中可以隨意使用後端。您只需在生產時確實需要提交後端,或者對每個後端更加確信。

+0

非常感謝Filipe。我無法理解這一點,因爲我無法連接到後端,我只花了3天嘗試連接,但每次都收到同樣的錯誤。配置文件只是與文檔建議相同的配置,但我得到了:配置在[conf/gremlin-server/janusgraph-cassandra-es-server.properties]的圖形[graph]無法實例化,並且在Gremlin Server中不可用。 GraphFactory消息:GraphFactory無法實例化這個Graph實現[class org.janusgraph.core.JanusGraphFactory] ​​ –

+0

嗨@Augusto請問我建議你提出一個新的問題?在那個問題中顯示你使用的配置,以及你如何使用它,當然也會顯示你得到的錯誤。如果你自己這樣做,其他人可以更有幫助。 –

相關問題