我在cassandra中有customer_info
表。它将包含以下列。
365天内每位客户100美元的交易限额。
我有以下2个选项
从客户表中选择特定 customer_id
的所有记录。在应用程序代码中进行内存计算;如果交易限额未超过100 $,则在customer_info表中进行插入或更新。
维护一个新表 customer_limit
,其中包含customer_id
和limit
个字段。在customer_info
上进行CRUD操作之前,我将在customer_limit
表上查询以了解限制,并根据限制执行customer_info
表上的CRUD操作。
在维护和更快的读/写方面,哪种选择最适合?
答案 0 :(得分:1)
我会为此目的使用2个表。
table-2
将是一个以limit
作为计数器值的计数器表。在插入customer_info表之前,您应始终查询此table-2
。
请在此处参阅Counters。在应用程序源代码中写入之前,它们很容易进行并发增量,从而避免读取。
另请阅读有关Partion和Clustering关键概念的信息。您选择customer_info
的密钥不是很好。
答案 1 :(得分:1)
我认为您必须保留每笔交易的详细信息,因为您需要一个固定光圈(365天)的“移动”窗口,以便在每笔交易中“前进”。
您可以使用以下主键字段对创建transactions
表:
(customer_id, transaction_date)
通过按DESC
命令对此表进行聚类(按日期排序),您可以随时有效地查询最近365天。