范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

性能超越Clickhouse物联网场景中的毫秒级查询案例

  1 物联网应用场景简介
  物联网(Internet of Things,简称 IoT)是指通过各种信息传感、通信和 IT 技术来实时连接、采集、监管海量的传感设备,从而实现对现实世界的精确感知和快速响应,继而实现自动化、智能化管理。在查询 IoT 设备状态的场景下,吞吐量和时延是两个重要的性能指标。
  在工业物联网中,常见有以下几种设备时序数据的查询需求: 案例1:查询某个设备最近的记录 案例2:查询某个租户所有设备的最近一条记录 案例3:查询某个设备最近5分钟的统计信息 案例4:查询某个设备最近一天的秒级数据
  本教程通过一个工业物联网的案例,来演示 DolphinDB 的序列查询性能,并对比测试了 DolphinDB TSDB 引擎、OLAP 引擎,以及 ClickHouse MergeTree 引擎在上述查询案例上的时延指标。总体来说,DolphinDB TSDB 引擎的性能(时延)对比 DolphinDB OLAP 引擎和 ClickHouse MergeTree 引擎有显著优势。 2 案例数据准备2.1 数据集说明
  本教程参考了某工业物联网 SaaS 平台服务商的数据集,模拟并使用一份高度仿真的数据。该SaaS服务商的主要业务是监控各个地区的噪声情况。表结构如下:
  序号
  字段名称
  字段类型
  注释
  1
  tenantId   INT   租户ID   2
  deviceId   INT   设备ID   3
  soundPressureLevel   DOUBLE   声音分贝   4
  soundPowerLevel   DOUBLE   声音功率值   5
  ts   TIMESTAMP   数据采集时间戳   6
  date   DATE   日期   一行数据包含租户 ID、设备 ID、声压、噪声功率、采集时间戳和日期共计 6 列数据。每行记录占用 36 字节。该案例数据包含100 个租户,每个租户管理 100 个噪声监控设备,记录了从 2022-01-01 至 2022-01-12,12亿的噪声数据,共计 40G。 2.2 库表设计及数据模拟   使用 DolphinDB TSDB 引擎,创建一个名为 NoiseDB 的数据库,存储噪声数据。TSDB 引擎是 DolphinDB 自 2.00 版本起,专门为物联网场景设计研发的数据存储引擎,具备优秀的写入和序列查询性能。   在噪声监控的 SaaS 服务中,较为频繁的查询场景是以租户为维度,查询某一天某个设备的状态信息。因此设计 noise 表按日期、租户 ID 进行分区,可以有效利用分区剪枝。同时使用区分度较高的设备 ID 和数据采集时间戳作为排序键(查询索引),使查询时能够快速定位对应设备的数据,提升查询性能。具体实现脚本如下。 db1 = database(,VALUE,1000..2000) db2 = database(, VALUE, 2022.01.01..2022.12.30) // TSDB for iot dbNoise = database("dfs://NoiseDB",COMPO,[db1,db2], engine="TSDB") create table "dfs://NoiseDB"."noise"( tenantId INT, deviceId INT, soundPressureLevel INT, soundPowerLevel DOUBLE, ts TIMESTAMP, date DATE ) partitioned by tenantId, date sortColumns=[`deviceId,`ts]   库表创建完成后,模拟 2022-01-01 至 2022-01-12 的数据,具体代码详见附录 DolphinDB 脚本。   可以通过 SQL 查询验证下数据集大小: select count(*) from loadTable(database("dfs://NoiseDB"),"noise") where date between 2022.01.01:2022.01.102> 1260010000   导入完成后,每个分区下生成3个level 0 file,未满足自动合并条件(大于等于10个 levelFile),需要进行手动合并。 chunkIds = exec chunkId from getChunksMeta() where type=1 for (x in chunkIds) { triggerTSDBCompaction(x) }   完成后将案例数据导出数据至 csv 文件,以便后续导入 OLAP 引擎、ClickHouse。在 ClickHouse 中使用 OPTIMIZE TABLE noise 合并下 mergeTree。具体过程参照附录 ClickHouse 脚本。 3 SQL 查询   在 DolphinDB 中,可以使用 SQL 快速实现4个设备状态查询需求,并且代码十分简洁。 案例1:查询某个设备最近的100条记录: noise = loadTable(database("dfs://NoiseDB"),"noise") select * from noise where date=2022.01.01 and tenantId=1055 and deviceId=10067 order by ts desc limit 100 # timer(10) select ... Time elapsed: 24.33 ms   脚本的 where 条件语句中指定了分区列 date 和 tenantId 进行过滤,便于 DolphinDB 系统通过分区剪枝快读定位到对应的分区。同时指定了数据库的 sort key (deviceId) 作为过滤字段,利用 TSDB 的索引机制,可以快速定位到数据块,并按时间顺序取回最新的100条记录。平均一次查询耗时 2ms ,未命中缓存的首次查询耗时 14ms 。 案例2:查询某个租户所有设备最新状态 noise = loadTable(database("dfs://NoiseDB"),"noise") select * from noise where date=2022.01.01 and tenantId=1055 context by deviceId csort ts desc limit 1 # timer(10) select ... Time elapsed: 246.619 ms   该脚本在 where 条件语句中同样指定了分区列以快速定位到对应的数据分区。通过 context by 子句来根据设备 ID 将数据进行分组,每组数据通过 csort 子句按时间倒序排列(考虑到物联网存在消息乱序的情况,必须使用csort将数据按采集时间排序)。使用 limit 1 获取每个窗口内的最新的一条记录,从而获取该租户当日所有设备的最新状态。平均一次查询耗时 25ms ,首次查询耗时 121ms 。 案例3:查询某个设备5分钟内的噪声统计值 noise = loadTable(database("dfs://NoiseDB"),"noise") select min(ts) as startTs ,max(ts) as endTs ,max(soundPressureLevel) ,avg(soundPressureLevel) ,max(soundPowerLevel) ,avg(soundPowerLevel) from noise where date=2022.01.01 and tenantId=1055 and deviceId=10067 and ts between 2022.01.01T00:50:15.518:2022.01.01T00:55:15.518 group by tenantId, deviceId # timer(10) select ... Time elapsed: 22.168 ms   该脚本首先根据 where 指定的过滤条件定位并扫描数据块,取出对应时间段的数据,并按 tenantId, deviceId 进行聚合计算,以获取声音分贝、功率的统计值。平均一次查询耗时 2ms ,首次查询耗时 13ms 。 案例4:查询某个设备最近一天的明细数据 noise = loadTable(database("dfs://NoiseDB"),"noise") select * from noise where date=2022.01.01 and tenantId=1055 and deviceId=10067 order by ts # timer(10) select ... Time elapsed: 23.261 ms   该脚本首先根据 where 指定的过滤条件定位并扫描数据块,取出对应时间段的明细数据,并按采集时间排序。平均一次查询耗时 2ms ,首次查询耗时 16ms 。   注 :首次查询指未命中数据库缓存及操作系统缓存的查询。 4 对比测试   进一步测试 DolphinDB TSDB 引擎与 OLAP 引擎,以及 ClickHouse MergeTree 引擎在上述数据集的时序查询性能。测试过程中尽可能地保持环境变量相同,以保证科学有效。具体测试脚本详见附录。 4.1 测试环境测试机器配置   操作系统:CentOS 7   CPU: 2 cores   内存:10 G   磁盘:SSD 核心测试参数   对测试中影响性能的关键参数,保持对等一致。   软件信息   核心参数   库表设计   DolphinDB:2.00.6 单节点   memSize=8G TSDB引擎 / OLAP引擎   partitioned by tenantId, datesortColumns = [deviceId,ts]   ClickHouse:22.6.1 单节点   max_server_memory_usage=8GMergeTree引擎   partition by tenantId, dateorder by deviceId, ts   测试时,DolphinDB 和 ClickHouse 均采用单节点,并分配 8G 最大内存。在引擎方面,DolphinDB TSDB 引擎,ClickHouse MergeTree 引擎的内部实现都采用了 LSM-tree。并保持库表设计完全一致。 时间衡量标准   由于端到端的时间,容易受到网络抖动和客户端实现性能的影响,因此本次测试的测量时间设定为从查询引擎接收到请求至计算出结果为止。   4.2 测试结果   三者的具体测试结果为下表,表中数值为 平均 耗时/ 首次 查询耗时(单位 ms),平均耗时的计算逻辑为:   平均耗时 = ( 首次耗时 + 9次缓存命中耗时 )/ 10   测试用例   场景   DolphinDB TSDB   DolphinDB OLAP   ClickHouse   case1   查询某个设备最新100 条记录   2 / 14   34 / 51   14 / 150   case2   查询某个租户所有设备的最新状态   25 /121   62 / 170   73 / 400   case3   查询某个设备 5min的噪声统计值   2 / 13   15 / 136   12 / 82   case4   查询某个设备最近一天的明细数据   2 / 16   24 / 220   22 / 200   可以看出,OLAP 引擎和 ClickHouse 在不同的查询场景下性能各有其优势和劣势。   而 TSDB 引擎性能均优于 ClickHouse,在相对复杂的点查场景性能差距更大。在场景4下 ,DolphinDB TSDB 引擎比 ClickHouse 的性能高 12.5 倍,首次查询高13倍。在该场景中,TSDB 引擎需要读取对应设备的10000条记录,压缩后的存储大小约为90K。存储在6个连续的Block中,读取效率非常高效。而 ClickHouse 则是 scan 了该分区下1000000条记录的数据块,因此两者的首次查询性能差距较大,而缓存后的性能差距主要取决于两者在计算性能上的差别 。 5 总结   DolphinDB TSDB 引擎在物联网场景有着卓越的点查性能,可以以毫秒级延时迅速响应设备的状态信息,其性能更优于 ClickHouse 的 MergeTree 引擎。 6 附录跳转中...   跳转中...

