1 个不稳定版本

0.1.0 2020年1月13日

#2815数据库接口

Apache-2.0

44KB
1K SLoC

卡萨斯

命令行Cassandra查询执行器,支持使用简单语法遍历和查询多个分区。结果以JSON对象的形式打印,便于使用类似jq的工具。

快速演示

给定以下表

create table mydb.user_click (
  bin text,
  country text,
  url text,
  ip inet,
  clicked_at timestamp,
primary key ((bin, country), url, ip))
with clustering order by (url asc, ip asc);

其中 bin 是一个日期字符串,例如 2020-01-13

您可以对所有目标分区运行多个查询,如下所示

kass -h localhost "select bin, country, count(*) from user_click where bin=? and country=? and url='http://myawsome-web-product.com/landing.html'" \
2019-12-01..2020-01-10/1d nz,us,au,cn

这将查询 user_click 表,以获取从指定URL的国家NZ、US、AU和CN在2019-12-01至2020-01-10之间的用户点击次数。它遍历提供的日期(按范围指定)和国家的所有组合,并并行运行这些分区的查询(具有可配置的并行度)。

结果编码为JSON,便于后续处理,例如使用jq进行聚合。

{"bin":"2019-12-01","country":"au","count":1}
{"bin":"2019-12-01","country":"us","count":2}
{"bin":"2019-12-01","country":"cn","count":1}
{"bin":"2019-12-02","country":"au","count":1}
{"bin":"2019-12-02","country":"us","count":2}
{"bin":"2019-12-26","country":"au","count":1}
{"bin":"2019-12-26","country":"us","count":2}
{"bin":"2019-12-27","country":"cn","count":1}
{"bin":"2019-12-31","country":"cn","count":1}
{"bin":"2020-01-07","country":"cn","count":1}
{"bin":"2020-01-08","country":"nz","count":3}
{"bin":"2020-01-09","country":"nz","count":3}
{"bin":"2020-01-08","country":"au","count":1}
{"bin":"2020-01-08","country":"cn","count":1}
{"bin":"2020-01-08","country":"us","count":2}
{"bin":"2020-01-09","country":"us","count":2}
{"bin":"2020-01-09","country":"cn","count":1}
{"bin":"2020-01-09","country":"au","count":1}

理由

在使用Cassandra时,表模式通常围绕查询模式设计,您需要遵循该模式才能有效地查询数据。这意味着当您想以不同的方式查询数据时,需要针对多个分区运行相同的查询。在上面的例子中,您不能像在SQL数据库中那样做,例如 bin>'2019-12-01'bin<'2020-01-01 和县 in ('nz', 'us', 'au', 'cn')。这在处理时间序列数据时尤为常见。

我经常发现自己编写bash脚本,实际上做的是同一件事,但使用的是 cqlsh。我找不到类似的工具,所以我决定自己制作一个,并在过程中学习Rust。

它基于纯Rust Cassandra驱动程序cdrs

安装

使用cargo

即将推出

手册

克隆仓库并运行

cargo install --path .

如果您想升级,请添加--force

cargo install --path . --force

用法

$ kass --help
Kass 0.1.0
Cassandra multi-partition query runner

USAGE:
    kass [OPTIONS] <query> [param]...

OPTIONS:
    -C, --color <color>                When to use terminal colors [default: auto]  [possible values:
                                       auto, on, off]
        --help                         Prints help information
    -h, --host <HOST:PORT>             The Cassandra host to connect to
    -P, --parallelism <parallelism>    Max number of parallel queries [default: 5]
        --pretty                       Pretty print JSON
    -V, --version                      Prints version information

ARGS:
    <query>       The query to run
    <param>...    Query parameters

更多内容即将推出

示例

即将推出

依赖项

~9–17MB
~217K SLoC