2

ユーザーのデータベースを使ってサイトを構築しています。私はarbor.jsを使用して、各ユーザーのグラフを作成しています。グラフは、エッジとノードが次のようになっているツリーのような構造です(画像の準備はできていますが、まだ十分な評判がないようです)。

             vehicle
             /     \
            /       \
          car      truck
          /
         /
       sedan

次のJSONで表されます。

{
   "nodes":{
      "vehicle":{
         "color":"black",
         "label":"vehicle"
      },
      "car":{
         "color":"orange",
         "label":"car"
      },
      "truck":{
         "color":"red",
         "label":"truck"
      },
      "sedan":{
         "color":"red",
         "label":"sedan"
      }
   },
   "edges":{
      "vehicle":{
         "car":{
            "weight":5,
            "directed":true,
            "color":"orange"
         },
         "truck":{
            "weight":5,
            "directed":true,
            "color":"red"
         }
      },
      "car":{
         "sedan":{
            "weight":2,
            "directed":true,
            "color":"orange"
         }
      }
   }
}

各グラフには、常に動的ノードとエッジを持つオブジェクトがありますnodesedgesそれぞれの属性(、、colorなどlabelweightは修正されます。

私は、ユーザーごとにこのデータをモデル化するための最良の方法を見つけようとしています。私は、MongoDBがオブジェクトをドキュメントとしてデータベースに保存できることを理解しているため、RailsをMongoDB(Mongoid)で使用しています。各ユーザーが定義できるグラフモデルを持っていると確信していますが、それを超えると、ノードとエッジを処理する方法がわかりません。

解決策には、、、またはおそらくが含まれるhas_manyと思いますが、固定データと動的データを組み合わせてこれらを使用する方法がわかりません。embeds_manyserialize

また、ディスクからデータをロードするときにグラフを簡単に作成できるように、上記のように正確にデータを取得すると便利です。

どんな助けでもいただければ幸いです!

4

1 に答える 1

0

必要なのは、ユーザーごとにのみグラフ操作を実行することだけです。このモデルに従うことができます。

{
"nodes": [{"type": "vehicle", "color":"black", "label": "vehicle"}, 
          {"type": "car", "color":"orange", "label": "car"},
          {"type":"truck", "color":"red", "label":"truck"},
          {"type": "sedan", "color":"red", "label":"sedan"}
         ],
"edges": {
    "vehicle": [
                  {"type": "car", "weight": 5, "color": "orange"}, 
                  {"type": "truck", "weight": 5, "color": "red"}
               ],
    "car": [
              {"type": "sedan", "weight": 2, "color": "orange"}
           ],
    "sedan": [],
    "truck":: []
}

エッジのマルチマップを保存しているようなものです。また、双方向であるかどうかは自明です。個々のユーザーのグラフを個別に処理する場合、これは非常に自然なモデルです。

要件を満たしているかどうか教えてください。また、コレクションに対して実行するクエリの種類を指定するまで、モデルを提案することはできません。

また、プロジェクトを開始する場合は、neo4jのようないくつかのグラフデータベースを探索できます。

于 2012-12-07T20:22:14.877 に答える