私はNeo4jを使用せず、代わりにTitanDB(IBM Graph)を使用していますが、私はグラフデータベースを初めて使用しているため、Neo4jドキュメントで提案されているスキーマを使用して基本的なニュースフィードをモデル化しました。完全にすべてのドキュメントを読んだこのデータモデルはTitanDBの基本的なニュースフィードに最適ですか?
http://neo4j.com/docs/snapshot/cypher-cookbook-newsfeed.html
、私はこれらのデータベースを操作する方法との間にいくつかの重要な違いを認識しています。リンクに記載されたモデルで
は、ユーザposts
の各々は、それぞれuser
頂点から出るステータス更新の長いリストを形成し、互いにedges
によって接続vertexes
として記憶されます。
これは私がTitanDBは、ここでは詳細に説明vertex-centric
インデックス能力、持っていることを認識していますのNeo4jのcapabalities与えられた意味を成している間:今、私は与えられたユーザーのために照会することで養うことを保証しようとしています
http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html
を多くのユーザーがいる大きなグラフ、永続的に保持されている投稿や状態の更新がたくさんある場合に最適です。したがって、ユーザーフィードの最初の15項目を取得するために、すべての投稿、すべてのユーザーの友だちをトラバースしてから、最後に注文して制限することを避けたいと考えています。次のように私の質問があるので、のNeo4jのドキュメントに記述されたモデルは、本当にTitanDBで使用するための最良のものであれば
そのように、私はわからないよ:
- は最適のNeo4jのドキュメントに記述されたモデルですTitanDBの高速ニュースフィード検索用
- もしそうなら、ユーザーフィードを最適に取得するためにはどのインデックスを作成する必要がありますか?
- もし、
post
頂点を投稿したuser
に直接接続し、各posted
エッジのtime
プロパティのvertex-centric
インデックスを使用する方が良いでしょうか?
タイタンDBの基本的なニュースフィードのモデリング、索引付け、取得に関する一般的なアドバイスを受けています。前もって感謝します。
ありがとうございますBenjamin - わかりましたので、あなたのインデックス提案はNeo4jドキュメントモデルで動作しますか?または、私が提案したように、リンクされたリストではなく、独自のエッジを介してポスト頂点をユーザー頂点に直接接続する必要がありますか?また、それは、2つのプロパティ(ポスト頂点のユーザID、ポスト頂点のタイムスタンプ)、または「エッジ」インデックスにわたって、「頂点」インデックスですか? (接続エッジのタイムスタンプ)。申し訳ありませんが、質問が日常的に見える場合、グラフデータベースは概念的にかなり変化しています。 – gordyr
申し訳ありませんが、私は最初の括弧のセットで次のことを意味しました:(ユーザ頂点のユーザID、ポスト頂点のタイムスタンプ) – gordyr
gordyr - off-hand私はリンクリスト手法を推奨し、エッジ。インデックスについて:あなたがPost頂点にユーザーIDを含めると仮定すると、その要素のインデックスだけです。インデックスは、複数の要素にまたがることはできません。 –