問題タブ [tinkerpop-blueprint]
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.
orientdb - orientDB `OrientGraphNoTx ` スーパークラス V; 存在しません
OSql ステートメントを含むファイルをプログラムでロードして、Blueprint API を使用して DB のスキーマを作成しています。具体的には、クラスplocal
をインスタンス化することにより、モードで DB を作成しています。OrientGraphNoTx
クラスV
がデータベースに存在しないという奇妙なエラーが表示されます。
エラーを生成するサンプル コードを次に示します。
他のほとんどの人が同様の問題を抱えていて、ステートメントにキーワードgraph
を指定して解決したことがわかったので、 . とにかくスクリプトにステートメントを追加しようとしましたが、予想どおりエラーが発生しました。CREATE DATABASE
OrientGraphNoTx
CREATE DATABASE
lib
OrientDB 2.1.4のディレクトリに含まれる jar を使用しています。
この問題を解決する方法を知っている人はいますか?
rest - Tinkerpop スタック Rexster REST API _properties
技術スタック:
- Tinkerpop スタック 2.4 (Rexster HTTP REST サーバー)
- タイタン 0.5.4
- ダイナモ DB (AWS)
- NodeJS
目標:
グラフ データベースのクエリとトラバーサルに Rexster RESTful ベースの API を利用したいと考えています。Vertex Query 構文に基づいて結果をフィルタリングするための _properties クエリ パラメーターを理解しようとしています。
頂点クエリの結果:
http://localhost:8182/graphs/mygraph/vertices
{
"version": "2.5.0",
"results": [
{
"name": "Frank Stein",
"_id": 25600768,
"_type": "vertex"
},
{
"name": "John Doe",
"_id": 25600512,
"_type": "vertex"
}
],
"totalSize": 2,
"queryTime": 219.86688
}
エッジ クエリの結果:
http://localhost:8182/graphs/mygraph/vertices
{
"version": "2.5.0",
"results": [
{
"_id": "f8q68-f8phc-4is5-f8pog",
"_type": "edge",
"_outV": 25600512,
"_inV": 25600768,
"_label": "friends"
}
],
"totalSize": 1,
"queryTime": 164.384768
}
問題:
これらの URI は、返されると想定しているものを返さず、常に空のセットを返します。
リクエスト:
_http://localhost:8182/graphs/privvy/vertices/25600768/both? properties=[[name,=,"John Doe"]] _http://localhost:8182/graphs/privvy/vertices/25600768/both? properties=[[name,=,John Doe]] _http://localhost:8182/graphs/privvy/vertices/25600768/both? properties=[[name,=,(s,"John Doe")]] _http://localhost:8182/graphs/privvy/vertices/25600768/both? properties=[[name,=,(s,John Doe)]]
応答:
{
"version": "2.5.0",
"results": [],
"totalSize": 0,
"queryTime": 22.641152
}
追加情報:
次の URI は、= (等しい演算子) を <> (等しくない) 演算子に切り替えるだけで、隣接する頂点の結果セットを返します。
リクエスト:
_http://localhost:8182/graphs/privvy/vertices/25600768/both? properties=[[name,<>,"John Doe"]]
応答:
{
"version": "2.5.0",
"results": [
{
"name": "John Doe",
"_id": 25600512,
"_type": "vertex"
}
],
"totalSize": 1,
"queryTime": 17.451008
}
私がどこで間違っているのか、誰にも手がかりがありますか?
参考文献:
- https://github.com/tinkerpop/rexster/wiki/Basic-REST-API
- https://github.com/tinkerpop/rexster/wiki/Property-Data-Types (データ型 Vertex クエリの文字列使用の例は示していません。)
- https://github.com/tinkerpop/blueprints/wiki/Vertex-Query
友よありがとう!
トム
orientdb - OrientBaseGraph の getVertices(String arg0, String[] arg1, Object[] arg2) がサブクラスを返さない
orientdb 2.1.4 を使用しています。サブクラス(頂点)ChildVを持つクラス(頂点)ParentVがあります。
getVertices("ParentV", new String[]{key}, new Object[]{value}) を使用してデータベースにクエリを実行すると、「ChildV」タイプの結果が見つかりません。
指定されたキーが指定された値と一致するすべての結果(親クラスと子クラスを含む)が必要なため、上記の関数でポリモーフィック検索を有効にする方法を教えてください。
注:複数のキーと値を持つ場合があるため、他の getVertices 関数は使用できません。これらの関数は、tinkerpop blueprints API によって提供されます。
java - gremlin/blueprints を使用して OrientDB から graphJson を取得します
私はorientDBを使い始めましたが、障害にぶつかりました.この時点で、ドキュメントは私の心を吹き飛ばしています.
d3.js ベースの UI で視覚化するために、orientDB インスタンスにクエリを実行し、応答を graphJSON として返そうとしています。Java アプリからさまざまなことを試しましたが、返された個々のエッジと頂点の json を取得できます。
または、グラフ全体の graphJSON を取得できます。
など、さまざまな取り組みを行っています。
2番目の例でグラフをサブセット化する方法はありますか? 個々の JSON の結果をすべて 1 つの graphJSON ファイルに結合しようとする必要がありますか? クエリの結果から新しい一時的なグラフを作成して、それを GraphSONWriter にフィードする必要がありますか?
ご協力いただきありがとうございます。
アップデート
開始するには、最初のアプローチを使用し、結果のリストを繰り返し処理して、独自の graphJSON を構築しました。かなり厄介な解決策のように思えますが、他のいくつかのストーリーのブロックを解除し、私たちを前進させました (途中で技術的負債を導入しました)。2番目のオプションを試してみましたが、完全なグラフを返しても、出力される「graphJSON」は標準ではないようです(または、少なくともd3ライブラリの解釈と一致しませんでした)。非スターターのようです。
どんな提案も大歓迎です - グレムリン?
orientdb - OrientDB クエリが遅すぎる
以下のこのクエリは、Web インターフェースを介して問題なく実行できます。完了するのにほとんど時間がかかりません。
しかし、Java アプリケーションから実行しようとすると、完了するまでに 17 秒以上かかります。
私が使用しているコードは、基本的に次の 2 行です。
REST リクエストが非常に遅いのではないでしょうか? 私のJavaアプリはリモート接続を使用していますが、Webインターフェースはplocalを使用しています(推測)。
neo4j - Neo4j2.3 ティンカーポップ
現在、Neo4j 1.9.9 バージョン (組み込みモード) と tinkerpop blueprints 2.4 API を使用しています。Neo4j を 2.3 にアップグレードする予定です。しかし、ブループリントは neo 2.3 と互換性がないことがわかりました。私たちのシステムは現在安定しているので、クラッド層をあまり乱すことなくneo4jをアップグレードしようとしています. 1. ブループリントが 2.3 と互換性がない理由を理解するために、誰か助けてくれませんか? 2.私の理解からSpring-dataを使用する予定がある場合、それは組み込みモード用ではありません。このシナリオに直面した場合、および問題にどのようにアプローチしたかを共有できますか?
spring - Orientdb パーティション グラフ Java 実装
バックエンドの Spring アプリケーションと Orientdb グラフ データベースがあります。Tinkerpop Frames を使用して orientdb の頂点を Java オブジェクトにマップし、OPS4J をスプリング トランザクション管理に使用します。ここで、複数の顧客 (テナント) がこの 1 つのアプリケーション インスタンスを使用するマルチテナンシーを実装したいと考えています。このアプリケーションは完全に REST の原則に基づいて動作し、複数の Angular アプリケーション (顧客ごと) に開かれています。したがって、顧客と同じ数のフロントエンド Angular アプリケーションがあり、バックエンド REST Spring アプリケーションは 1 つだけです。バックエンドは HTTP リクエストからテナントを認識します。
今、私は最善の解決策について確信が持てません...
最初の解決策
Orientdb のドキュメントを読んだところ、orientdb でマルチテナンシーを実装する方法が見つかりました - http://orientdb.com/docs/2.1/Partitioned-Graphs.html。ただし、リクエストごとに新しいデータベース接続を作成したくない場合を除き、Java API を介して使用する方法がわかりません。現在、Spring トランザクション マネージャーは、Spring トランザクション管理構成で一元的に設定されている接続プールから接続を取得するためです。これに対するJavaの例は見つかりませんでした。
Spring トランザクション管理構成:
接続の取得:
2 番目の解決策
別の解決策は、ティンカーポップを使用することです
パーティショングラフ
クラスは Orientdb で動作しますが、Orientdb のドキュメントにはこの可能性に関する文章は見つかりませんでした。Tinkerpop ではこれだけです - https://github.com/tinkerpop/blueprints/wiki/Partition-Implementation。それは機能しますが、最終的にすべての orientdb 頂点にインデックスのないプロパティを作成するだけなので、ここでのクエリのパフォーマンスが心配です。
誰もこれについて経験がありますか?なにか提案を?
orientdb - (Tinkerpop) DAO オブジェクトからモデル オブジェクトへの FramedGraph マッピング
OrientDb 2.2 と TinkerPop FramedGraph を使用しています。オブジェクトモデルとのやり取りを簡単にするために、FramedGraph を使用しています。setProperty("name", "bob")
FramedGraph について理解できないことの 1 つは、実装できないインターフェイス DAO オブジェクトがあるのはなぜですか? 上記の制約により、オブジェクトの重複があります: tinkerpop DAO インターフェイスとモデル オブジェクトです。
interface UserNode {
private String firstName;
private String lastName;
}
class User {
private String firstName;
private String lastName;
}
これは、大量のデータを読み書きするときに大きなオーバーヘッドを引き起こします。
List<User> fetchAllUsers() {
Iterable<UserNode> userNodes = graph.query().vertices(UserNode.class);
List<User> users = new ArrayList<>();
for (UserNode userNode: userNodes) {
User user = new User();
user.setFirstName(userNode.getFirstName());
user.setLastName(userNode.getLastName());
users.add(user);
}
}
上記の非効率を回避する方法はありますか?