если мы разрешаем использование чистого SQL (а запретить его вряд-ли получится)
то сделать инвалидацию кеша на уровне ORM не получится, остается только кеш запросов на уровне соединения с БД
Получится в частном случае - когда все параметры выборки являются одновременно параметрами кэширования. Например, все, что идет в where, также идет в имя memcached-ключа.
Более того. Если используется внешнее кэширование (мемкэш тот же), это единственно правильная стратегия, обеспечивающая вменяемый cache hit/miss ratio.
И, да, ровно те же параметры используется для инвалидации. Здесь помогут memcached-тэги.
Тут, кстати, становится совершенно неважно, используется plain SQL, билдеры, table gateway, AR или еще что.
