车联网是典型场景。在这样的场景下,存储和查询汽车物联网设备产生的大量位置数据是非常有必要的。
位置数据具有以下重要特征:
我们的存储系统经历了一系列变化,如下所示。
最初我们使用运行在小型机上的Oracle将数据存储在 366 个单表分区中(每个分区只包含一张表,单表存储一天的时间序列总数据),只能存储一年的数据(删除数据按分区)。使用 Oracle 时,我们按日期对表进行分区,并将分区编号为 1 到 366 以进行查询。如果我们未能及时删除历史数据,例如 2020.7.21 和 2021.7.21 将被分配到同一个分区中。
2017年,为了解决Oracle方案存在的问题,我们决定采用Mycat搭建MySQL集群。
到2019年,运营部提出针对不同业务的RP要针对使用场景进行量身定制,因此我们决定为不同的业务系统创建独立的数据库。但是,配置复杂、管理困难等问题开始出现。
时间到了 2020 年,我们启动了一个测试项目来验证TiDB的写入性能和稳定性。遗憾的是,TiDB 并不是专门针对时间序列数据的数据库,所以它在车联网场景中的不足是相当显着的。
2020 年 10 月,我们决定寻找专业的位置数据存储解决方案。
Mycat+MySQL作为位置数据存储解决方案已经服务了2年多了,但还是有很多痛点:
去年,我们进行了一个测试项目,以检验 TiDB 在车联网场景中的性能,并获得了一些见解,如下所示。
优点:
瓶颈:
基于车联网场景,位置数据表现出以下属性:
参考上面提到的属性,我们可以得出结论,传统的关系数据库管理系统(RDMS)很难处理位置数据。尽管如此,我们发现时间序列数据库可能是一个更好的答案。
出于寻找更好解决方案的目的,我们对物联网和联网汽车行业中流行的时间序列数据库进行了研究。备注如下。
通过谨慎的决策过程,我们的团队最终决定专注于 TDengine。
TDengine 的部署非常简单。TDengine的写入速度与连续向SSD写入数据一样快,同时其压缩算法呈现出高性能的存储效率,有助于节省大量存储空间。此外,TDengine 使用用户友好的类似 SQL 的语法。
对于定制化RP设计的要求,可以通过配置参数“ keep ”和参数“ days ”来实现。
在测试中,我们基于2000万条数据记录的数据集测试了TDengine的存储效率。下面提供了 MySQL 表模式:
如下图所示,测试结果表明TDengine在存储效率方面明显优于MySQL。
因此,鉴于测试结果,我们决定使用 TDengien 作为 Mycat+MySQL 的替代方案。
下面附上TDengien在全球架构大会上的精彩分享内容,资料不全,有兴趣可以私信获取完整文档
留言与评论(共有 0 条评论) “” |