グラフデータベース(例:Neo4J)とネットワークデータベース(例:IDS、CODASYL)の違いは何ですか?原則として同じものですか?
3 に答える
CODSASYLのようなネットワークデータベースは、親子(またはCODASYLの用語では所有者とメンバー)の関係の観点から考えると、階層型データモデルに多かれ少なかれ基づいています。これは、ネットワークデータベースでは、任意のレコードを相互に関連付けることができないことも意味します。これにより、グラフ指向のデータセットを操作することが困難になります。たとえば、グラフデータベースを使用して、エンティティ間に存在する関係を分析できます。
また、ネットワークデータベースは事前定義されたフィールドのセットを持つ固定レコードを使用しますが、グラフデータベースはより柔軟なプロパティグラフモデルを使用し、ノード/頂点と関係/エッジの両方で任意のキー/値のペアを許可します。
MartinKleppmann著の「DesigningData-IntensiveApplications」からのコピー。
ネットワークモデルでは、データベースには、どのレコードタイプを他のどのレコードタイプ内にネストできるかを指定するスキーマがありました。グラフデータベースでは、そのような制限はありません。どの頂点も他の頂点へのエッジを持つことができます。これにより、アプリケーションが変化する要件に適応するための柔軟性が大幅に向上します。
ネットワークモデルでは、特定のレコードに到達する唯一の方法は、そのレコードへのアクセスパスの1つをトラバースすることでした。グラフデータベースでは、一意のIDで任意の頂点を直接参照することも、インデックスを使用して特定の値を持つ頂点を検索することもできます。
ネットワークモデルでは、レコードの子は順序付きセットであったため、データベースはその順序を維持する必要があり(ストレージレイアウトに影響がありました)、データベースに新しいレコードを挿入するアプリケーションは、新しいレコードの位置を気にする必要がありました。これらのセットのレコード。グラフデータベースでは、頂点とエッジは順序付けられていません(クエリを実行するときにのみ結果を並べ替えることができます)。
ネットワークモデルでは、すべてのクエリが必須であり、記述が難しく、スキーマの変更によって簡単に壊れていました。グラフデータベースでは、必要に応じてトラバーサルを必須コードで記述できますが、ほとんどのグラフデータベースは、CypherやSPARQLなどの高レベルの宣言型クエリ言語もサポートしています。
まず、正しく質問しましょう。グラフデータベースには、RDグラフ(標準)とプロパティグラフ(非標準)の2種類があります。Neo4Jはプロパティデータベースであり、「標準」のRDFグラフではありません。
次に、上記のSumit Sethiaの回答を読むと、ネットワークモデルとグラフDB(これは、間違いなくRDFグラフとして理解されるべきです)との関係に関して正しい答えが得られます。
次のステップが前のステップを「改善」する開発タイムラインとして関係を考えるのに役立ちます。次に、最初に階層DB、次にネットワークモデル、次にグラフ、次にプロパティグラフのようになります。ちなみに、これは「厳密」ではありません。