2016-12-29 7 views
0

Я недавно начал изучать Apache для запуска одного из наших проектов. У меня есть требование, я хочу кэшировать несколько столбцов таблицы в памяти и обновлять (или вставлять новую строку) все столбцы, но все же можно кэшировать лишь некоторые из них.Кэш нескольких столбцов, но напишите все из них

Позвольте мне пример, чтобы объяснить:

TABLE_A: 
COLUMN_A - varchar 
COLUMN_B - integer 
COLUMN_C - blob 

В приведенном выше примере таблицы, я хочу, чтобы кэшировать только COLUMN_A и COLUMN_B в памяти и опускаем COLUMN_C от кэширования, но когда я обновить или вставить строку, я должен иметь возможность заполнять все столбцы (включая COLUMN_C, я получаю данные из внешнего источника для обновления/перезаписи строки), но все же можно кэшировать только столбцы A и B. Обратите внимание, что я делаю это, чтобы сохранить некоторые потому что COLUMN_C - огромный объект.

Кроме того, я также хочу получить COLUMN_C по запросу из БД.

Я попробовал взломать с помощью специального JdbcTypesTransformer, он отлично подходит для предварительной загрузки только A B столбцов (не C), но как только я вставляю или обновляю строку, задавая столбец C, C также заносится в кеш.

Пожалуйста, предложите мне способ сделать это в Apache Ignite.

ответ

2

Я не думаю, что есть способ сделать это, и, честно говоря, я бы не рекомендовал это делать. Если COLUMN_C не нужно кэшировать, просто удалите его из своих объектов и обновите его отдельно, а не обновляйте с помощью Ignite. Этот подход более чист, и он будет более эффективным. Сохранение хранилища обновляется узлом сервера Ignite, поэтому вы сначала переносите значение COLUMN_C на серверный узел, и если он огромен, это плохая идея.

+0

Имеет смысл, спасибо за предложение @Valentin. – Santhosh