【发布时间】:2015-07-11 11:42:15
【问题描述】:
我愿意开发一个开源分析项目,该项目将存储访问、推荐人、设备(按种类、家庭等)。
我对 cassandra 世界还很陌生,所以我问了很多关于用它建模的问题。
我已经阅读了documentation 中的lot 关于它,这是我的数据模型的一部分:
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 不适合这个?
谢谢你:)
【问题讨论】:
-
我从 cassandra 中学到的东西是:知道你想问什么查询,并为此目的对数据存储进行建模。所以不会很灵活。我对分析的了解是:随着时间的推移,会出现不同的问题,这些问题(可能)不太适合数据模型,并且非常欢迎灵活性。至少我会三思而后行。但我对其他意见感兴趣:)
标签: cassandra