4

現在、Bulbs と Rexster を使用して ArangoDB データベースにアクセスしようとしています。これを行う必要があるのは、Bulbs ( http://bulbflow.com ) を使用して Python からいくつかの gremlin クエリを起動したいからです。(私は AQL と arangosh が本当に好きですが、すでに多くの実用的な gremlin スクリプトを持っています)

Bulbs の Rexster を使用する前に行ったことは次のとおりです。

  • ArangoDB BluePrint ドライバーのコンパイルに成功し、以下を取得しました: blueprints-arangodb-graph-1.0.4-SNAPSHOT-jar-with-dependencies.jar
  • Gremlin2.4 と Rexster 2.4 バイナリをダウンロードし、blueprints-arangodb-graph-1.0.4-SNAPSHOT-jar-with-dependencies.jar を (それぞれ) lib フォルダーと ext フォルダーにコピーしました

その後、いくつかの問題に直面しました。

第 1 に、(電球の問題ではありません) 現在のバージョンの Gremlin (2.4.0) および/または Rexster (2.4.0) で ArangoDB を正しく動作させることに成功しませんでした。

グレムリン 2.4 では:

gremlin> import com.tinkerpop.blueprints.impls.arangodb.*
[...]
gremlin> g = ArangoDBGraphFactory.createArangoDBGraph();
==>arangodbgraph[{"_id":"_graphs\/factory_graph","_rev":"20228207","_key":"factory_graph","vertices":"factory_vertices","edges":"factory_edges"}]
gremlin> g.E.count()
Not supported yet.
Display stack trace? [yN]

bash で Rexster 2.4 を起動しているときに:

Exception in thread "main" java.lang.NoSuchFieldError: isRDFModel
    at com.tinkerpop.blueprints.impls.arangodb.ArangoDBGraph.<clinit>(ArangoDBGraph.java:44)
    at com.tinkerpop.blueprints.impls.arangodb.utils.ArangoDBConfiguration.configureGraphInstance(ArangoDBConfiguration.java:60)
    at com.tinkerpop.rexster.config.GraphConfigurationContainer.getGraphFromConfiguration(GraphConfigurationContainer.java:119)
    at com.tinkerpop.rexster.config.GraphConfigurationContainer.<init>(GraphConfigurationContainer.java:54)
    at com.tinkerpop.rexster.server.XmlRexsterApplication.reconfigure(XmlRexsterApplication.java:99)
    at com.tinkerpop.rexster.server.XmlRexsterApplication.<init>(XmlRexsterApplication.java:47)
    at com.tinkerpop.rexster.Application.<init>(Application.java:96)
    at com.tinkerpop.rexster.Application.main(Application.java:188)

Gremlin と Rexster の両方のバージョン 2.2 を使用したいくつかの例を見て、それらをダウンロードし、arangodb ブループリント ドライバーを再度インストールしました。

今回は、Gremlin 2.2 と Rexster 2.2 の両方で機能しました。

  • gEcount() は何かを返しました (<-> したがってサポートされます)
  • Rexster サーバーが起動し、ポート 8182 で Rexster API にアクセスできました

しかし、2 番目の問題は、次の Python コードです。

from bulbs.rexster import Graph
from bulbs.config import Config
config = Config('http://localhost:8182/graphs/arangodb')
g = Graph(config)

戻ってきた :

({'status': '500', 'transfer-encoding': 'chunked', 'server': 'grizzly/2.2.18', 'connection': 'close', 'date': 'Wed, 08 Jan 2014 17:30:29 GMT', 'access-control-allow-origin': '*', 'content-type': 'application/json'}, '{"message":"","error":"javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: groovy.lang.MissingMethodException.rollback() is applicable for argument types: () values: []\\nPossible solutions: collect(), collect(groovy.lang.Closure), collect(java.util.Collection, groovy.lang.Closure)","api":{"description":"evaluate an ad-hoc Gremlin script for a graph.","parameters":{"rexster.returnKeys":[...]

これを修正する方法がわかりません (私は Java プログラマーではありません)。

ここに私の環境があります:

  • Ubuntu 11.10
  • Java バージョン「1.7.0_45」
  • Java(TM) SE ランタイム環境 (ビルド 1.7.0_45-b18)
  • Java HotSpot(TM) 64 ビット サーバー VM (ビルド 24.45-b08、混合モード)

これが rexster.xml の私の Arango 設定です (これにより、Rexster REST API から arangodb にアクセスできます):

[...]
<graph>
    <graph-name>arangodb</graph-name>
    <graph-type>com.tinkerpop.blueprints.impls.arangodb.utils.ArangoDBConfiguration</graph-type>
    <properties>
        <graph-name>arangodb-rexster-graph</graph-name>
        <vertex-name>arangodb-rexster-graph-vertices</vertex-name>
        <edge-name>arangodb-rexster-graph-edges</edge-name>
        <host>localhost</host>
        <port>8529</port>
    </properties>
</graph>
[...]

アイデア/ヘルプを事前にありがとう:)

4

5 に答える 5

3

私は ArangoDB Blueprints の実装を使用したことはありませんが、問題の原因となっているバージョン管理の問題がいくつかあることは間違いありません。pomによると、1.0.4-SNAPSHOT は TinkerPop 2.3.0 で動作するようです。この問題を解決するための最初のステップとして、Gremlin/Rexster 2.3.0 を使用していることを確認することから始めます。2 番目のステップとして、バルブを試す前に Rexster が適切に機能していることを確認してください。言い換えれば、Rexster のGremlin 拡張機能を使用していくつかのスクリプトを実行し、結果を検証することは、Python 経由で接続しようとするときにバルブが適切に機能することを確認するための良い出発点になります。

于 2014-01-08T19:13:03.327 に答える
2

rexster 2.4 の問題について: https://github.com/triAGENS/blueprints-arangodb-graphで 2.4-branch を見つけることができます。これは rexster/gremlin 2.4 で動作するはずです。

于 2014-01-14T08:02:22.503 に答える
1

ArangoDB への接続によると、rexster に含まれる gremlin サーバーとドライバーの実装に問題があるようです。スタンドアロンの gremlin でコードを正常に実行できましたが、rexster サーバーで問題が発生しました。ブループリント ドライバーとドキュメントを修正して、再び機能するようにします。

于 2014-01-10T13:41:32.183 に答える