私はちょうどこの考えを持っていて、それがこの問題の良い解決策であると思います、しかし私はこの方法にいくつかの欠点があるかどうか尋ねます。私は、データベースを頻繁にクエリするWebページを持っており、ページの読み込みごとに3〜5回のクエリを実行します。各クエリはダース(文字通り)の結合を行い、これらのクエリの結果はそれぞれ、PHPオブジェクトを構築するための別のクエリに使用されます。言うまでもなく、ロード時間はクラウド上でもばかげていますが、それが現在の動作方法です。
すでに構築されているオブジェクトをJSONとして、またはMongoDB-BSON形式で保存することを考えました。このタイプのキャッシュエンジンとしてMongoDBを使用することは良い解決策でしょうか?これが私がどのように機能すると思うかの例です:
- ユーザーがページを開いたときに、適切なIDを持つデータがMongoにない場合、MySQLへのクエリが実行され、それぞれが適切に構築されたオブジェクトに変換されているデータを返します。オブジェクトはビューに送信され、JSONに変換されてMongoに保存されます。
- 対応するIDを持つデータがMongoにあった場合、そのデータはPHPに送信され、変換されます。
- MySQLで一部のデータが変更されると(管理者がコンテンツを編集/削除する)、MongoDBの編集/削除されたオブジェクトも削除する削除関数が起動されます。
MongoDBを使用するのに良い方法ですか?この方法の欠点は何ですか?このタスクにはRedisを使用する方が良いですか?プロジェクトの他の要素にもNoSQLが必要です。そのため、memcacheの代わりにこれら2つの要素のいずれかを使用することを検討しています。
MySQLからの頻繁な結合とクエリのキャッシュとしてのMongoDBにはいくつかの情報がありますが、それはまったく関係ありません。