我愿意开发一个开源分析项目,该项目将存储访问量,参考者,设备(按礼物,家庭等)。
我对卡桑德拉世界相当陌生,所以我提出了许多关于使用它进行建模的问题。
我已阅读lot documentation关于它,这是我的数据模型的一部分:
create table visits(
id UUID,
remote_addr VARCHAR,
method VARCHAR,
user_agent VARCHAR,
status_code INT,
host VARCHAR,
protocol VARCHAR,
path VARCHAR,
data VARCHAR,
headers VARCHAR,
query_string VARCHAR,
referer_id UUID,
device_id UUID,
browser_id UUID,
platform_id UUID,
created_at TIMEUUID,
PRIMARY KEY (id, created_at) ) WITH CLUSTERING ORDER BY (created_at DESC);
create table referers(
id UUID PRIMARY KEY,
host VARCHAR,
path VARCHAR,
first_seen TIMESTAMP,
last_seen TIMESTAMP,
seen_count INT );
create table browsers(
id UUID PRIMARY KEY,
key VARCHAR,
version VARCHAR,
first_seen TIMESTAMP,
last_seen TIMESTAMP,
seen_count INT );
create table platforms(
id UUID PRIMARY KEY,
key VARCHAR,
version VARCHAR,
first_seen TIMESTAMP,
last_seen TIMESTAMP,
seen_count INT );
使用此模型,如果我想要例如"来自status_code 200"我将不得不创建一个二级索引,对于引用者,设备等都是一样的。
所以我需要创建单独的表格" visits_by_referers"," visits_by_devices"像这样:
create table visits_by_referers(
visit_id UUID,
device_id UUID,
PRIMARY KEY (visit_id, device_id)
);
还是我完全错了,cassandra不适合这个?
谢谢:)
答案 0 :(得分:1)
直到3.0出现物化视图(https://issues.apache.org/jira/browse/CASSANDRA-6477),对于这种类型的用例来说,这将是巨大的,你需要创建单独的表,以便通过引荐来源'如果你打算直接查询。
很多人倾向于使用一个大表,然后覆盖类似Spark的东西来实际将数据读入内存并进行更复杂的查询。