2017-10-07 7 views
2

私はデータベースをグラフ化するのが初めてで、ArangoDbのPOCを見ています。データベースを設計する際のベストプラクティスは何ですか?具体的には、異なるが関連するノードタイプは、別々のコレクションまたは同じコレクションに存在する必要がありますか?別のノードが異なるArangoコレクションにあるべきですか?

一般的なコンセンサスは、すべてを1つのコレクションに配置することですが、複数のコレクションを考慮する必要があるのはいつですか?例えば、多数のデバイスから温度を読み取るなど、高いトランザクションレートを処理するための考慮事項はありますか?これは、1つのコレクションにデバイス情報を記録し、別のコレクションでデバイス情報を記録する場合ですか?

答えて

2

はい、異なるノード/頂点タイプを別々のコレクションに配置することをお勧めします。したがって、あなたの例では、「学生」、「クラス」、「場所」、および「教師」の4つの頂点コレクションがあります。次に、いくつかのエッジコレクションを作成したいと考えています。 "HasAttended"は、 "学生"の辺をクラスに保存するためのものです。

データベースを設計するときに、データモデルを紙に書き留める(またはツールを使用して視覚化/編集する)ことができます。

正確なユースケースはわかりませんが、コレクション「デバイス」と別のコレクション「温度」を持つことは意味があります。次に、 "デバイス"と "温度"の間にエッジを保存するエッジコレクションを持つことができます

+0

これまでのRDBMSのアプローチから、私はそれにアプローチしました。ただし、Arangoのグラフ機能を使用するには、すべてのエッジが同じコレクション内にある必要があります。その場合、ノードが同じコレクションに含まれてはならない理由はありますか? – SteveC

+0

UIからグラフを作成するときに、エッジコレクションを追加することができます(「+」をクリックしてください)。たとえば、Person-IsFrom-> City-IsInCountry-> Countryのようなグラフを視覚化することができます。それにもかかわらず、はい:別々のエッジコレクションと別々の頂点コレクションを持つ重要な理由があるかもしれません。効率的な方法でデータモデルを最適化して設計してください。これは、クエリの作成方法とこれらのクエリの実行方法に直接影響します。データモデルは常に最初のステップです。モデルが最適化されていない場合、ある時点で問題が発生する可能性があります。 – Santo

関連する問題