Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据库中数据的智能离散化_Sql_Database_Loops_Rabbitmq_Clickhouse - Fatal编程技术网

Sql 数据库中数据的智能离散化

Sql 数据库中数据的智能离散化,sql,database,loops,rabbitmq,clickhouse,Sql,Database,Loops,Rabbitmq,Clickhouse,对于我的未来项目,我有一个ClickHouse数据库。该数据库由rabbitsMQ提供的几个微服务提供 数据如下所示: | Datetime | nodekey | value | | 2018-01-01 00:10:00 | 15 | 156 | | 2018-01-01 00:10:00 | 18 | 856 | | 2018-01-01 00:10:00 | 86 | 8 | | 2018-01-01 00:20:00

对于我的未来项目,我有一个ClickHouse数据库。该数据库由rabbitsMQ提供的几个微服务提供

数据如下所示:

| Datetime            | nodekey | value |
| 2018-01-01 00:10:00 |      15 |   156 |
| 2018-01-01 00:10:00 |      18 |   856 |
| 2018-01-01 00:10:00 |      86 |     8 |
| 2018-01-01 00:20:00 |      15 |   156 |
| 2018-01-01 00:20:00 |      18 |    84 |
| 2018-01-01 00:20:00 |      86 |    50 |
 ......
所以对于数百种不同的nodekey,我每10分钟有一个值

我需要有另一个表,其中包含每小时值的总和或平均值(取决于nodekey类型)

我的第一个想法是使用crontab。。。 但这些数据并没有在流体中传输,有时微服务会添加2-3个新值,有时一周的数据传输。。。我很少需要大量插入一年的新数据

目前,我只有数百个nodekey,但该项目将继续发展

所以,我认为使用crontab或循环数据库更新数据不是一个好主意


我的其他选择是什么?

创建一个视图怎么样

create view myview as
select 
    toStartOfHour(datetime) date_hour,
    nodekey,
    sum(value) sum_value
from mytable
group by 
    toStartOfHour(datetime),
    nodekey
这种方法的优点是不需要担心刷新数据。查询视图时,您实际上访问了底层实时数据。缺点是,当您的数据集变得非常大时,它可能无法很好地扩展(处理视图的查询往往会变慢)


一个中间选项是使用将持久化数据的。如果我正确理解了clickhouse文档,当源表中的数据被修改时,物化视图会自动更新,这似乎与您要查找的内容接近(但是您需要使用适当的引擎,这可能会影响插入的性能)。

事实上,小时数是第一步,我要谨慎地对待每一天、每一周、每一个月等。。。总共大概有30张这样的桌子。。。我喜欢视图方法,但我对视图视图的性能感到惊讶…@Andrelec1:只需为每个聚合级别创建一个视图。您可以将
toStartOfHour()
更改为
toStartOfDay()
toStartOfWeek()
,依此类推。