1

Facebook のようなソーシャル ネットワークのように、2 人以上の共通の友人のリストを返す組み込み機能を備えたグラフ データベースはありますか? 結果は、複雑な計算を実行したり、データベースをトラバースしたりする必要なく、できるだけ速く返される必要があります。そうでない場合、それを実装する方法は何ですか?OriendDB はどうですか? グラフ データベースと Redis を組み合わせて使用​​するのはどうですか?

4

1 に答える 1

0

特定のグラフ データベースについてはよくわかりませんが (私は redis の上に独自のグラフ データベースを構築することからこれにたどり着きました)、友人が直接のつながりを意味すると仮定すると、共通の友人を見つけることはかなり簡単です。それぞれから完全な友人リストを取得し、交点を計算するだけです。 .

Redis には、これをネイティブかつ非常に高速に実行するコマンドがあります。そのための SQL クエリもかなり単純です。単一のノードのすべての接続を取得することは、任意のグラフ データベースで利用できる必要があります。完全なリストを取得してアプリ コードで交差を計算する必要がある場合でも、人に対処する必要がない限り、パフォーマンスはおそらく十分です。何千、何百万もの友達がいる人。

より複雑になるのは、間接的な関係を扱う場合です。交差操作は同じですが、グラフをトラバースしないと必要な形式でセットが存在しないため、交差を計算する前に、すべての第 2 レベルの接続のセットを構築する必要があります。ユーザーごとに。クエリの最初のステップとしてこれを行うか、接続が変更されたときに更新された永続的なセットを維持することができます。適切な方法は、データの使用と書き込みパフォーマンスまたは読み取りパフォーマンスを最適化する必要があるかどうかによって異なります。

于 2011-08-30T22:35:17.587 に答える