2017-06-12 10 views
2

私はNeo4Jを完全に新しくしています。私はデザイン/アーキテクチャに関する質問に苦しんでいます。一時グラフの計算にNeo4Jを使用するには?

セットアップ

私は別のノードと、与えられたグラフを持っています。これは、顧客、製品、プロジェクト、販売などの会社のグラフ(映画の例のようにhttps://neo4j.com/developer/get-started/)である可能性があります。このグラフは時々変化する可能性があります。

私の使用例では、このグラフを取り入れ、それを適用し、いくつかのシナリオをテストしたいと思います。 E.私は新しい製品を追加し、責任を持って新しい販売人を定義したり、製品の価格を高めたりします。拡張グラフには「質問する」、言い換えればグラフアルゴリズムを使用して情報を抽出します。私が行った変更は、元のグラフに影響を与えるべきではありません。

要件

  • たびに元のグラフは、分析のためのベースでなければなりませんので、私は、元のグラフに自分の変更を書き込むたくありません。グラフの変更と分析は、異なるユーザーから同時に発生する可能性があるためです。
  • 私はまだCypherの力を使って分析したいので、グラフだけをメモリに入れてもそれはできません。

私はしたいが、私は追加して、特定のユーザーの情報を一時的に変更したい他に、元のグラフを変更しない一方で

問題。リレーショナルDBを使用すると、データの「静的な」部分にIDを指すだけで、SQLではなくコードで計算を実行します。

質問

  • そのための任意のベストプラクティス?
  • Cypherをコードで直接使用することはできますか(非永続的で、メモのデータに直接)?
  • グラフを使用するたびにコピーを作成する必要がありますか(実際は )?
  • ユーザ固有のデータを静的グラフにリンクする概念はありますか?

私はすべてのアイデア、コンセプト、トリックについて満足しています!それは、一般的にグラフデータベースに関するものです... Neo4Jはこれまで私の最初の選択でした。

乾杯 クリス

答えて

3

異なるリレーションシップタイプを使用してグラフに機能フラグを使用するとどうなりますか?

たとえば、元のグラフに10個の映画が好きなユーザーがいるとします。

(user)-[:LIKES]->(movies) 

は、その後、あなたの実験のために、あなたは

(user)-[:LIKES_EXPERIMENT]->(othermovies) 

を持つことができますこれは、あなただけの関係タイプを強制することにより、パフォーマンスを損なうことなく、元の方法で、グラフを横断する可能性を提供しています。一方、それはあなたのトラバーサルで両方の関係タイプを指定することによって、実験のみを使用するか、元のデータを実験と組み合わせることも可能です。

同じプロパティになります。たとえば、プロパティに接頭辞experiment_を付けることができます。そして最後にあなたはまた別のラベルで遊ぶこともできます。異なるグラフデータストアを使用する前に、さまざまな可能性があります。

別の可能性は、ここで説明したようにバージョン管理のいくつかの種類を使用することです:

http://iansrobinson.com/2014/05/13/time-based-versioned-graphs/ しかし、時間要因なし。

本当にヘビー級ソリューションのように聞こえることhttps://github.com/h-omer/neo4j-versioner-core

+0

私はユーザーノードを追加するように感じ、新しい関係が解決策でなければなりません。私は最初にそれを感じる必要がある...私はいくつかの質問であなたに戻ってくるかもしれない。どうもありがとう。 – user1879408

0

私の提案は次のとおりです。

  1. コピーし、新しい場所に元のデータベースのdata foldersudo cp /path/to/original/data/folder ~/neo4j
  2. ランコンテナとしてのデータフォルダのコピーをマッピングDockerコンテナデータフォルダ。:7474:7686が使用されている場合は、別のポートを指定することができます

    docker run \ 
    --publish=7474:7474 --publish=7687:7687 \ 
    --volume=$HOME/neo4j/data:/data \ 
    neo4j 
    

このような何かを。

  1. このコピーを処理します。

これらの命令を.shファイルに変換して、プロセスを自動化することができます。

+0

のための素晴らしいプラグインもあります。数百、数千のユーザがグラフを使って実験していると想像してください。基本データが変更された場合はどうなりますか?それはベストプラクティスではありません。とにかく、このアイデアに感謝します。 – user1879408

関連する問題