4

私にとって、リレーショナルデータグラフであり、各テーブルはノードであり、各外部キーは2つのノードを接続するエッジです。

そのため、Neo4jや「グラフデータベース」のようなものについて聞いたとき、それらがすでにグラフであるリレーショナルモデルと本質的にどのように異なるのかを理解するのは難しいです!

最も重要なのは、2つの違いがわからないため、グラフモデルで最もよく解決される問題ドメインと、リレーショナルモデルで最もよく解決される問題ドメインを特定するのが難しいことです。私は次のような一連のガイドラインを探しています。ねえ、この問題は間違いなくグラフモデルで最もよく表されるので、(たとえば)Neo4jを使用します。または、次のように言います。この問題は、リレーショナルモデルで最もよく表されるので、(たとえば)MySQLを使用します。

編集:要約すると、グラフモデルはリレーショナルモデルよりも(データに関して)どの問題領域をよりよく解決しますか?

4

3 に答える 3

-1

リレーショナルDBの代わりにneo4jを使用したい場合の1つ:

テーブル間でほとんど複数の結合を使用している場合、特にテーブル自体を結合している場合は、グラフDBの使用を検討してください。

私の目には、グラフDBを使用することは、そのような種類の情報を格納する方法であり、私は非常に少数の方法でクエリを実行しており(または、クエリの1つのパターンのみを使用している可能性があります)、答えの速度を探しています。十分なクエリタイプを使用し、それでも十分な計算能力がある場合は、リレーショナルDBを使用する方が適しています。

グラフDBについて詳しく知りたい場合は、数学グラフ全般(http://en.wikipedia.org/wiki/Graph)について読んでおくことをお勧めしますが、それを理解するのは難しいかもしれません。あなたが強い数学的背景を持っていない場合に備えて一人で。

于 2012-07-17T15:37:59.113 に答える
-1

あなたが言ったように、ノードを行で、リレーションをテーブルで、プロパティを列で比較すると、グラフとリレーショナルDBの構造は同じに見えるかもしれません。

ただし、基本的な違いは、データへのアクセス方法です。

2つのノードをリレーションで接続し、それにラベルを追加して、外部キーを使用するのではなく、それらが関連しているかどうかを簡単に見つけることができます(テーブルに大量のデータがある場合は遅くなります)。

グラフDBを使用して、RDBMSでそのノード(関連する)に関する関係と追加情報を維持します。アプリに要件がある場合は、両方を1つのアプリで使用できます。

于 2014-01-03T18:02:00.413 に答える
-1

一言で言えば、「グラフ」は「再帰的」を意味します。次のように配置した後、データを再帰的に処理する場合は、グラフが必要です。

struct node {
     *node[] edges;
}

または、接続のマトリックスとして:

  | a | b | c |
--------------
a | x |   |   |
b |   | x |   |
c |   |   | x |

このようなアルゴリズムの例は、ダイクストラ法と最急降下法です。

于 2022-01-26T14:08:43.243 に答える