为休息api分析设计cassandra数据模型

时间:2015-03-06 08:10:31

标签: cassandra data-modeling

基本上,用于记录使用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

2 个答案:

答案 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}的所有持续时间。

这将有效地回答以下问题:

  • 为我提供所有resourcesubresource值的{id}的所有持续时间
  • 为我提供resourcesubresourceresource部分
  • 组合的持续时间

决定可以针对用例,您需要更多内容,获取{id}或{{1}}的持续时间