Кэш поддержки SQL с откатом к базе данных

Есть ли какой-либо продукт, который может выполнять запросы с использованием JDBC (обычный SQL), он видит, все ли таблицы в запросе находятся в таблицах CACHED, и использует кеш, в противном случае откат к серверной базе данных.

Я знаю два продукта: Oracle In Memory Database (IMDB) Cache и VMware SQLFire.

Я не знаком ни с одним из них, поэтому я хочу знать, можно ли запрашивать кеш IMDB для некэшированных таблиц, чтобы он возвращался к базовой базе данных?

Есть ли другие продукты, поддерживающие эту функцию?


person Amir Pashazadeh    schedule 28.12.2011    source источник


Ответы (2)


С 11g вы можете использовать JDBC OCI клиентский кэш результатов:

Функция клиентского кэша результатов позволяет кэшировать на стороне клиента наборы результатов SQL-запроса в памяти клиента. Таким образом, приложения OCI могут использовать память клиента, чтобы использовать преимущества кэша результатов клиента для сокращения времени ответа на повторяющиеся запросы.

Обратите внимание, что предложение CACHE не означает что подразумевает название:

Для данных, к которым часто обращаются, это предложение указывает, что блоки, полученные для этой таблицы, помещаются в самый последний использованный конец списка наименее недавно использованных (LRU) в буферном кэше, когда выполняется полное сканирование таблицы. Этот атрибут полезен для небольших интерполяционных таблиц.

person Jon Heller    schedule 29.12.2011
comment
Я использую JPA (Hibernate) в своем проекте и хочу действительно прозрачный кеш. Добавлять подсказки запроса в оператор JPAQL или HQL непросто. - person Amir Pashazadeh; 29.12.2011
comment
Вы можете попробовать изменить теги, чтобы другие люди посмотрели на этот вопрос. (Может быть, Hibernate или JPA? Я не знаком с этими технологиями.) - person Jon Heller; 08.01.2012
comment
Я эксперт по Hibernate, и я считаю, что он ничего не делает для Hibernate, за исключением того, что с помощью Hibernate не так просто сопоставить сущность с разными источниками данных. - person Amir Pashazadeh; 22.01.2012
comment
Насколько я знаю, Oracle TimesTen почти делает то, что я хочу, но есть ли у кого-нибудь опыт работы с ним? Можно ли сопоставить некоторые таблицы в TimesTen с нулевыми строками для кэширования? В приложении Hibernate намного проще иметь только один источник данных, поэтому было бы намного лучше использовать TimesTen просто как прокси для реальной базы данных. - person Amir Pashazadeh; 22.01.2012
comment
Не думаю, что смогу помочь вам с этими вопросами. Судя по малому количеству просмотров, я сомневаюсь, что кто-то еще внесет свой вклад. Вам, вероятно, следует отредактировать этот вопрос, чтобы уточнить, что также увеличит его и привлечет больше внимания. - person Jon Heller; 22.01.2012

Oracle In Memory Database (IMDB) Cache поддерживает функцию, о которой вы спрашиваете.

Если оператор SQL, который вы используете, ссылается на таблицы кеша IMDB, то будет использоваться кеш. Если операторы SQL, которые вы используете, относятся к таблицам без кэширования, то будет осуществляться доступ к базе данных Oracle.

IMDB Cache использует SQL или PLSQL для кэширования чтения и/или записи в базы данных Oracle. Вы можете использовать JDBC [или ODBC, OCI, ODP.Net, Node.js, Python, Go, Ruby и т. д.] для связи либо с базой данных Oracle, либо с кэшем IMDB.

IMDB Cache также работает с технологиями объектно-реляционного отображения, такими как Hibernate [например, JPA] для доступа к данным.

Кэш IMDB использует базу данных Oracle TimesTen In-Memory и теперь называется «кэш базы данных уровня приложений Oracle».

Я менеджер по продукту Oracle TimesTen.

person ScalableDBDoug    schedule 21.11.2019