Ignite - 在我们的应用程序中,我们尝试在应用程序启动时将数据从文件加载到缓存中。 我们正在尝试在应用程序处理期间检索值[例如,API 请求登陆到我们的应用程序,试图在请求中验证缓存中的数据。
问题
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="AppMaster"/>
<property name="cacheMode" value="PARTITIONED"/>
<property name="atomicityMode" value="ATOMIC"/>
<property name="queryEntities">
<list>
<bean class="org.apache.ignite.cache.QueryEntity">
<property name="keyType" value="java.lang.String"/>
<property name="valueType" value="java.util.HashMap"/>
<property name="keyFieldName" value="keyId"/>
<property name="keyFields">
<list>
<value>keyId</value>
</list>
</property>
<property name="fields">
<map>
<entry key="keyId" value="java.lang.String"/>
</map>
</property>
<property name="aliases">
<map>
<entry key="keyId" value="keyId"/>
</map>
</property>
</bean>
</list>
</property>
</bean>
问题
请注意,您的密钥始终有效地被索引。因此,如果您询问向其他列添加索引,那么该列必须显示为单独且独立的列,而不是 HashMap 中的任意条目。鉴于上述情况,我的建议如下: 1.) 确定输入文件中每列的类型和名称 2.) 使用具有上述名称和值的 SQL 创建语句创建缓存。 3.) 将数据加载到上面的 SQL 表中 4.) 使用创建索引语句将索引添加到所需的列。 5.) 根据索引列使用过滤器或条件进行查询。
有关创建索引的详细信息,请参阅以下内容:
https://ignite.apache.org/docs/latest/SQL/indexes
希望有帮助!