基本上,用于记录使用restful api的分析数据如下
public class UsageData {
public String url;
public double duration;
//others
}
例如,网址可能就像
http://host:port/api/v1/users/{id}/classes
如果我想将这些数据放入cassandra,我应该如何设计表格。因为url中有动态值,如何设计密钥?
例如,如果我想查询已调用http://host:port/api/v1/users/ {id} /类的次数?
并且网址也可能包含查询参数,例如
http://host:port/api/v1/users/{id}/classes?name=xxxx
答案 0 :(得分:1)
您是否只想计算{id}用法还是想要分析参数? 如果您只想通过{id}计算用法数,请阅读此链接,这可能正是您想要做的。
http://www.datastax.com/documentation/cql/3.1/cql/cql_using/use_counter_t.html
答案 1 :(得分:1)
如果参数不起任何作用,您可以将网址拆分为资源部分(http://host:port/api/v1/users/
),ID部分({id}
)和子资源部分(classes
)。
选项1 :制作resource
partition key
并在该行中,您可以按{id}
部分和subresource
部分对数据进行聚类。这样,您将获得有关一个资源的所有信息。这将有效地回答以下查询:
resource
值{id}
的所有持续时间
resource
,{id}
和subresource
部分 选项2 :除此之外,您可以{id}
partition key
并将resource
部分和subresource
部分作为群集密钥。这种方式在一行中,您将拥有所有资源{id}
和subresources
的所有{id}
的所有持续时间。
这将有效地回答以下问题:
resource
和subresource
值的{id}
的所有持续时间resource
,subresource
和resource
部分 决定可以针对用例,您需要更多内容,获取{id}
或{{1}}的持续时间