web-dev-qa-db-ja.com

大量のバイナリファイルを保存するには、redisを使用する必要がありますか?

大量のバイナリファイルを保存する必要があります(10〜20 TB、各ファイルの範囲は512 kb〜100 MB)。

Redisが私のシステムで効率的かどうかを知る必要があります。システムに次のプロパティが必要です。

  • 高可用性
  • フェイルオーバー
  • シャーディング

コストをできるだけ削減するために、商品ハードウェアのクラスターを使用するつもりです。 Redisを使用してこのようなシステムを構築する場合の長所と短所を提案してください。 RedisのRAM要件が高いことも心配です。

30
biztiger

そのような作業にはRedisを使用しません。他の製品は、IMOに適しています。

Redisはインメモリデータストアです。 10-20 TB=のデータを保存する場合は、10-20 TBのRAMが必要であり、高価です。さらに、メモリアロケータは大きなオブジェクトではなく、小さなオブジェクト用に最適化されています。おそらく、ファイルをさまざまな小さな断片にカットする必要がありますが、それは本当に便利ではありません。

Redisは、HAおよびフェイルオーバー用のアドホックソリューションを提供していません。マスター/スレーブレプリケーションが提供されます(そして非常にうまく機能します)が、このフェイルオーバーの自動化はサポートされていません。クライアントは、適切なサーバーに切り替えるのに十分スマートでなければなりません。サーバー側の何か(ただし、これは指定されていません)は、信頼できる方法でマスターノードとスレーブノードの間で役割を切り替える必要があります。言い換えると、Redisは日曜大工のHA /フェイルオーバーソリューションのみを提供します。

シャーディングは(memcachedと同様に)クライアント側で実装する必要があります。一部のクライアントはそれをサポートしていますが、すべてではありません。最速のクライアント(hiredis)にはありません。とにかく、リバランスのようなものはRedisの上に実装する必要があります。そのようなシャーディング機能をサポートするはずのRedisクラスターはまだ準備ができていません。

他のいくつかのソリューションを使用することをお勧めします。 GridFS を使用したMongoDBが考えられます。 [〜#〜] hdfs [〜#〜] を使用したHadoopは別のものです。 Edgeプロジェクトのカットが好きな場合は、 Elliptics Network を試してみてください。

26
Didier Spezia