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

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

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

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

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

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

高效的 OLAP 查询:擅长处理复杂的分析查询,如 SUM、COUNT、GROUP BY 等。
数据压缩和存储:支持数据压缩,能够有效减少存储空间。
灵活的数据模型:支持多种数据模型和复杂查询,适合各种业务场景。
选择的关键因素
在选择数据库时,需要考虑以下几个关键因素:

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

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

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