【发布时间】:2012-12-23 05:25:56
【问题描述】:
我刚刚有了这个想法,并认为这是解决这个问题的好方法,但我问这种方法是否有一些缺点。我有一个经常查询数据库的网页,每个页面加载多达 3-5 个查询。每个查询都进行十几个(字面意思)连接,然后每个查询结果都用于另一个查询以构造 PHP 对象。不用说,即使在云上加载时间也很荒谬,但它现在就是这样工作的。
我考虑将已经构建的对象存储为 JSON 或 MongoDB - BSON 格式。使用MongoDB作为这种类型的缓存引擎会是一个很好的解决方案吗?这是我认为它将如何工作的示例:
- 当用户打开页面时,如果 Mongo 中没有具有正确 ID 的数据,则会触发对 MySQL 的查询,每个返回的数据都被转换为正确构造的对象。该对象被发送到视图并转换为 JSON 并保存在 Mongo 中。
- 如果Mongo中有对应ID的数据,正在发送到PHP进行转换。
- 当 MySQL 中的某些数据发生更改(管理员编辑/删除内容)时,会触发删除函数,该函数也会删除 MongoDB 中已编辑/删除的对象。
使用 MongoDB 是不是一个好方法?这种方法的缺点是什么?使用 Redis 完成这项任务会更好吗?我还需要 NoSQL 用于项目的其他元素,这就是为什么我正在考虑使用这两个元素之一而不是 memcache。
MongoDB as a cache for frequent joins and queries from MySQL 有一些信息,但完全不相关。
【问题讨论】:
-
您是否考虑过优化您的 mysql 数据库架构,以便不再需要数十个连接来构建页面?使用您拥有的技术并在 mysql 中构建缓存有什么问题?添加的技术越多,故障点就越多,维护应用程序所需的专业知识就越多。
-
@Philipp 是的,你说得对,使用的技术越多,管理层就越难,但这不是一个简单的数据库前端项目,它是几年前制作的需要优化的系统它的网页端。架构被尽可能地去规范化,以减少连接的存在,但这太复杂了
标签: php mysql mongodb caching redis