-1

私は、ネットワーク内の人の位置に関して検索する必要がある私のプロジェクトに取り組んでいます。基本的に、異なる接続を持つユーザーを含むデータベースを定義する必要があります。

ネットワークのように、ユーザーはノードであり、接続はエッジです。友情は一種のエッジであると仮定します。他のタイプの接続があるかもしれません。接続には、ある種の重み/優先度がある場合があります。

これで、ユーザーが別のユーザーを検索するとき、結果は、接続とその重み/優先度に応じて、最上位の結果が最も近いノードになり、最も遠いノードが最終的になるような順序になるはずです。

これでどこから始めるべきかわかりませんか?このための既製のコードは必要ありませんが、学ぶ必要があります。それで、あなたがこれについて知っているならば、チュートリアルまたは記事を提案してください。また、これについて学ぶことができるコードを提案することもできます。

別の質問:MySQLデータベースを使用してこのタイプのネットワークを表すことはできますか、それとも特別なデータベースが必要ですか?

4

1 に答える 1

1

必要なデータベース エンジンを自由に選択できる場合は、グラフ データベースが最適なソリューションです。ウィキペディアで完全なリストを見つけることができます: http://en.wikipedia.org/wiki/Graph_database

このビデオもご覧ください: http://www.youtube.com/watch?v=UodTzseLh04

私は Neo4J ( http://www.neo4j.org/ )で良い経験をしました。これは Java で書かれていますが、多くの言語のバインディングを提供します (JMV 言語では組み込みモードで実行できます)。REST インターフェイス経由でも使用できます。グラフをクエリする言語は Cypher ( http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html ) で、SQL とそれほど違いはありません。

ただし、評価で考慮すべき重要なポイントの 1 つは、グラフのサイズです。非常に複雑なデータをモデル化する機能には、複数のマシンで効率的にスケーリングすることが難しいという主な欠点があります (グラフの分割は NP 困難な問題です)。Neo4J は 1 台のマシンで大量のノードを処理できますが、非常に大量のグラフが必要な場合は、Titan ( http://thinkaurelius.github.com/titan/ ) を試すことをお勧めします。

タイタンの詳細: http://www.slideshare.net/slidarko/titan-the-rise-of-big-graph-data

また、将来的に重い処理が必要になった場合: http://thinkaurelius.github.com/faunus/

于 2013-03-08T13:11:44.290 に答える