問題タブ [rexster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
titan - Gremlin で頂点をループしてエッジを追加する方法
コンテナー内の頂点をループし、ループ内の現在の頂点と特定の頂点の間にエッジを追加する方法を理解しようとしています。
これは私がこれまでに持っているものです: これにより、指定されたコンテナー内のすべての頂点 ID の配列が得られます。
結果:
ここで、この配列内のすべての ID をループ/反復処理し、ID の頂点を取得して、特定の頂点とループ内の現在の頂点の間にエッジを追加します。
これを行う方法を知っている人はいますか?
neo4j - Neo4j2 と Rexster?
これは本当に基本的でばかげた質問のように感じます。
Neo4j 2.1.5 でグラフを取得しました。おもちゃのグラフなので、デフォルトで作成しました。
指示に従って、ブループリントの Neo4j2 バージョンをビルドしました。この構成で Rexster を起動できます。
Rexster Web インターフェイスを開くと、グラフがあると表示されますが、ブラウズしようとするとサイコロがありません。Neo4j Web インターフェイスからグラフを参照するのに問題はありません。私は何が欠けていますか?
titan - number プロパティを使用してエッジを POST / PUT する方法は?
Rexster を使用してデータを TitanDB にロードしています。頂点を投稿/配置するときに、リクエストの本文でプロパティを JSON として提供できます。プロパティの値が数値の場合、対応して数値として格納され、数値として取得できます。たとえば、次の本文は、投稿メッセージに数値型のプロパティ「スコア」を作成します。
ただし、エッジを POST / PUT する場合、プロパティはクエリパラメーターとしてのみ提供できるようです。たとえば、次のようになります。
この場合、残念ながら、5 は常に文字列 "5" と見なされます。したがって、数値演算/比較を含むクエリは機能しません。たとえば、次のクエリは引き続き投稿されたエッジを返します (投稿されたスコアが 5 であるにもかかわらず)。
数値型が考慮されるように、エッジとそのプロパティを POST / PUT する方法はありますか?
java - Titan ノードが起動しない
8 ノードの小さな Titan0.5.0
クラスターがあります。すべてのノードは、Rexster2.5.0
と Cassandra で Titan を実行します。それらはすべて同じように構成されています。残念ながら、ほとんどの場合、そのうちの 1 つが開始できません。
ほとんどの場合、これはシード ノードの 1 つです。
ストレージ バックエンドとして使用cassandra
すると、Rexster/Titan ログに次のように表示されます。
Rexster は起動に失敗したため、グラフをロードしませんでした。ただし、接続に失敗した Cassandra ノード Rexster は問題ないようnodetool
です。リングの一部としてノードをリストします。残りの Rexster インスタンスに対してリクエストを発行すると、すべてが機能しているように見えます。
ノードを起動する前に、すべてのデータを消去しました。
同様の例外が発生するように切り替えましcassandrathrift
た(TimeoutExceptionによって引き起こされたPermanentBackendExceptionによって引き起こされた同じTitanException)。Rexster のストレージ タイムアウトは 30 秒です。現時点ではすべてのノードを同時に起動しているため、これは低すぎる可能性がありますが、cassandra
.
ここで何がうまくいかないのですか?
編集:
私はタイタンを悪用していました。起動時のインデックス作成に対処する必要がないように (私の場合は頻繁に発生します)、Rexster 拡張機能でインデックスを作成しました。このコードは複数回呼び出されたと思います。複数のノードを同時に起動したときに、そのうちのいくつかがインデックスを作成しようとしたようです。
質問: 拡張機能がインデックスを安全に作成できる方法はありますか? このために別のスレッドを作成しました:インデックスを作成する方法は何ですか?
ストレージ タイムアウトを 60 秒に増やし、コードからインデックスの作成を削除した後、手順を再試行しました。すべてのノードを同時に起動します。ここでも 1 つの Rexstitan ノード (シード ノード #2) が起動に失敗します。
Cassandra ログには確かに例外が含まれています
両方のシード ノードで確認できます。1 つのシード ノードの Rexster は気にしないように見えますが、他の Rexster インスタンスは起動に失敗します。
でrexstitan.log
。以前に発生した例外と非常によく似ています。
明確にするために: 失敗とは、Rexster が開始され、クエリを実行できるが、Titan グラフ「グラフ」のロードに失敗したことを意味します。
これがクラスターサイズに関連しているかどうかを確認するには、サイズを最小限に抑える必要があるかもしれません。
編集#2:
クラスタ サイズとは関係ありません。そして、それは本当に迷惑になっています。BadRequestException
上記の場合もあれば、すでにキースペース「titan」があるためBadRequestException
です。またはそれはIllegalArgumentException
:
一度に複数のノードを起動することはできませんか?それらは競合しますか? これが私が考えることができる唯一の理由です。例外が発生する可能性があり、場合によっては正常に機能するからです。
indexing - インデックスを作成する方法は何ですか?
Titan のドキュメントで見つけたすべての例では、Rexster コンソールを使用してインデックスを作成しています。単一の Titan ノードにログインし、インデックスを作成してコミットします。しばらくすると、クラスタ全体がインデックスを認識し、使用できるようになります。
これを行う他の方法があるかどうか疑問に思っています。Rexster 拡張などのコードからインデックスを作成する場合、いくつかの利点がありますtoString
。インデックスの作成に使用できるメソッドを提供するプロパティ キーとエッジ ラベルに ENUM を使用します。このように、値が変更される心配はありません。
言及すべきもう 1 つの側面は、Titan のベンチマークを行って、クラスターを頻繁に再初期化することです。ノードにログインして手動で行うよりも、コードにすべての作業を任せる方が快適です。
ただし、コードからインデックスを作成するのは面倒なようで、最終的に一貫性のあるストレージ バックエンドを使用すると、複数の例外が発生しました。ノードの同時起動により、複数のノードがインデックスを作成しようとしたと思います。詳細については、「 Titan ノードが起動しない」を参照してください。
これらの問題を処理する適切な方法はありますか? 私が知らない他の方法はありますか?