【问题标题】:design cassandra data model for rest api analysis为rest api分析设计cassandra数据模型
【发布时间】:2015-03-11 03:01:42
【问题描述】:

restful api的使用记录分析数据基本如下

public class UsageData {
    public String url;
    public double duration;
    //others        
}

例如,url可能是这样的

http://host:port/api/v1/users/{id}/classes

如果我想将这些数据放入 cassandra,我应该如何设计表格。因为url中有动态值,key怎么设计?

例如 如果我想查询http://host:port/api/v1/users/{id}/classes 被调用了多少次?

而且url也可以包含查询参数,如

http://host:port/api/v1/users/{id}/classes?name=xxxx

【问题讨论】:

    标签: cassandra data-modeling


    【解决方案1】:

    您想只计算 {id} 的使用情况还是还想分析参数? 如果您只想按 {id} 计算使用情况,请阅读此链接,这可能正是您想要做的。

    http://www.datastax.com/documentation/cql/3.1/cql/cql_using/use_counter_t.html

    【讨论】:

      【解决方案2】:

      如果参数不起作用,您可以将 url 拆分为资源部分 (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} 的持续时间

      【讨论】:

        猜你喜欢
        • 2017-01-24
        • 2021-03-20
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-27
        • 2022-01-06
        • 2012-10-19
        相关资源
        最近更新 更多