グラフデータベースの言語をインポートし、理解する
- ノード(円で表されます)、
- エッジ(矢印で表される)、および
- プロパティ(ノード/エッジのメタデータ)
グラフィック(ウィキペディアの提供)は、有向グラフを説明しています。
Railsで無向グラフをモデル化する最良の方法は何ですか?
つまり、すべてのエッジが逆数であり(上の図のように)、各エッジのプロパティが方向に関係なく同じであるグラフ(上の図とは逆)。
ActiveRecord経由でSQLストアを使用したデフォルトのRails3セットアップを想定しましょう。
二重ポリモーフィックアソシエーションは、上の画像で説明されているデータをモデル化できる有向グラフを作成します。
def Edge < ActiveRecord::Base
belongs_to :head, polymorphic: true
belongs_to :tail, polymorphic: true
end
class Node < ActiveRecord::Base
has_many :from, as: :head
has_many :to, as: :tail
end
class Group < ActiveRecord::Base
# a Node of Type: Group
has_many :from, as: :head
has_many :to, as: :tail
end
逆の関係を管理するためにこのモデルを拡張する必要がありますか、それともより良いモデルが利用可能ですか?
アプリの1つの要素はグラフの問題である可能性がありますが、アプリが問題の中心にあること、データに対してグラフの横断を実行する必要があること、データセットが使用可能なメモリよりも大きいことを意味するものではありません。