冰城公安打造最优旅游交通环境冬季以来,哈尔滨市各商圈景区陆续迎来旅游高峰,中外游客畅享在冰城冰雪文化之中。为打造最优旅游交通环境,哈尔滨市公安局结合疏堵保畅攻坚战,组织交警部门持续深化冬季护游工作,通过拓展宣桂林旅游强劲复苏,象鼻山游人如织来源人民网象鼻山与桂林市区山水融合,形成一幅美丽画卷。人民网付华周摄桂林人的山水离城市不远,生活在桂林,山水环抱的格局,处处都是好风光。对于人们来说,到了桂林,不去象鼻山,是一种遗满江红热映,太原古县城迎来高光时刻图1远眺太原古县城。图2游客在满江红影视基地拍照打卡。图3俯瞰满江红影视基地。本报记者翁剑摄张艺谋执导的电影满江红在全国持续热映,票房和口碑一路飙升。该片取景地拥有2500年深厚历西工大与多方签订战略协议助力煤炭行业高质量发展近日,西工大陕西网络创新研究院与陕西涌鑫矿业有限责任公司国家计算机网络与信息安全管理中心陕西陕煤榆北煤业榆林信息化运维公司签订煤矿网络安全战略协议。西工大网创院副院长王勇,陕西涌鑫改造农村公路5000公里以上打造一号旅游公路品牌未来,河南农村交通物流这样建顶端新闻河南商报记者王访贤实事惠民生,聚力谋出彩。2023年2月20日,河南省政府新闻办召开新闻发布会,介绍和解读河南省2022年度民生实事加快农村交通物流体系建设落实情况。下一步上蔡县小岳寺乡鸵鸟养殖带动乡村旅游新风尚驻马店网讯(通讯员周金高葛盼)近日,记者在上蔡县小岳寺乡郭七村鸵鸟养殖观光园看到,几十只体型庞大的鸵鸟或优雅漫步追逐嬉戏,或悠然地接受游客递来的青草,有的还展开翅膀跳起舞蹈,样子很内蒙古迎来首个广东旅游团2月18日上午,151名广东游客抵达呼和浩特,成为内蒙古文化和旅游厅组织召开粤蒙百万人互游旅游招商推介会后迎来的首个广东旅游团,标志着2023粤蒙百万人互游计划正式启动。在4天3晚俄媒中俄已恢复履行互免团体旅游签证协定据俄罗斯卫星通讯社20日报道,俄罗斯商业咨询报援引俄外交部和经济发展部消息人士的话报道称,俄罗斯和中国已恢复因新冠疫情而暂停履行的互免团体旅游签证协定。俄罗斯旅游业联盟副主席兼入境伟大21!中国女足国青又赢了,提前出线,期待U20世界杯夺冠!关于中国女足有一个好消息,还有一个坏消息,我们先来说说坏消息吧,先苦后甜才是幸福的。坏消息就是中国女足在与瑞典女足的热身赛中,保存实力没有使出全力,最终14小负瑞典女足。本场比赛中Vivo超越苹果夺得中国手机市场销量冠军据韩联社首尔2月20日报道,今年由于智能手机市场的不景气,据悉苹果将销量冠军拱手让给了本土企业。据市场研究公司CounterpointResearch20日称,截至本月第一周,苹果CINNO1月中国折叠屏手机销量同比增长54,OPPO首次登顶IT之家2月20日消息,CINNOResearch今日发布报告称,2023年1月中国市场折叠屏手机销量同比增长54,环比增长57,同比环比持续双增长。此前,中国市场折叠屏手机202
不要看见别人发光,就觉得自己暗淡,否定自己的选择看到读书群分享千万不要看见别人发光,就觉得自己暗淡!很有感触。讲到生活中人和人的节奏不一样!有人三分钟泡面,有人一小时煲汤。你选择了你要的方式就坚定走下去,别胡思乱想!阳光少女,心帽爷头条创作挑战赛九十四岁的帽爷,老伴走的早,虽然膝下四男双女,儿孙满堂一大片,可他老人家偏偏一直坚守着独守一人过日子。就这样不但不拖累家人,还时不时的给小字辈们点补贴,那日子过得就是静下心来读书,它会一点一滴地滋养你1hr为什么要读书?很多时候,我们之所以陷于痛苦,烦恼不断,根源就是读书太少,囿于有限的学识和认知,没有足够的智慧来解决生活中的难题。读一书,增一智。阅读,才是最好的疗心良药,是真想日常生活中我们是如何进行思考的?想你想对了什么,想错了什么,英尼基海斯著,姚瑞元译,人民邮电出版社,2022年11月。我们大部分思考过程是没有意识的当我们说某人不能一边走路一边嚼口香糖时,这其实是一个由来已久的侮让自己保持优秀的5个习惯树立有意义的目标比起着急赶路,更重要的是先做好充足的准备,制定好缜密的计划。一个目标清晰的人,在前进的路上往往不会迷失方向。试试给自己设定一个有意义且实际的目标吧。找准目标,踏踏实五十岁以后,越能忍的人,往往越有福!年过半百之后,很多该经历的事情我们也都经历过了。慢慢的看人看事都渐渐通透,过去的激进也逐渐转变成了平和。以前无法放下的事情,现在也渐渐的看开放下了。这就是来自于心灵深处的成长,非常男人老了的标准是什么?1老男人最显著的特点就是贪财怕死。活了几十年了,经历过太多的事情,老男人明白了,只有钱和健康是最靠得住的。他知道钱能够解决90以上的问题,他也知道,只有健康的身体才能够让他享受生活父子俩的第56场马拉松,打卡完毕!来源央视新闻今天(19日)上午,深圳马拉松赛场上,一对父子的身影吸引了很多人的目光。来自浙江金华的罗书坚用三轮手推车推着儿子小柏,完成他们的第56场马拉松旅程。约21公里的半程马拉中美芯片公司科技战,美国限制芯片出口!华盛顿最新的出口限制禁止美国人支持目标中国公司的开发或生产芯片受影响公司的几位高管曾在美国半导体行业工作,并在返回中国之前获得了公民身份美国对中国芯片公司的新限制可能会使目标公司的连州市卫健局开展院前急救医疗质评工作日前,连州市卫生健康局组织120急救指挥中心,对市区4家急救网络医院开展院前急救医疗质量考核工作,进一步提升院前急救综合服务能力,促进连州市院前急救医疗工作的同质化发展。本次考核主新视野丨博爱卫生站助力农村医疗服务石榴云新疆日报记者于熙基层医疗网底,事关群众福祉,人民安康。新春伊始,中共中央国务院发布关于做好2023年全面推进乡村振兴重点工作的意见,提出推进医疗卫生资源县域统筹,加强乡村两级