对于我正在进行的项目,我们有一个完全规范化的数据库,其中没有多余的信息。
我想保留这种方法,但也要加上"高速缓存";表,本质上是具有预先计算的信息的表。我希望能够将这些信息保存在单独的表格中(然后根据需要将其删除并重新生成)。
例如,其中一部分涉及一个论坛。一个";缓存的";值将是用户发布的帖子数。没有必要将其保存在任何规范化的表中,因为它可以根据与该用户链接的帖子数进行计算。然而,这是一个(相对)昂贵的调用,所以缓存表会为我跟踪这个值,我可以根据需要从中提取。
我还强烈考虑使用像MongoDB这样的NoSQL数据库,因为缓存的表基本上没有联接或外键(这非常适合MongoDB)。
有什么想法吗?我应该如何使用Symfony2中的条令来处理这个问题?以前有人这样做过吗?
非常感谢!
更新
正如greg0ire所评论的,看起来Doctrine有一些内置的缓存功能:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html
有人知道我是否可以使用它来缓存我的值而不将它们存储在数据库中吗?
例如,如果我有一个未映射的属性$postCount,我可以使用Doctrine来缓存该值(或者我猜是填充了该值的对象)吗?
这种方法(缓存到内存而不是数据库)的唯一问题是,我们在集群环境中工作,所以我要么必须多次构建缓存(用户访问的每个服务器),要么设置共享缓存服务器(这有点棘手)。
我将继续研究这条路线,但有人知道任何数据库存储方法吗?
谢谢。
我想您可能正在寻找Doctrine的结果缓存以下是sf2配置的相关部分。