我们正在使用Cassandra存储基于时间的计数器。 这些表将包含与此类似的事件:
{
ServerTimestamp, // unix timestamp when it was analized
GeneratedTimestamp, // unix timestamp when it was generated
CounterType, // short int determining what is the type of event here
CounterId, // unique for event,
City,
Region,
ShopId,
Value // some monetary value in bigint
}
主要假设:
我的第一个想法是创建两个按时间戳的一天部分划分的表(例如yyyyMMdd):
First table with key: (ServerTimestampDay), ServerTimestamp, CounterId
Second table with key: (GeneratedTimestampDay), GeneratedTimestamp, CounterId
写在这里会成问题吗? (我知道由于基于天的分区键,所有内容都会写入一个节点。)
我应该如何处理其余字段? (CounterType,City,Region和ShopId)。
首先,我考虑将它们放入分区键中……但是最常见的行为是搜索这些字段的1、2或ALL值。
我们将有大约1000家商店,因此将它们全部放入查询中(或对每个分区键day / shopId或day / city组合或类似内容发起一个查询将是一场噩梦。
目前,我需要此类报告: (每次选择“城市”,“地区”,“ ShopId”-这是一个多选选项)
报告1个过滤器集:
ServerTimestamp (from-to)
CounterType = [1,2,3]
SiteId = [...]
报告2个过滤器集:
GeneratedTimestamp (from-to)
CounterType = [1,3]
City = [...]
SiteId = [...]
我知道这是很多信息,但是我想尽可能地清楚自己的动机。非常感谢您的帮助!