2

У меня есть две карты лещей качалки, определенные следующим образом.Несколько карт в одном перегородке в карте орехового дерева

IMap<EmpKey, Employee> employeeMap = hazelcastInstance.getMap("employeeMap"); 
IMap<EmpKey, EmployeeFamily> familyMap = hazelcastInstance.getMap("familyMap"); 

Я понимаю, что ключ получает сериализовать (преобразуется в байт [] массив), который затем хэшируются и результатом которого является «мода» на нет перегородок. Это дает нам идентификатор раздела, в котором будут храниться данные. Кроме того, из таблицы разделов в каждом члене он идентифицирует владельца раздела. Из этого следует, что оба объекта employeeObj и family с теми же empKey будут сохранены в том же разделе.

Я хотел бы знать, что произойдет после этого шага. Я понимаю, что ключи хранятся как com.hazelcast.nio.serialization.Data class (двоичная форма). Будет ли отдельные хэш-ведра, поддерживаемые для каждого хэш-карты, чей ключ присутствует в данном разделе, для более быстрого доступа?

Я понимаю, что количество разделов настраивается, но я хотел бы знать некоторые внутренние элементы, прежде чем изменять какую-либо конфигурацию.

ответ

1

Из этого следует, что и employeeObj, и объект семейства с одним и тем же empKey будут сохранены в том же разделе.

Исправить.

Я хотел бы знать, что произойдет после этого шага. Я понимаю, что ключи хранятся как com.hazelcast.nio.serialization.Data class (двоичная форма). Будут ли отдельные хэш-ведра поддерживаться для каждого хэш-карты, чей ключ присутствует в данном разделе, для более быстрого доступа?

Каждый IMAP получает полностью закрытое внутреннее хранилище (оно будет иметь свой собственный экземпляр ConcurrentHashMap в качестве базовой структуры). Таким образом, у вас будет отдельный хэшбакет.