2013-07-23 8 views
18

Twitterのような別のデータベースの上にデータベースを構築すると、そのデータベースは基盤となるデータベースの制限と非効率性を継承しますか?グラフデータベースはノード間で効率的にデータを配布できますか?

私はティーンズのデータ​​ベース(http://thinkaurelius.com)に特に関心があります。その理由は、ノード間で効率的にデータセットを分割することをサポートするという主張のためです。

これらは、cassandraの効率のために、ノード間でのデータ配信をサポートすると主張しています。しかし、neo4jは、ノード間でデータを配信しない理由はなく、すべてのノードでデータセット全体を複製する理由は、ノードを1つ残し、そのためにイーサネットネットワークを移動する必要があるグラフの通過が遅すぎる実用的である。

cassandraはグラフの知識がないため、1つのノードにグラフトラバーサルを維持するために最適化することはできません。したがって、ほとんどのグラフトラバーサルはノード境界を越えて行われます。

タイタンは、ノード間で効率的に拡張すると主張していますか?

答えて

19

Titanは、基礎となるストレージバックエンド(HBaseのデフォルトではBass、HBaseの場合はBOP)のキーソート順を決定し、同じパーティションブロックに割り当てられた頂点に同じ物理機械。言い換えると、Titanは、基礎となるストレージバックエンドがデータをどのように配布するかを「理解」し、この認識を利用するグラフ分割手法を使用します。 Titanはドメイン知識を組み込んだ半自動パーティショニングを使用しています。

ピアソンベンチマーク(http://arli.us/edu-planet-scale)では、グラフは、この特定のデータセットのほぼ最適な分割基準である大学に従って分割されました。パーティショニングを行わないと、1200億のエッジにスケーリングすることは不可能に近いでしょう。

Titanは、証明されたテクノロジ(規模、永続性、ホットバックアップ、可用性、災害復旧など)の上に構築され、グラフレイヤを革新します。これは、TwitterのFlockとFacebookのTaoの両方が採用したのと同じルートです。これは、Titanが非常に深いトラバースでは遅いことを意味しますが、Titanは非常に大きなグラフや非常に多くの並行トランザクション(読み書き)に拡張できます。

0

良い質問です。 これはすべて校正に関するものだと思います。 Twitter(Cassandraを使用している)は、グラフデータベースを本当に特定の方法で使用します(2つのレベルの「深度」しか持たない)ので、長いグラフをトラバースする必要はありません(データセット全体を複製する必要もありません)。 私はTitanとNeo4jの両方が正しいと思います。Neo4jは汎用のグラフデータベースを提供しようとしていますので、使用方法に応じて複数のソリューションを用意しています。 :データセット全体を複製する。

実際に、データセット全体を複製せず、グラフの長いパスを移動する場合、速度が遅くなります。

あなたの使い方は?私はTitanを使用したことはありませんが、クエリの「深さ」に応じて、そのパフォーマンスをNeo4jと比較するのがよいでしょう。

+0

Titanはグラフの何かを知っていないcassandra(おそらくは生のデータ)のために、あらゆる種類のグラフをサポートしているようです。 不幸にも、私はテストに使用するサーバーがいくつもありません。私は5台のVMのベンチマークが同じハードドライブ上で実行されているとは考えていませんが、内部ネットワークを使ってこれをテストする公正な方法になります。 –

関連する問題