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

Redisを使用して第2レベルのキャッシュを休止状態にします-パフォーマンスが向上しますか?

    キャッシュするのに適したものをキャッシュし、キャッシュしてはならないデータのキャッシュを回避する場合に予想される大幅な違い。美が見る人の目にあるように、同じことがパフォーマンスにもあります。 HibernateASの第2レベルのキャッシュプロバイダーを使用する際に留意すべきいくつかの側面を次に示します。

    カスタムシリアル化なし-メモリを大量に消費
    第2レベルのキャッシングを使用する場合、Kryoなどの高速シリアル化フレームワークを使用できず、Javaシリアル化に固執する必要があります。

    これに加えて、エンティティタイプごとに個別のリージョンがあり、各リージョン内に、各エンティティの各キーのエントリがあります。メモリ効率の観点から、これは非効率的です。

    リッチオブジェクトを保存および配布する機能がありません
    最新のキャッシュのほとんどは、オブジェクトを多数の小さな断片に断片化するコンピューティンググリッド機能も備えており、データのコロケーションが保証された分散タスクを実行する能力が低下します。これはグリッドプロバイダーに少し依存しますが、多くの場合、制限になります。

    準最適なパフォーマンス
    必要なパフォーマンスの量と、Hibernateの第2レベルのキャッシュを使用しているアプリケーションの種類に応じて、良い選択と悪い選択があります。プラグアンドプレイであるという点では良いです...."一種の..."あなたが得たであろうパフォーマンスを決して圧迫しないので悪いです。また、豊富なモデルを設計することは、より多くの先行作業とより多くのOOPを意味します。

    キャッシュ自体のクエリ機能が制限されています
    これはキャッシュプロバイダーによって異なりますが、一部のプロバイダーは、IDとは異なるWhere句を使用してJOINを実行するのが実際にはうまくいきません。たとえば、Hazelcastでクエリのメモリインデックスを作成してインしようとすると、私が何を意味するのかがわかります。



    1. Dockerコンテナで実行されているmongoDBに接続できません

    2. IDセットで複数のドキュメントを更新します。マングース

    3. コレクション内のプロパティをマッピングするためのmap/reduceの使用

    4. MongoDBがSQLDBよりもはるかに高速である理由の詳細で具体的な理由はありますか?