Database 用户活动数据的理想数据存储?

Database 用户活动数据的理想数据存储?,database,scala,playframework,nosql,Database,Scala,Playframework,Nosql,是否有用于存储用户活动数据的go-to数据库?数据如下所示: 用户ID、时间戳、活动(字符串,最多255个字符)、用户组(将用户划分为组的任意方式) 要求如下: 1.高写入吞吐量 2.(相对较高)可用性 3.读取仅针对仪表板/报告,因此可以容忍更高的延迟。 4.考虑到巨大的表:可以在几天内轻松获得100万条记录,读取速度会变慢,但写入速度不会变慢 我心目中的堆栈应该是这样的: WebApp->Play2App(Scala)->[数据库] AdminUI根据您的需求,听起来Cassandra是一个

是否有用于存储用户活动数据的go-to数据库?数据如下所示:

用户ID、时间戳、活动(字符串,最多255个字符)、用户组(将用户划分为组的任意方式)

要求如下: 1.高写入吞吐量 2.(相对较高)可用性 3.读取仅针对仪表板/报告,因此可以容忍更高的延迟。 4.考虑到巨大的表:可以在几天内轻松获得100万条记录,读取速度会变慢,但写入速度不会变慢

我心目中的堆栈应该是这样的:

WebApp->Play2App(Scala)->[数据库]


AdminUI根据您的需求,听起来Cassandra是一个不错的选择

Cassandra有一个高度优化的写路径,在写密集型工作负载下表现非常好。Cassandra还可以很容易地容纳越来越多的记录,因为您已经致力于压缩数据。限制因素是每个分区(用户组)有大约100MB的内存,如果计划每个用户组有多少个用户,这应该很好


请注意,Cassandra没有一个灵活的模式,这对于您正在规划的内容来说很好,但是如果您希望在将来能够生成更多可定制的报告,那么就不太好了

我会使用分区的时间戳范围吗?每个用户组可能有几十万用户。(提示,这是一个AB测试系统)实际上取决于您希望报告的外观。报告是否针对特定用户,如他们活动的时间线。或者是整个用户组的时间线。或者它根本就不是一个时间表——活动类型的集合?