4

GraphDBからの私の基本的な要件:

  • 成熟した(生産準備完了)
  • ネイティブ.NETまたはC++言語バインディング
  • 水平方向のスケーラビリティ:両方
    • 自動化されたデータの冗長性とシャーディング
    • 分散グラフアルゴリズム/クエリ実行

現在、私は以下を失格としました:

  • InfiniteGraph:C ++/.NET言語バインディングなし
  • HyperGraphDB:C ++/.NET言語バインディングなし
  • Microsoft Trinity:成熟していない
  • Neo4j:配布されていません

次のスケーラビリティについてはよくわかりません。

  • スパリティDEX
  • Franz Inc. AllegroGraph
  • Sones GraphDB

水平スケーラビリティ機能に関する入手可能な情報は非常に一般的であることがわかりました。これには正当な理由があると思います。

任意の情報をいただければ幸いです。

4

1 に答える 1

10

残念ながら、あなたの基本的な要件は、今日のグラフの一般的な理解をすでに拡張しています-学界においてさえ。リストされている純粋なグラフデータベースでは、すべてのニーズを満たすことはできません。大規模な分散グラフと相互接続グラフを認識する分散グラフアルゴリズムは、依然として大きな研究課題です。したがって、アプリケーションには、よく一致するグラフデータベース、グラフ処理スタック、またはRDFストアを見つけて、不足している部分を自分で実装するのが最適な場合があります。アプリケーションの大部分が頂点に焦点を当てたオンライントランザクショングラフ処理(OLTP)(読み取り/書き込みが多い)であり、分散アルゴリズムを一時的に辞任してから、次のいずれかを使用できる場合:

  • Neo4j
  • OrientDB
  • DEX
  • HyperGraphDB
  • InfiniteGraph
  • InfoGrid
  • Microsoft Horton

それがよりオンライン分析処理(OLAP)(ほとんどが読まれている)であり、頂点と分布に焦点を合わせている場合、それは本当に重要です:

  • Apache Hama(初期段階のプロジェクト)
  • Microsoft Trinity(研究プロジェクト)
  • ゴールデンオーブ(良いですが、Javaのみ)
  • Signal / Collect(http://www.ifi.uzh.ch/ddis/research/sc、ただし研究プロジェクト)

または、エッジ、論理的推論/パターンマッチングに重点を置いており、セマンティックWebのようにエッジレベルのディストリビューションを使用する必要があるか、それよりも優れている場合は、次のRDF- / Triple-/Quadstoreのいずれかを使用できます。

  • AllegroGraph(わかりました、それらはgraphdb / rdfストアハイブリッドです;)
  • イエナ
  • ごま
  • スタードッグ
  • ヴィルトゥオーソ
  • ...そしてさらに多くのRDFストア

良い出発点はDEXまたはNeo4jかもしれません:C ++用の優れた本当に高速なgraphdbカーネルを探しているなら、DEXが最適かもしれませんが、多くのネットワーキングとディストリビューションを自分で実装する必要があります。Neo4jには多くの分散とフォールトトレランスがありますが、現時点では頂点シャーディングレベルであり、そのカーネルはJavaです。分散グラフアルゴリズムの実装に関するアイデアとインスピレーションについては、GoldenOrbとSignal/Collectをご覧ください。別のアプローチは、AllegroGraphまたはStardogから始めることかもしれません。特にAllegroGraphは、彼らの考え方に慣れるまで、最初は少し注意が必要かもしれません。Stardogはまだ若くてJavaですが、高速ですでにかなり成熟しています。

于 2011-09-10T09:53:45.460 に答える