我将统计数据存储在MySQL中,并希望将其迁移到Clickhouse。
对于一个实体,我有多个统计类型。例如:clicks,views,upvotes
现在我将它存储在如下表中:entity_id | datetime | type | value,其中type是一个常量整数,它对应于上面描述的一种统计数据类型。
在Clickhouse中保留相同的结构还是创建下一个模式:entity_id | datetime | clicks | views | upvotes?
据我所知,Clickhouse是面向列的DB。这是否意味着当我们需要添加新列时,Clickhouse可以进行零成本更改?
发布于 2019-07-17 19:24:17
在Clickhouse中保持相同的结构还是创建下一个架构更好?
如果clicks | views | upvotes与同一个entity_id相关,那么为每个值创建一个列是有意义的。通过这样做,您将运行一个查询,并获得包含所需所有数据的行。
另一方面,如果将表创建为entity_id | datetime | type | value,那么就可以灵活地使用更多的统计类型(可能是mouse_enter作为第4种类型)。同时,您将有重复的entity_id和datetime值,这将花费您的磁盘使用,您的表将有3x行。正如你所看到的,在每个决定之间都有一个权衡。该由你来决定该选哪一个。如果您认为只有clicks | views | upvotes就足够了,那么使用这个模式就更有意义了。
Clickhouse是面向列的DB。这是否意味着当我们需要添加新列时,Clickhouse可以进行零成本更改?
是的,Clickhouse是面向列的,每一列都是磁盘上的单独文件.因此,如果您创建一个新列,则几乎没有开销。但是,根据操作的不同,如果使用表突变或更改类型,更改列将需要时间。
https://stackoverflow.com/questions/57060263
复制相似问题