sql >> データベース >  >> NoSQL >> Redis

RedisレプリケーションとRedisシャーディング(クラスター)の違い

    シャーディングはほとんど複製のアンチテーゼですが、それらは直交する概念であり、一緒にうまく機能します。

    シャーディングは、パーティショニングとも呼ばれ、データをキーごとに分割します。レプリケーションはミラーリングとも呼ばれ、すべてのデータをコピーすることです。

    シャーディングは、パフォーマンスを向上させ、任意の1つのリソースのヒットとメモリの負荷を軽減するのに役立ちます。レプリケーションは、読み取りの高可用性を取得するのに役立ちます。複数のレプリカから読み取る場合は、すべてのリソースのヒット率も低下しますが、すべてのリソースのメモリ要件は同じままです。スレーブに書き込むことはできますが、レプリケーションはマスター->スレーブのみであることに注意してください。したがって、この方法で書き込みをスケーリングすることはできません。

    次のタプルがあるとします:[1:Apple]、[2:Banana]、[3:Cherry]、[4:Durian]、2台のマシンAとBがあります。Shardingを使用すると、キー2、4をマシンA;キー1、3はマシンBに保存されます。レプリケーションでは、キー1、2、3、4をマシンAに保存し、キー1、2、3、4をマシンBに保存します。

    シャーディングは通常、キーに対してコンシステントハッシュを実行することによって実装されます。上記の例は、次のハッシュ関数h(x){return x%2 ==0?A:B}を使用して実装されました。

    概念を組み合わせるために、各シャードを複製する場合があります。上記の場合、マシンAのすべてのデータ(2,4)をマシンCに複製でき、マシンBのすべてのデータ(1,3)をマシンDに複製できます。

    特定のクロスキー関数は機能しなくなりますが、任意のKey-Valueストア(Redisはその一例にすぎません)はシャーディングをサポートします。 Redisはすぐに使用できるレプリケーションをサポートしています。



    1. AmazonEC2にMongoDBをデプロイするための6つのベストプラクティス

    2. MongoDBの2つのコレクションをアトミックに更新する方法はありますか?

    3. 非常に大量のデータ用のどのNoSQLデータベース

    4. MapReduceのHadoopOutputFormatとは何ですか?