首页 文章

Cassandra数据建模用于计算

提问于
浏览
0

我在cassandra有 customer_info 表 . 它将包含以下列 .

  • UUID是主键 .

  • customer_id

  • 金额

  • 其他领域......

100$ transaction limit for each customer during a 365 days .

我有以下2个选项

  • 从客户表中选择特定 customer_id 的所有记录 . 在应用程序代码中进行内存计算;如果事务限制未超过100 $,则在customer_info表中执行插入或更新 .

  • 维护一个新表 customer_limit ,其中包含 customer_idlimit 个字段 . 在 customer_info 上进行CRUD操作之前,我将查询 customer_limit 表以了解限制,并根据限制执行 customer_info 表上的CRUD操作 .

在维护和更快的读/写方面,哪种选择最适合?

2 回答

  • 1

    我会为此目的使用2个表 .

    table-2 将是一个计数器表,其中 limit 作为计数器值 . 在插入customer_info表之前,应始终查询此 table-2 .

    请参阅Counters . 在应用程序源代码中写入之前,它们很容易进行并发增量,从而避免读取 .

    另请阅读Partion和Clustering关键概念 . 您选择的 customer_info 键不是很好 .

  • 1

    我认为您必须保留每笔交易的详细信息,因为您需要一个固定光圈(365天)的“移动”窗口,在每次交易中“前进” .

    您可以使用以下主键字段对创建 transactions 表:

    (customer_id, transaction_date)
    

    通过在 DESC 中对此表进行聚类(当然是按日期),您可以始终有效地每天查询最近365天 .

相关问题