問題タブ [ibm-graph]
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.
ibm-cloud - Titan のデータ型のベスト プラクティスは何ですか?
Titan を使用する IBM Graph でグラフのスキーマを作成しています。名前、住所などのほとんどのプロパティに文字列データ型を使用しています。日付、タイムスタンプ、URL、通貨などのプロパティのデータ型のベスト プラクティスは何ですか?
graph-databases - IBM Graph でノード、エッジ、およびプロパティーに名前を付けるためのベスト・プラクティスは何ですか?
IBM Graph でグラフのスキーマを作成しています。ノード、エッジ、プロパティの名前はすべて小文字にするのがベスト プラクティスだと聞いたことがあります。その他のベストプラクティスは何ですか?
たとえば、以下に関する典型的なベスト プラクティスは何ですか。
- スペース
- ダッシュ
- アンダースコア
- キャメルケース
graph-databases - このデータ モデルは、TitanDB の基本的なニュース フィードに最適ですか?
私は Neo4j を使用しておらず、代わりに TitanDB (IBM Graph) を使用していますが、グラフ データベースは初めてなので、とりあえず、Neo4j のドキュメントで提案されているスキーマを使用して基本的なニュース フィードをモデル化しました。
http://neo4j.com/docs/snapshot/cypher-cookbook-newsfeed.html
すべてのドキュメントを十分に読んだ結果、これらのデータベースの動作方法にいくつかの重要な違いがあることに気付きました。
リンクで説明されているモデルでは、各ユーザーは互いに接続されposts
て保存され、各頂点から発せられるステータス更新の長いリストを形成します。vertexes
edges
user
これは Neo4j の機能を考えると理にかなっていますが、TitanDB にはvertex-centric
インデックス作成機能があることを認識しています。詳細は次のとおりです。
http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html
現在、特定のユーザー フィードのクエリが最適であること、多数のユーザーを含む大規模なグラフ、永続的に保持される投稿またはステータスの更新が多数あることを確認しようとしています。したがって、ユーザー フィードの最初の 15 項目を取得するためだけに、すべてのユーザーの友人のすべての投稿をトラバースし、最終的にそれらを並べ替えて制限する必要は避けたいと思います。
そのため、Neo4j のドキュメントに記載されているモデルが本当に TitanDB で使用するのに最適なモデルであるかどうかはわかりません。私の質問は次のとおりです。
- Neo4j のドキュメントに記載されているモデルは、TitanDB での高速ニュース フィードの取得に最適ですか?
- その場合、ユーザー フィードを最適に取得するには、どのようなインデックスを作成する必要がありますか?
- そうでない場合は、各頂点を投稿者に
post
直接接続し、各エッジのプロパティにインデックスを使用する方がよいでしょうか?user
vertex-centric
time
posted
私は、Titan DB での基本的なニュースフィードのモデリング、インデックス作成、および取得に関する一般的なアドバイスを求めています。前もって感謝します。
titan - Gremlin/Tinkerpop を使用して IBM Graph (TitanDB) でユーザー フィードを取得してページ付けするにはどうすればよいですか
以下に示すように、IBM Graph (Cassandra に支えられた TitanDB) でモデル化された非常に基本的なニュース フィードがあります。
次のことを行うクエリを作成しようとしています。
- 頂点から開始
USER: John.Smith
- ユーザーからの最新の 15 の投稿
FRIENDS
を自分の投稿と組み合わせて取得します。 USER: John.Smith
それらの投稿のいずれかが好きかどうかを確認しis_liked
、各投稿の単純なブール プロパティとして返します。
このクエリには、いくつかの前提条件があります。
- 返される各投稿では、投稿のプロパティ
USER
も返される必要があります。この質問のために、avatar
プロパティのみが必要です。 - これらの結果をページ付けできるようにする必要があります。つまり、上位 15 件の投稿を取得したら、次の 15 件、次の投稿などを返すことができる必要があります。
ユーザーの友達を取得するのに問題はありませんLATEST_POSTS
。
私はTinkerpopのドキュメントを読みましたが、私の要件を満たすためにこのクエリに基づいて構築を開始する方法についてまだ迷っています。
また、パフォーマンス、データ モデリング、スキーマ、またはインデックス作成のアドバイスに関するこのアプローチに関するコメントは、非常に役立ちます。つまり、このアプローチでフィードをリアルタイムで大規模に取得できると期待する必要がありますか?
前もって感謝します。
ibm-cloud - ラベル名を持つすべての頂点を取得します
Bluemix で ibm グラフを使用していますが、これは初めてです。
bluemix が提供する GUI を使用して「test」という名前のグラフを作成し、そのグラフに ibm が提供するサンプル データ「Music Festival」をアップロードしました。
現在、以下のクエリを使用して、ラベル「attendee」を持つすべての頂点をクエリしようとしています。
def gt = graph.traversal();
gt.V().hasLabel("attendee");
しかし、私はエラーが発生しています
Error: Error encountered evaluating script def gt = graph.traversal();gt.V().hasLabel("attendee"); with reason com.thinkaurelius.titan.core.TitanException: Could not find a suitable index to answer graph query and graph scans are disabled: [(~label = attendee)]:VERTEX
私が間違っているのかわかりません。
誰かが私がどこで間違っているのか教えてもらえますか?
このエラーを取り除き、期待される出力を得るにはどうすればよいですか?
ありがとう