【问题标题】:Are read through and sql indexing supported simultaneously?是否同时支持通读和 sql 索引?
【发布时间】:2016-08-08 20:02:35
【问题描述】:

使用 apache Ignite,您可以读取缓存 http://apacheignite.gridgain.org/docs/persistent-store,还可以通过 SQL http://apacheignite.gridgain.org/docs/sql-queries 查询缓存。

是否同时支持这两个功能?因为现在我已经通读了。这对我来说很有意义,它有一个密钥,如果它被要求提供一个没有节点知道的密钥,那么它会转到 db。

然而加载方法只为主键定义,没有为任何其他字段定义。这是否意味着它与通读不兼容,或者还有其他方法可以实现以获得完整功能?

【问题讨论】:

  • 全功能是什么意思?
  • 我的意思是一个缓存,它具有通读功能,并且可以使用 SQL 进行索引查询。 load 方法是基于主键的,而不是任何其他字段,那么它如何能够查询另一个字段以读取数据库?

标签: ignite


【解决方案1】:

SQL 和直读可以同时使用,但查询将始终只针对内存中的数据运行。对于通读,您需要知道密钥集,因此它仅适用于基于密钥的访问(get()getAll() 等)。对于查询,您需要手动预加载数据(例如使用loadCache() 方法)。

也可以参考这里的讨论:Sql query over Ignite CacheStore or over database

【讨论】:

  • 这就是我的怀疑。除非 JCache 接口提供了创建任意加载方法的机会,否则我看不出它是如何工作的。至于由于节点故障导致的数据丢失,您是否知道 Ignite 是否会知道在 SQL 查询时重新加载丢失节点上的密钥?
  • 如果您丢失了数据,您仍然需要在运行查询之前手动加载数据。我建议使用备份来避免数据丢失。
【解决方案2】:

是的,您可以同时使用两者,但首先您应该先了解其用途。

read-through:每当从缓存中请求数据但不存在时,Ignite 可以自动从底层数据库加载它并将结果返回给用户,并且要获取数据,您可以使用cache.get(key)、@987654324 等方法@。更多信息请使用此链接Data Loading

SQL 查询:第一个数据应该在缓存中以使用 SQL 查询,并且 SQL 索引通过在该列上创建索引来帮助您更快地查询。更多详情可以参考Query configuration by annotations

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多