2013-05-07 2 views
8

Apache Cassandraはシャーディングをサポートしていますか?カサンドラはシャーディングをサポートしていますか?

この質問は些細なように思えますが、私は答えを見つけることができないと謝罪します。私は、カッサンドラがGAEの大きなテーブルの後ろに部分的にモデル化されていることを読みました。しかし、私が現在カッサンドラで見つけているドキュメントのほとんどは、カッサンドラが複数のマシン間でデータを水平に分割するのではなく、多くの多くの複製マシンをサポートしていることを暗示しているようです。これは、カサンドラが高可用性の読み込みに適していることを意味しますが、書き込みボリュームが非常に高くなった場合、最終的には故障する可能性があります。

答えて

13

Cassandraはノード間でパーティションを作成します(分割できない場合は、スケーリングできません)。 Cassandraクラスタのすべてのデータは「リング」に分割され、リング上の各ノードは1つ以上のキー範囲を担当します。あなたは、パーティショナー(例えば、ランダム、順序付けされた)とあなたの要件に基づいてキー/列を複製するリング上のノード数を制御します。

これはかなり良い概観を含んでいます。 Basic architecture

また、Dynamoホワイトペーパーを読むことを強くお勧めします。カッサンドラはいろいろな点でディナモとは違っていますが、概念的には同じ根源に由来しています。それをチェックアウトしてください:Dynamo White Paper

+0

Ok、重要な質問:CassandraはOlog(n)時間に大なり小なり演算子を使用してクエリできますか? –

+0

これは、あなたがランダムパーティーまたはオーダードパーティーパーティーを使用したかどうかによって異なります。 Random Partitionerはノード間で均等に分散するので、範囲問合せがデータを取り出すためにほとんどの/すべてのノードにヒットする必要があります。おそらくO(n)です。 Ordered Partitionerを使用すると、Cassandraは問合せするノードを正確に判別し、その間のリング上のすべてを返すことができますが、これはデータ分散(つまりhello hotspots)を犠牲にして行われます。範囲のクエリを実行する方法があります(たとえば、行キーが列である独自のインデックスを作成するなど)。これは別の質問/ディスカッションを保証するものです。 –

+0

パーティション化されたデータは、すべてのノード(レプリケーション用に設定されたノード)でレプリケートされますか? – user3587180

-3

はい、cassandraはシャーディングをサポートしますが、独自の方法でサポートします。

Mongodbでは、各セカンダリノードにはプライマリノードのフルデータが含まれていますが、Cassandraでは各セカンダリノードにはデータの一部のキーパーティションのみを保持する役割があります。

+7

MongoDB [* replication *](http://docs.mongodb.org/manual/replication/)(セカンダリには冗長性のためのデータの完全コピーが含まれています)を[*シャーディング*](http://docs.mongodb.org/manual/sharding/)(マシンのクラスタ間での論理データベースのパーティション分割)。一般にシャーディングしている場合は、各シャードにレプリカセットをバックアップしてもらいたいですが、2つの概念は実際に直交しています。 – Stennie

関連する問題