查询速度提升两倍,TDengine在GPS服务中的应用
小 T 导读:随着业务的发展及数据量的增长,南京津驰选择将 TDengine 社区版搭建在 GPS 服务中,替代原来的 Redis+MySQL+CSV 存储技术方案,以解决查询效率低、数据安全性低、数据占用空间大等问题。本文详细阐述了其在技术选型、数据建模、数据迁移、效果展示等多方面的实践思路与经验汇总。
公司简介
现状及痛点
目前我们的 GPS 服务采用的存储技术方案是 Redis + MySQL + CSV,实时数据存储到 Redis 队列,经过服务消费后将原始数据存储到 MySQL,凌晨执行定时任务将前一天 MySQL 中的原始数据存储到 CSV 文件。
现状及痛点
-
查询效率低
-
数据安全性低
-
数据占用空间大
-
数据运用不够灵活
技术选型
技术选型
-
InfluxDB:单机性能有问题,且集群不开源,未来扩展很成问题,无法令人信任。 -
OpenTSDB:不是独立的服务组件,还要依赖 HBase、HDFS、ZooKeeper,体积庞大,学习成本高,运维困难。 -
TDengine:性能强大,单机就可以扛住我们目前的业务写入量,节约大量成本。且集群开源,通过社群反馈与资料显示可以看到,集群版性能依然稳定,未来扩展方便。
-
10 倍以上的性能提升:定义了创新的数据存储结构,单核每秒能处理至少 2 万次 请求,插入数百万个数据点,读出一千万以上数据点,比现有通用数据库快十倍以 上。 -
硬件或云服务成本降至 1/5:由于超强性能,计算资源不到通用大数据方案的 1/5;通过列式存储和先进的压缩算法,存储占用不到通用数据库的 1/10。 -
全栈时序数据处理引擎:将数据库、消息队列、缓存、流式计算等功能融为一体, 应用无需再集成 Kafka/Redis/HBase/Spark/HDFS 等软件,大幅降低应用开发和维护的复杂度成本。 -
强大的分析功能:无论是十年前还是一秒钟前的数据,指定时间范围即可查询。数 据可在时间轴上或多个设备上进行聚合。即席查询可通过 Shell、Python、 R、 MATLAB 随时进行。 -
高可用性和水平扩展:通过分布式架构和一致性算法,通过多复制和集群特性, TDengine 确保了高可用性和水平扩展性以支持关键任务应用程序。 -
零运维成本、零学习成本:安装集群简单快捷,无需分库分表,实时备份。类似标 准 SQL,支持 RESTful,支持 Python/Java/C/C++/C#/Go/Node.js, 与 MySQL 相似,零学习成本。 -
核心开源:除了一些辅助功能外,TDengine 的核心是开源的。企业再也不会被数据库绑定了。这使生态更加强大,产品更加稳定,开发者社区更加活跃。
数据建模
数据建模
1.
建库
1.
建库
CREATE DATABASE gps KEEP 36500 DAYS 10 BLOCKS 4 UPDATE 1;
2.
创建超级表
CREATE TABLE gps_history (gps_time timestamp,sn nchar(20),pile_no int,lon binary(20),lat binary(20),speed float,temperature int,status int,road_float int,data_status int,warn_status int,upload_time timestamp,create_time timestamp,remark nchar(100)) TAGS (pid nchar(64),bid nchar(64));
3.
自动创建子表
insert into gps.gps_10001 using gps.gps_history tags ('10001','10002') values (now,'CY10001',1000,125.91014472833334,45.8548872365,0.01,120,4,1,0,1,now,now,'备注' );
4.
删除表
DROP TABLE gps_history;
代码改造与数据迁移
升级上线
第一阶段:数据迁移
第二阶段:试运行
第三阶段:正式上线
总结
👇 点击阅读原文,了解体验TDengine!
本文分享自微信公众号 - TDengine(taosdata_news)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。