设备上报数据存储,选择 InfluxDB 还是 Doris 更好?

本文将探讨在设备数据上报场景中,选择 InfluxDB 还是 Doris 作为存储解决方案的优劣。我们将深入分析每种数据库的特点、使用场景和具体应用,帮助你在特定需求下做出最佳选择。

设备上报数据的存储选择

在物联网(IoT)场景中,设备每分钟上报一次数据,数据大小约为200字节。当设备数量从1万增长到10万,甚至到50万时,数据存储和查询的效率显得尤为重要。面对这个问题,选择合适的数据库变得至关重要。

目前的情况

目前考虑将数据存入 Doris 中,以实现数据压缩和存储。Doris 是一个基于 MPP 架构的实时数据仓库,擅长处理大规模数据分析。然而,是否有更好的选择呢?

时序数据库 vs. 数据仓库

在数据存储方面,时序数据库(如 InfluxDB)和数据仓库(如 Doris)有各自的优势和使用场景。

InfluxDB 的优势

InfluxDB 是一种高效的时序数据库,专为处理时间序列数据而设计,具有以下优点:

  • 高效写入和查询:针对时间序列数据进行了优化,能够快速写入和查询大量数据。
  • 数据压缩:内置数据压缩机制,能够有效减少存储空间。
  • 丰富的查询功能:支持基于时间范围的复杂查询,适合处理时间序列数据的分析需求。

Doris 的优势

Doris 是一个实时数据仓库,适合大规模数据分析,具有以下优点:

  • 高效的 OLAP 查询:擅长处理复杂的分析查询,如 SUM、COUNT、GROUP BY 等。
  • 数据压缩和存储:支持数据压缩,能够有效减少存储空间。
  • 灵活的数据模型:支持多种数据模型和复杂查询,适合各种业务场景。

选择的关键因素

在选择数据库时,需要考虑以下几个关键因素:

  1. 写入频率和数据量:设备每分钟上报一次数据,数据量非常大,需要高效的写入和存储能力。
  2. 查询需求:需要展示最新的上报数据,并可能需要进行聚合查询。
  3. 存储时长:前期数据保存半年,后期只保存三个月,需要考虑数据的生命周期管理。

适用场景

根据不同的应用场景,可以选择合适的数据库:

  • InfluxDB:适合实时性要求高、需要处理大量时间序列数据的场景。特别适用于监控和实时数据分析。
  • Doris:适合需要进行复杂分析查询的场景,如业务报表和数据分析。特别适用于大规模数据的OLAP查询。

实际应用示例

InfluxDB 配置示例

[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = true

[[outputs.influxdb]]
  urls = ["http://localhost:8086"]
  database = "iot_data"
  retention_policy = ""
  write_consistency = "any"
  timeout = "5s"

Doris 配置示例

CREATE TABLE device_data (
  device_id BIGINT,
  report_time DATETIME,
  data VARCHAR(200)
) ENGINE=OLAP
DUPLICATE KEY(device_id, report_time)
DISTRIBUTED BY HASH(device_id) BUCKETS 10
PROPERTIES (
  "replication_num" = "3",
  "in_memory" = "false",
  "storage_format" = "V2"
);

结论

在设备上报数据的存储选择上,InfluxDB 和 Doris 各有优势。对于高频率写入和时间序列数据,InfluxDB 是更好的选择;而对于需要复杂分析查询和数据压缩的场景,Doris 则表现更优。最终选择应基于具体的业务需求和技术架构。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

小米 14 如何设置未读通知呼吸灯闪烁?探寻最新解决方案

2024-5-29 10:22:15

指数词

如何在Ubuntu 22.04中使用中文输入法?彻底解决方法在这里!

2024-5-29 14:39:34

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索