我在卡桑德拉(Cassandra)中有 customer_info
表。它将具有以下列。
- uuid是主要键。
- customer_id
- 金额
- 其他字段...
在365天内为每个客户的100美元交易限制。
我有以下2个选项
-
从客户表中选择特定
customer_id
的所有记录。在应用程序代码的内存中进行计算;如果交易限制没有越过100美元,则在Customer_info表中进行插入或更新。 -
维护新表
customer_limit
,该表由customer_id
和limit
字段组成。在customer_info
上的CRUD操作之前,我将在customer_limit
表上查询以了解限制,并根据限制进行customer_info
表上的CRUD操作。
在维护和更快的读/写作方面,哪种选项最适合?
我将使用2个表用于此目的。
table-2
将是limit
作为计数器值的计数器表。在插入customer_info表之前,您应该始终查询此table-2
。
在此处引用计数器。在在应用程序源代码中写入之前,它们很容易使并发增量避免读取。
还请阅读有关part和聚类关键概念的信息。您选择的customer_info
键不是很好。
我认为您必须保留每个事务的详细信息,因为您需要一个固定光圈(365天)的"移动"窗口,该窗口在每个交易中"进展"。
您可以使用以下主键字段对创建一个transactions
表:
(customer_id, transaction_date)
通过在DESC
中群集订购此表(当然是按日期),您可以随时查询过去的365天,每天有效。