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

何千もの中規模のドキュメントを保存するための最も効率的なドキュメント指向データベースエンジンは何ですか?

    それは特定のユースケースに大きく依存します。 ID以外の何かでドキュメントをクエリできるようにしたい場合は、Redisを選択しないでください。 Redisを使用すると、独自のインデックススキームを実装する必要がありますが、それは不要です。

    実際、Redisがあなたのユースケースに適していると思うケースはほとんどありません(Redisに問題があるわけではなく、RedisとMongoの両方を使用することがよくありますが、さまざまな用途に使用されます)。ハッシュとして表現できるオブジェクトがあるように思えます。 MongoとRedisはどちらもハッシュを保存できますが、Mongoはさらに多くのことを実行できます。 Mongoを使用すると、任意のフィールドでドキュメントを検索したり、インデックスを追加して高速化したりできます。フィールドは文字列である必要はなく、数値、日付、リスト、さらにはドキュメントでもかまいません。 (またはドキュメントのリスト)、およびすべてのドキュメントがRAMに収まる必要はありません(ただし、Redisのディスクストア機能が終了すると変更されます)。 Redisにはそのようなものはありません。検索できるようにするには、インデックスを自分で実装する必要があります。文字列以外は保存できず(これは非常に不便な場合があります)、フラットハッシュ以外は保存できません(何らかのマッピングを実装または使用する必要があります)。オームのようなレイヤー)。

    スピードについても言及します。 Redisは非常に高速であり、Mongoも悪くはありませんが、Mongoを使用するユースケースの方が速い場合があります。 使用と言っていることに注意してください モンゴ、モンゴ自体が速いというわけではありません。問題は、Redisを使用していて、主キーではないフィールドを使用してドキュメントを検索できるようにしたい場合は、前述のように、これを自分で実装する必要があるということです。その場合、検索では、Redisに対して少なくとも2つのリクエストを行う必要があります。1つはインデックスの検索用で、もう1つはドキュメントの取得用です。検索結果に複数のドキュメントが含まれる場合は、ドキュメントごとに個別にリクエストする必要があります。これらすべてのリクエストを行うオーバーヘッドは、おそらくRedisの使用をMongoの使用よりも悪くするでしょう。私の経験では、最も単純なキャッシュ、キュー、または同様のもの以外のものは、必要なものすべてを取得するためにRedisに複数のリクエストを行う必要があります。

    ですから、情報が限られているので、MongoDBをお勧めします。



    1. ドキュメントの配列内のオブジェクトをどのように更新しますか(ネストされた更新)

    2. unhideIndex()がMongoDBでどのように機能するか

    3. プレスリリース:ScaleGridがAWSでのRedis™のホスティングサービスを発表

    4. Hadoopエコシステム–Hadoopコンポーネントの概要