Я ищу способ сделать дельта-обновления в Hazelcast для большого набора данных (1 миллион + записей)
Вариант использования: карта объектов задается клиентом Hazelcast, в пределах значений карты заполняются только определенные поля, а остальные являются нулевыми.
Мы хотим заменить поля для записи, если они изменены, но если они нулевые или одинаковые, изменений не произойдет.
В настоящее время мы делаем это с помощью процессора ввода, но я считаю, что карта, которую мы передаем в конструктор, будет отправлена каждому члену кластера, что неэффективно.
Есть ли лучший способ сделать это?
private Map mapOfNewValues;
public DomainClassDeltaUpdateEntryProcessor(Map mapOfNewValues) {
this.mapOfNewValues = mapOfNewValues;
}
@Override
public Object process(Map.Entry<String, DomainClass> entry) {
DomainClass oldDomain = entry.getValue();
if (oldDomain != null) {
DomainClass newDomainObj = (DomainClass) map.get(entry.getKey());
if (newDomainObj != null) {
entry.setValue(getDelta(oldDomain,newDomainObj));
}
}
return null;
}
Вызывается с помощью
map.executeOnKeys(deltaMap.keySet(), new DomainClassDeltaUpdateEntryProcessor(deltaMap));