Clickhouse Kafka 引擎:物化视图的好处
Clickhouse Kafka Engine: Materialized View benefits
在文档中,它展示了一种使用从 KafkaEngine 将数据发送到 *MergeTree 系列的物化视图的方法 table。
这样做的好处是,如果转换逻辑发生变化,分离 table,进行更改,然后重新附加。
但是,如果您不对其应用逻辑(例如字段类型转换),那么使用实体化视图作为目的地并应用 *MergeTree 引擎是否更有意义?即删除 TO table
部分并将查询发送到物化视图。
不过,我在任何地方都看不到这种方法。我可以看到灵活性的损失,但是,这种方法是否有意义?这种方法的局限性是什么?
我会说它基本上是一样的。
唯一的区别是没有 TO <table>
子句,ClickHouse 会创建 table .inner.<mv name>
并将数据存储在那里,而不是将其存储在 <table>
中。否则行为是相同的 AFAIK。
总而言之,我认为最好使用 TO <table>
子句,因为您可以更好地控制创建的 table。此外,ClickHouse 中的 MV 不是视图,也不是 tables,而是触发器。所以我更愿意那样对待它们,而不是期望它们被用来从它们读取数据。
在文档中,它展示了一种使用从 KafkaEngine 将数据发送到 *MergeTree 系列的物化视图的方法 table。
这样做的好处是,如果转换逻辑发生变化,分离 table,进行更改,然后重新附加。
但是,如果您不对其应用逻辑(例如字段类型转换),那么使用实体化视图作为目的地并应用 *MergeTree 引擎是否更有意义?即删除 TO table
部分并将查询发送到物化视图。
不过,我在任何地方都看不到这种方法。我可以看到灵活性的损失,但是,这种方法是否有意义?这种方法的局限性是什么?
我会说它基本上是一样的。
唯一的区别是没有 TO <table>
子句,ClickHouse 会创建 table .inner.<mv name>
并将数据存储在那里,而不是将其存储在 <table>
中。否则行为是相同的 AFAIK。
总而言之,我认为最好使用 TO <table>
子句,因为您可以更好地控制创建的 table。此外,ClickHouse 中的 MV 不是视图,也不是 tables,而是触发器。所以我更愿意那样对待它们,而不是期望它们被用来从它们读取数据。