Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CDR数据的cassandra数据建模_Cassandra - Fatal编程技术网

CDR数据的cassandra数据建模

CDR数据的cassandra数据建模,cassandra,Cassandra,我试图在cassandra中为CDR(call detail records)数据设计一个数据模型,这样我们就可以在同一个手机号码的同一行中存储并不断添加通话详细信息,或者通过同一个手机号码为每个通话动态添加一组列。它还可以支持以下查询:, 在两个给定日期或给定时间(例如,上午9点到晚上7点)之间,哪一个手机号码呼叫的次数最多 你的建议很有价值。提前谢谢 在设计Cassandra数据模型时,首先需要列出需要满足的所有查询。同样重要的是考虑传入的CDR数据的数量(以便您可以适当地碎片化数据)以及每

我试图在cassandra中为CDR(call detail records)数据设计一个数据模型,这样我们就可以在同一个手机号码的同一行中存储并不断添加通话详细信息,或者通过同一个手机号码为每个通话动态添加一组列。它还可以支持以下查询:, 在两个给定日期或给定时间(例如,上午9点到晚上7点)之间,哪一个手机号码呼叫的次数最多


你的建议很有价值。提前谢谢

在设计Cassandra数据模型时,首先需要列出需要满足的所有查询。同样重要的是考虑传入的CDR数据的数量(以便您可以适当地碎片化数据)以及每个查询可能运行的频率(从而使高频查询与快速读取性能相匹配)。 由于Cassandra的非关系性质,以及CQL的查询能力有限(与传统RDS相比),数据库设计在很大程度上取决于您需要运行的查询。根据您的示例,您可能需要多个列族来满足这些类型的查询

首先,在存储原始CDR方面,您可以有一个“宽行”列族,其中行键是移动电话号码,列名是通话时间戳。然后,对于输入的每个CDR,只需在与该移动电话号码匹配的行中添加一个新列

CDR_column_family
    mobile_number <- row key
        timestamp:null <- column name:column value
CDR\u列\u系列

手机号码感谢您的详细描述,它帮助我以正确的方式进行操作。我不确定此功能,即我们是否可以在不同的时间重复在一行中添加一组列?请给出您的意见。但在CDR_专栏_家族中,如果我们考虑暴民。不。作为行键,行数将非常高(就像在印度有大约9.6亿订户,所以行数将为9.6亿)。因此,这可能会导致性能低下。我认为向行中添加列是一种相当便宜的操作。此外,请记住,Cassandra将为您自动排序列,因此使用时间戳(timeuuid)作为列名意味着Cassandra可以快速找到两个日期之间的列范围。关于CDR CF中有10亿行,您将只使用此表查询特定的移动电话号码,因此cassandra只需最多获取几行即可满足查询要求,这意味着快速性能。如果您试图运行一个要求cassandra扫描所有行的查询,那么是的,它的性能会很差。
CallIndex_column_family
    month <- row key
        timestamp:mobile_number <- column name:column value