使用Memcache,我应该使用PDO还是ORM?

时间:2015-02-01 19:35:17

标签: php caching pdo orm

我正在开发一个带有自定义HTML5前端和后端的项目,我是根据经验设计的。后端由消息队列和缓存组成 - 目前我已经选择了Beanstalk和Memcache,因为我和他们有家人但是我愿意接受建议。

我的问题来自于我的编码器如何与我们用来存储数据的MySQL数据库连接。我们的想法是预先缓存大部分或全部数据库,以便网站运行得非常快。它不是一个巨大的数据库,所以Memcache的内存不应该是一个问题。但是,我的编码器正在使用CodeIgniter和GreenBean。我之前和之后都没有听说过GreenBean它几乎没有任何与绿豆相关的食物。我能找到的一点点建议它是一个符合我编码器告诉我的ORM。

问题是这个。使用原始PDO我的预缓存方案很简单 - 我会从每个表中获取每一行并使用密钥将其存储在缓存中。然后,每当我需要这些数据时,我会首先查看缓存,然后查看数据库。如果在后端更改了某些内容,那么我只需要更新数据库中的该行以及缓存中的相关密钥。

使用ORM,如果我将序列化的整个ORM对象存储到缓存中,那么它将保存一堆相关数据。如果更改了某些内容可能不正确的数据。例如,您有一个员工数据库链接到他们工作的办公室和他们工作的部门.ORM抓住办公室和部门,我们将所有这些存储在缓存中。但是,如果办公地址改变了该办公室中每个员工的ORM对象现在陈旧/不正确。

在该示例中,只是让缓存过期可能不是大多数时间的问题。但在我的应用程序中,该数据应该立即得到更新。因此,在一个简单的PDO方案中,您将刷新与更改的数据相关的缓存键,并且每个将来的页面调用都会获取更新的数据。但是对于ORM,您有许多可能不正确的缓存对象实例,并且没有找到它们的好方法。所以在我看来,你现在已经对你的缓存对象进行了某种形式的索引,当你改变一些简单的东西时,你可能正在刷新并重新填充一大块缓存。那时网站变得非常缓慢。

通常情况下,我会在第一次需要之后缓存数据库结果,但在这种情况下,我认为对于许多第一次请求特定数据集的用户来说,这可能会变得非常慢。此外,还有一些搜索功能可能需要来自数据库的大量数据。因此我希望预先缓存。

所以在这种情况下,我认为ORM会损害网站的性能。我想我不是第一个遇到这个问题的人。是否有一个可以很好地处理这种情况的ORM?我有没有更好的后端架构?

由于

0 个答案:

没有答案