複合キーを使用して Hazelcast ルックアップのパフォーマンスを改善しようとしています。私はクラスエンティティを持っています:
Class Entity {
private Long id;
private String field1;
private String field2;
private String field3;
// getter and setters
}
hazelcast-server.xml に上記の 3 つのフィールドで構成される複合インデックスを追加しました。
...
<map name="Entity">
<max-idle-seconds>2678400</max-idle-seconds>
<time-to-live-seconds>2678400</time-to-live-seconds>
<backup-count>3</backup-count>
<async-backup-count>3</async-backup-count>
<read-backup-data>true</read-backup-data>
<indexes>
<index ordered="false">field1, field2, field3</index>
</indexes>
</map>
...
Hazelcast マップのクエリ:
EntryObject entryObject = new PredicateBuilder().getEntryObject();
PredicateBuilder predicate = entryObject.get("field1").equal("value1")
.and(entryObject.get("field2").equal("value2"))
.and(entryObject.get("field3").equal("value3"));
IMap<Long, Entity> entityCache = hazelcastInstance.getMap("Entity")
List<Entity> routings = new ArrayList<>(entityCache.values(predicate));
コードは、インデックスの有無にかかわらず正常に動作しています。
質問:
- これは、複合インデックスを作成して使用する正しい方法ですか?
- インデックスが実際にクエリで使用されているかどうかを確認する方法はありますか? (hazelcast management-center コンソールでインデックス関連の情報を取得できませんでした)
多くの hazelcast ドキュメントとインターネット フォーラムをスキャンしましたが、具体的な回答が見つかりませんでした。
Hazelcast バージョン: 3.12 Java バージョン: 8