12

Web アプリケーションにグラフ データベースを使用したい (ユーザー、投稿、コメント、投票、回答、ドキュメント、ドキュメント マージの Web、およびユーザーとドキュメントに関するその他の推移的な関係を含む)。そこで私は、グラフ データベースの設計方法論のようなもの、つまりリレーショナル データベースに推奨される設計原則 (通常の形式など) に類似したものがあるかどうかを自問し始めました。

質問の例 (発生する多くの質問のうち):

  • データベース内の任意のユーザーノードに関係 (「存在」) を持つトップノードユーザーを作成することは良い考えですか?
  • バージョン管理を組み込む (つまり、関係 (「フォロー」のようなもの) を作成する) ことをお勧めしますか? この関係に戻ることは、ドキュメントが通過した変更を監視することを意味します。
  • 等...

では、Graph Database Design Cookbook は必要でしょうか?

4

1 に答える 1

5

Gremlinユーザーグループ(http://tinkerpop.com/)とNeo4jユーザーグループ(https://groups.google.com/forum/?fromgroups#!forum/neo4j)は、グラフデータベースモデリングについて議論するのに適した場所です。

「Users」などのスーパーノードを作成できますが、インデックスを使用して、key = element_type、value = "user"、id=user_node_idを使用して各ユーザーのインデックスエントリを作成する方が適切でパフォーマンスが高い場合があります。

「フォロー」関係は、FacebookやTwitterのように人や友人によく使用されるため、バージョン管理には使用しません。各エントリにタイムスタンプを付け、last-write winsアルゴリズムを使用するバージョン管理システムをNeo4jに組み込むことができます。また、これが組み込まれているDatomicなどの他のデータベースシステムがあります。

Bulbs / Python( http://bulbflow.com )のブログモデルの例については、Lightbulbのモデル(https://github.com/espeed/lightbulb/blob/master/lightbulb/model.py )を参照してください。

于 2012-05-29T01:00:01.637 に答える