clickhouse列结构

wnvonmuf  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(363)

我将统计数据存储在mysql中,并希望将其迁移到clickhouse。
对于一个实体,我有多种统计类型。例如: clicks , views , upvotes 现在我把它放在一张table上,看起来像: entity_id | datetime | type | value ,在哪里 type 是一个常量整数,对应于上述统计类型之一。
在clickhouse中保持相同的结构还是创建下一个架构更好: entity_id | datetime | clicks | views | upvotes 据我所知,clickhouse是面向列的db。这是否意味着当我们需要添加新的列时,clickhouse的成本为零?

arknldoa

arknldoa1#

在clickhouse中保持相同的结构还是创建下一个模式更好
如果 clicks | views | upvotes 与相同的 entity_id ,则为每个值创建一列是有意义的。通过这样做,您将运行一个查询并得到一行包含您需要的所有数据。
另一方面,如果将表创建为 entity_id | datetime | type | value ,那么您就可以灵活地拥有更多的统计类型(也许 mouse_enter 作为第四种类型)。同时,你会重复 entity_id 以及 datetime 值,该值将消耗磁盘使用量,并且表将有3行。正如你所看到的,每个决定之间都有一个权衡。你自己决定选哪一个。如果你认为 clicks | views | upvotes 那么使用这个模式就足够了。
clickhouse是面向列的数据库。这是否意味着当我们需要添加新的列时,clickhouse的成本为零
是的,clickhouse是面向列的,并且每列都是磁盘上的一个单独文件。因此,如果您创建一个新列,将几乎没有开销。但是,如果使用表突变或更改类型(取决于操作),则更改列将需要时间。

相关问题