我们计划将所有工单存储在Cassandra db中,这是定义的表。
CREATE TABLE tickets_info (
ticket_num text,
created_dt timestamp,
division text,
pg text,
duration text,
error_count text,
outage_caused text,
system_caused text,
addt_notes text,
ticket_type text,
row_create_ts timestamp,
PRIMARY KEY (ticket_num,created_dt)
) WITH CLUSTERING ORDER BY (created_dt DESC)
我的背景主要是SQL和设计表后,我注意到我无法查询除ticket_num和created_dt以外的表,因为其他列没有:(索引。
我需要的是用户应该根据所有这些列编写查询。
我应该为每个查询条件创建多个表吗?
Table_1
CREATE TABLE ticket_info_division(
ticket_num text,
created_dt ts,
division text
PRIMARY KEY ((ticket_num, created_dt), division)
)
Table_2
CREATE TABLE ticket_info_pg(
ticket_num text,
created_dt ts,
pg text
PRIMARY KEY ((ticket_num, created_dt), pg)
)
Table_3
CREATE TABLE ticket_info_pg(
ticket_num text,
created_dt ts,
duration text
PRIMARY KEY ((ticket_num, created_dt), duration)
)
并合并所有结果?
我应该为每个查询条件创建多个表吗?
是的,这是Cassandra数据建模的基础,我们称之为非规范化。现在,随着物化视图的引入,开发人员更容易,因为将基表与所有视图同步的负担由 Cassandra 完成。在此处阅读更多内容: http://www.doanduyhai.com/blog/?p=1930