私は、祖先型のデータを格納するRubyアプリケーションを作成しています。私。ファミリーツリー。祖先型の提案データベース:MongoDB、Redisなど?
残りのアプリケーションでは、MongoDBは階層構造に適しているため、ストレージとしてMongoDBを使用していますが、祖先データは階層的ではありますが、そのモデルにはあまり適していません。これらの問題を処理するために、より適切なデータベース・レイヤーに入れ替えなければならないかどうかについて誰かが示唆しているのであれば、私は不思議です。
I.e. AはB(双方向)とペアになり、親CとDを持ちます.Bは親EとFを持ちます.AとBは子G、H、Iを持ちます。GはHとペアになります。
したがって、1つのノードに2つの親ノードがあるため、再帰的ではありません。したがって、両方の親が同じツリーを二重に埋め込むため、MongoDBでは埋め込みが意味をなさない。より強固なソーシャルグラフに近づいています(2種類の関係しかありません)。私はRedisのセットがうまくいくと思っていますが、Polyglotの永続性を持つスタックを複雑にする前に、同様の構造を設計している可能性のある他の人からフィードバックを得ることができればと思っていました。私がRedisの関係をMongoDB文書のオブジェクトデータで保存するだけであれば、それはおそらく大丈夫でしょうが、私がRedisで持っている他の懸念は、これらのツリーをすべてメモリに格納することは素晴らしい考えではないかもしれません。
私はneo4jで遊んでいました。本当にとても滑らかに見えます。しかし、彼らのライセンスの巨大なファンではない。これはmongodbのような文書データベースで、私のアプリの残りの部分には完璧です。だから、私はすべてのmongodbを利用するか、祖先のデータだけを別のソリューションに混ぜて使用します。グラフデータベースは、赤目集合よりも利点がありますか?グラフのように見えるdbは不幸です。 –
あなたのアプリが何をしているのかの文脈がないなら、それが過度なものかどうかを言うことは不可能です。非リレーショナルデータベースを使用する場合は、データを保存する方法とアクセス方法を前もって検討する必要があります。 2番目の部分があなたの説明に欠けているので、答えることは不可能です。あなたは1レベル以上のリレーションシップをナビゲートする必要がありますか(RedisやTwitterのFlockDBで得ることができます)?より一般的には、関係をナビゲートしてその側面を発見する必要があるほど、グラフDBはより意味を持ちます。 – alexpopescu
私はトピックを投稿してからかなり研究しています。本質的に私はDAG(Directed Acyclic Graph)を扱っています。 Neo4j(とおそらく他のグラフDB)は、ノードをトラバースするのに最適なようです。ユーザは、任意のノードにノード(存在しない場合は父、存在しない場合は母、複数の子)を追加することができ、システムはある深さまでグラフの視覚化を行います。フォーカスされたノードから任意の方向に3の半径を言う。だから私は最大3つのノードまで移動していただろう。間違いなく、グラフのDBの問題のように聞こえ始めます。 –