sql - ignite cache 和 postgres 作为 3rd 方数据库的不同查询结果(ignite cache 查询的空结果集)
问题描述
我目前正在尝试将 ignite 数据库作为 postgres 数据库之上的内存中的缓存。postgres 数据库中的数据基本上是按照 tpc-h 模式生成的数据。将数据插入 postgres 后,我将数据加载到 ignite 缓存中。根据对 ignite 缓存和 postgres 的一些 count(*) 查询,来自 postgres 的每一行都存在于 ignite 缓存中。那是给定的情况。现在我假设对 postgres 的查询与对 ignite 缓存的查询给出相同的结果。我的查询并非如此。
这是 postgres 查询:
SELECT l_orderkey, SUM(l_extendedprice * ( 1 - l_discount )) AS revenue, o_orderdate, o_shippriority FROM customer, orders, lineitem WHERE c_mktsegment = 'BUILDING' AND c_custkey = o_custkey AND l_orderkey = o_orderkey AND o_orderdate < DATE '1998-06-01' AND l_shipdate > DATE '1998-06-01' GROUP BY l_orderkey, o_orderdate, o_shippriority ORDER BY revenue DESC, o_orderdate LIMIT 10;";
这是点燃查询:
SELECT l_orderkey, SUM(l_extendedprice * ( 1 - l_discount )) AS revenue, o_orderdate, o_shippriority FROM "CustomerCache".customer, "OrdersCache".orders, "LineitemCache".lineitem WHERE c_mktsegment = 'BUILDING' AND c_custkey = o_custkey AND l_orderkey = o_orderkey AND o_orderdate < DATE '1998-06-01' AND l_shipdate > DATE '1998-06-01' GROUP BY l_orderkey, o_orderdate, o_shippriority ORDER BY revenue DESC, o_orderdate LIMIT 10;";
正如您在上面看到的,查询几乎相同。只有“FROM”部分不同。这必须是这样的,因为 ignite 缓存需要通过以下方式寻址: "CACHENAME".TABLENAME 。
点燃结果:
Postgres结果:
点燃缓存不返回任何结果。postgres 返回预期结果。这怎么可能?提醒一下:完整的数据已加载到 ignite 缓存中。当我计算 chached 表中的行数时,它们与 postgres 表中的行数一样多。问题:为什么 ignite 不能为上面的查询返回正确的结果。
Ignite 由部署在 GKE 集群中的两个节点组成。Ignite 配置如下所示:NODE-CONFIGURATION.XML
通过将 ignite 客户端部署到集群,数据从 postgres 加载到缓存。此客户端在每个缓存上运行 java 函数IgniteCache.#loadCache() 。
解决方案
关于缓存配置,空结果集不是问题。这是关于数据集的问题。我们在某些字段中有尾随空格。执行将字段与 = 而不是 LIKE 进行比较的查询只能在没有尾随空格的情况下工作;)
推荐阅读
- amazon-web-services - AWS SNS,向 slack 发送“连续”通知
- firebase - Google Cloud 函数的权限问题
- javascript - 如何将文件从本地主机发送到网站
- class - 对“位置”的未定义引用
::treeHeight' 在类模板构造函数中 - spring-boot - Spring Boot 2 + Spring Security + 登录表单 + Session Redis 不工作
- vue.js - 从存储在 vuex 中的 axios 获取未定义的 response.data
- python - 如何在 jupyter notebook 中插入 python?
- c - C 中的类型声明等价:这些类型在技术上是相同的,还是只是在语用上相同?
- javascript - 如何使用 Tailwind 和 Vue.js 动态显示移动菜单?
- javascript - 未捕获的错误:语法错误,无法识别的表达式 - JQuery 3.2.1