1 个不稳定版本
0.1.0 | 2020年1月13日 |
---|
#2815 在 数据库接口
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