如何查询空日期时间字段?

问题描述 投票:0回答:1

我需要查询 Cassandra 数据库中具有 NULL 日期时间字段的记录。具体来说,我想选择日期时间字段为 NULL 的行。

这是我的架构示例:

CREATE TABLE testing.events (
    id uuid,
    version_id uuid,
    name string,
    created_at timestamp,
    PRIMARY KEY (id, version_id)
)

如何编写 CQL 查询来获取created_at 为 NULL 的记录,以及如何使用 gocqlx 执行此查询?

cassandra cql
1个回答
0
投票

在 Cassandra 中对数据进行建模时,您可以设计每个表,使其根据特定应用程序查询进行分区,以便将所有必需的数据存储在一起(集群)。这意味着每个表都针对极快的单分区读取进行了优化,其中数据被聚集到满足每个应用程序查询所需的行中。

在实际意义上,Cassandra 能够通过仅过滤一个分区来执行超快速检索,并且请求协调器仅联系拥有该分区的副本:

SELECT ... FROM table_name WHERE partition_key = ?

null
值进行过滤与此完全相反——查询不限于单个分区,因此必须查询集群中的所有节点以获取所有行,然后应用过滤器,以便只有那些没有设置值的列回来了。

这种查询适用于关系数据库,因为数据集很小并且适合单台机器。这在 Cassandra 中是不可能的,因为这种查询无法扩展。

想象一下您的集群有超过 1,000 个节点并包含数十亿条记录的情况。如果 Cassandra 必须从所有节点请求所有数据,则该请求将永远不会在合理的请求超时内返回。

Cassandra 专为 OLTP 工作负载而设计。您的查询实际上更多的是分析,因此您需要使用 Apache Spark 等分析软件以合理的方式执行它。这是可以做到的,但只是不能通过单个常规 CQL 查询来完成。干杯!

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.