跳到主要内容

数据查询概述

数据湖中有多个存储库,根据查询内容不同,使用的查询语言也不同。 本节整理了这三种存储库各自的使用方法。

想查询的内容存储库语言文档
元数据(如设备 · 标签 · 用户)PostgreSQLSQLPostgreSQL
时序数据(如标签值)Aster TSDBCQLCQL
跨存储库的联查 · 批量分析Spark (Kyuubi)Spark SQLSpark SQL
选择标准一句话

单个标签的单个时间段用 CQL,设备列表或配置用 PostgreSQL, 需要混合多个存储库或扫描数亿行数据时用 Spark SQL。

三种存储库的特性不同​

PostgreSQLAster TSDB (CQL)Spark SQL
擅长联查 · 约束 · 事务单个分区的按时间范围查询大规模扫描 · 跨存储库联查
不擅长数亿行的时序数据任意联查,无分区键的查询短响应时间(秒级启动开销)
响应时间毫秒级毫秒级秒到分钟级
连接方式5432904210000 (Kyuubi)

🔴 不要将 CQL 当作 SQL 使用。 Aster TSDB 是一种「通过分区键查找并按聚类顺序扫描」的 存储库。如果在没有分区键的情况下添加条件,会扫描所有节点;此时 Aster TSDB 会 要求提供 ALLOW FILTERING —— 这个要求是警告,而非许可。 对于这类查询,请使用 Spark SQL。

如何连接 —— 两种方式​

① 通过控制台 —— 使用浏览器执行 SQL。会应用账户、权限和审计功能。

数据网关控制台 就是该界面。 这是运维中节点上人员正常连接的路径。

② 在节点内部 —— 直接通过 shell 连接。用于运维和调试。

docker exec -it plantpulse-datalake pd node psql # PostgreSQL
docker exec -it plantpulse-datalake pd node cql # Cassandra (cqlsh)
直接连接运维节点是最后的手段

直接连接会绕过网关的权限和审计功能。查询请使用控制台,shell 仅用于控制台无法完成的操作。

相关文档​