缓存几列但写下所有列

时间:2016-12-29 15:27:35

标签: ignite

我最近开始为我们的一个项目探索Apache点火。我有一个要求,我想在内存中缓存一些表的列,并更新(或插入一个新行)所有列,但仍然只能缓存其中的几列。

让我举一个例子来解释:

TABLE_A:
COLUMN_A - varchar
COLUMN_B - integer
COLUMN_C - blob

在上面的示例表中,我想只在内存中缓存COLUMN_A和COLUMN_B并从缓存中省略COLUMN_C但是当我更新或插入一行时,我应该能够填充所有列(包括COLUMN_C,我得到了来自外部源的数据用于更新/覆盖行)但仍然只能缓存A列和B列。请注意我这样做是为了节省一些内存,因为COLUMN_C是一个巨大的对象。

此外,我还想从DB中按需获取COLUMN_C。

我尝试了使用自定义JdbcTypesTransformer的hack,它非常适合预加载A& B列(不是C),但只要通过设置列C插入或更新行,C也会在缓存中填充。

请建议我在Apache Ignite中执行此操作。

1 个答案:

答案 0 :(得分:2)

我认为没有办法做到这一点,坦率地说我不建议这样做。如果COLUMN_C不需要缓存,只需将其从对象中删除并单独更新,而不是通过Ignite进行更新。这种方法更清洁,也更有效。持久性存储由Ignite服务器节点更新,因此您最终会首先将COLUMN_C值传输到服务器节点,如果它很大,那么这是一个坏主意。