使用索引的Hazelcast分布式查询
我正在尝试使用谓词查询Hazelcast映射。我的谓词代码在没有索引的情况下可以正常工作,但为了获得更好的性能,我想将索引放在使用索引的Hazelcast分布式查询,hazelcast,hazelcast-imap,Hazelcast,Hazelcast Imap,我正在尝试使用谓词查询Hazelcast映射。我的谓词代码在没有索引的情况下可以正常工作,但为了获得更好的性能,我想将索引放在键上 映射结构:IMap-Event是一个POJO类 <map name="event.map"> <in-memory-format>NATIVE</in-memory-format> <backup-count>2</backup-count> <async-backup-count>
键上
映射结构:IMap
-Event
是一个POJO类
<map name="event.map">
<in-memory-format>NATIVE</in-memory-format>
<backup-count>2</backup-count>
<async-backup-count>0</async-backup-count>
<time-to-live-seconds>30</time-to-live-seconds>
<max-idle-seconds>0</max-idle-seconds>
<eviction-policy>LFU</eviction-policy>
<max-size policy="FREE_NATIVE_MEMORY_PERCENTAGE">25</max-size>
<cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
<indexes>
<index ordered="true">eventType</index>
</indexes>
</map>
根据例外情况,我了解到Hazelcast正试图在IMap
的Value
字段上应用索引
是否有一种方法可以将索引放在IMap
的键上 试试看
<indexes>
<index ordered="true">__key.eventType</index>
</indexes>
__key.eventType
作为键值
存储,通常会搜索这些值,因此这就是索引所期望的。当您将eventType
放入索引时,它会在中查找该字段
价值。您需要将其更改为\u key.eventType
,以使其在键中显示
如果在索引实现时需要频繁搜索复合主键的一部分,则可能需要检查主键结构的选择
此外,如果可以,请从3.11.2升级到3.12.1。幕后有一些改进。感谢您的回复。我尝试了这种方法,Hazelcast开始使用索引。但我注意到,由于在hazelcast IMap中频繁插入和删除,总体性能下降。简要介绍一下我的用例:我需要在IMap中每秒插入近10K条记录。使用LRU策略,ttl收回设置为30秒。最终放弃了使用索引的想法。这更多的是一个设计问题,可能不适合这个论坛,因为它是关于问题的。或者至少是一个单独的问题。
<indexes>
<index ordered="true">__key.eventType</index>
</indexes>