hazelcast 地图中单个分区中的多个地图
Multiple maps in a single partition in hazelcast map
我有两个 hazelcast 地图定义如下。
IMap<EmpKey, Employee> employeeMap = hazelcastInstance.getMap("employeeMap");
IMap<EmpKey, EmployeeFamily> familyMap = hazelcastInstance.getMap("familyMap");
我知道密钥被序列化(被转换成一个 byte[] 数组)然后被散列并且其结果是 'mod' 没有分区。这为我们提供了将存储数据的分区的 ID。此外,根据每个成员中的分区 table,它标识分区的所有者。这意味着具有相同 empKey
的 employeeObj
和 family
对象将存储在同一分区中。
我想知道这一步之后会发生什么。我知道密钥存储为 com.hazelcast.nio.serialization.Data class (二进制形式)。会不会有
为每个散列图维护单独的散列桶,其键存在于给定分区中,以便更快地访问?
我知道分区数是可配置的,但我想在修改任何配置之前了解一些内部信息。
This follows that both employeeObj and family object withe the same empKey will be stored in the same partition.
正确。
I would like to know what happens after this step. I understand that keys are stored as com.hazelcast.nio.serialization.Data class (binary form). Will there be separate hash buckets maintained for each hashmap whose key is present in a given partition, for faster access ?
每个 IMap 都有其完全私有的内部存储(它将有自己的 ConcurrentHashMap 实例作为支持结构)。所以你会有单独的哈希桶。
我有两个 hazelcast 地图定义如下。
IMap<EmpKey, Employee> employeeMap = hazelcastInstance.getMap("employeeMap");
IMap<EmpKey, EmployeeFamily> familyMap = hazelcastInstance.getMap("familyMap");
我知道密钥被序列化(被转换成一个 byte[] 数组)然后被散列并且其结果是 'mod' 没有分区。这为我们提供了将存储数据的分区的 ID。此外,根据每个成员中的分区 table,它标识分区的所有者。这意味着具有相同 empKey
的 employeeObj
和 family
对象将存储在同一分区中。
我想知道这一步之后会发生什么。我知道密钥存储为 com.hazelcast.nio.serialization.Data class (二进制形式)。会不会有 为每个散列图维护单独的散列桶,其键存在于给定分区中,以便更快地访问?
我知道分区数是可配置的,但我想在修改任何配置之前了解一些内部信息。
This follows that both employeeObj and family object withe the same empKey will be stored in the same partition.
正确。
I would like to know what happens after this step. I understand that keys are stored as com.hazelcast.nio.serialization.Data class (binary form). Will there be separate hash buckets maintained for each hashmap whose key is present in a given partition, for faster access ?
每个 IMap 都有其完全私有的内部存储(它将有自己的 ConcurrentHashMap 实例作为支持结构)。所以你会有单独的哈希桶。