You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Ignite C++瘦客户端配置缓存的可查询字段?

Ignite瘦客户端配置缓存可查询字段实现SQL查询的方案

Ignite瘦客户端完全支持配置缓存的可查询字段,实现SQL查询能力,你当前只能用键值API是因为默认创建的缓存未配置SQL所需的元数据或索引。以下是两种可行的实现方式:

方式一:创建缓存时直接配置查询属性

在瘦客户端初始化缓存阶段,通过CacheConfiguration定义QueryEntity来声明可查询字段、索引等属性,以C++瘦客户端为例:

IgniteConfiguration cfg;
cfg.SetEndpoints({"127.0.0.1:10800"});

Ignite ignite = Ignition::Start(cfg);

CacheConfiguration cacheCfg;
cacheCfg.SetName("myCache");

// 定义查询实体,关联键值类型
QueryEntity entity;
entity.SetKeyType("java.lang.Long");
entity.SetValueType("com.example.MyValue");

// 添加可查询字段映射
entity.GetFields()->Put("id", "java.lang.Long");
entity.GetFields()->Put("name", "java.lang.String");
entity.GetFields()->Put("age", "java.lang.Integer");

// 为查询字段创建排序索引
QueryIndex ageIdx;
ageIdx.SetName("idx_age");
ageIdx.SetType(QueryIndexType::SORTED);
ageIdx.GetFields()->Add("age");
entity.GetIndexes()->Add(ageIdx);

cacheCfg.GetQueryEntities()->Add(entity);

// 创建带查询属性的缓存
Cache<long long, MyValue> cache = ignite.GetOrCreateCache<long long, MyValue>(cacheCfg);

完成配置后,该缓存即可支持SQL查询操作。

方式二:通过SQL DDL为已有缓存补全查询配置

如果缓存已创建但未配置查询属性,可通过瘦客户端执行SQL DDL语句,定义表结构并关联缓存,同时添加索引:

// 执行DDL创建关联缓存的表
ignite.GetSql().Execute(
    "CREATE TABLE IF NOT EXISTS MyValue ("
    "id BIGINT PRIMARY KEY,"
    "name VARCHAR,"
    "age INT"
    ") WITH \"CACHE_NAME=myCache, VALUE_TYPE=com.example.MyValue\";"
);

// 为age字段创建索引
ignite.GetSql().Execute("CREATE INDEX IF NOT EXISTS idx_age ON MyValue(age);");

执行上述语句后,原缓存将具备SQL查询能力,可直接使用SQL API执行查询。

关键注意点

  • 确保瘦客户端与Ignite服务端版本一致,避免兼容性问题
  • 若使用自定义值类型,需保证服务端能识别该类型(如在服务端部署包含该类的JAR包)
  • SQL查询性能依赖索引,针对高频查询字段建议创建对应索引

内容的提问来源于stack exchange,提问作者Zheng Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:28:28