物联网开发实战
郭朝斌
小米生态链企业秒秒测 IoT 事业部总监,前诺基亚高级工程师
17380 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
物联网开发实战
15
15
1.0x
00:00/00:00
登录|注册

11 | 数据存储:物联网中的数据库有哪些?

你好,我是郭朝斌。
上一讲,我讲解了物联网系统进行数据处理的思路和常用的开源框架。那么,这些数据要从哪里读取呢?还有,数据处理完成的结果要写入到哪里呢?这就涉及到数据存储方案。
跟灵活多变的数据处理框架比起来,数据存储方案要固定得多。
为什么这么说呢?因为确定了数据存储方案,其实也就确定了用来存储数据的具体软件。当系统开发出来并投入使用后,数据就会源源不断地流入软件存储起来。
当你因为存储软件的读写性能无法满足需求,希望重新做软件选型的时候,就会发现把数据从一种软件迁移到另一种软件是一件费时费力还容易出错的事情。它就像给飞行中的飞机换引擎,难度可想而知。
更何况数据是一种重要的数字资产,之前的数据公司是不能轻易丢弃的。
所以一旦确定存储软件,一般很难切换。这就要求我们做软件选型的时候,必须非常谨慎。因为一旦做出错误的决策,将来可能追悔莫及。
那么,怎么正确地选型呢?基本的原则还是我在第 4 讲中提到的,根据数据类型来选择。
数据大体上可以分为 3 类:
结构化数据(Structured data)
半结构化数据(Semi-structured data)
非结构化数据(Unstructured data)
这一讲,我会一类一类地为你介绍选型经验。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

物联网中的数据库选择对于数据存储至关重要。首先介绍了结构化数据的存储,指出关系型数据库适合存储具有明确结构关系的数据,如共享单车中的用户信息和骑行记录。随着物联网系统面临海量数据时,单机数据库的计算和读写性能会受到影响,因此引入了分布式关系型数据库,如TiDB、CockroachDB等,以应对大数据挑战。其次,介绍了时序数据库的应用,针对持续写入、时效性强的特点,时序数据库成为物联网中常用的存储方案。最后,提到了时序数据库的具体产品,包括开源软件如InfluxDB、KairosDB和OpenTSDB,以及云服务企业开发的时序数据库,如阿里巴巴的TSDB和亚马逊的AWS Timestream。总的来说,通过介绍关系型数据库和时序数据库的特点及应用,为读者提供了在物联网中选择合适数据库的指导。文章还讨论了半结构化数据和非结构化数据的存储方案选择,包括NoSQL数据库和分布式文件系统。最后,提到了数据迁移工具Sqoop的应用,以及对NewSQL数据库、NoSQL数据库和分布式文件系统在处理性能和成本方面的分析。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《物联网开发实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • YueShi
    NewSQL: 对ACID有严格的要求, 并发量特别大的场景, NoSQL: 数据查询量远大于写入更新, 还有NewSQL一般对硬件要求比较高, 成本较高

    作者回复: 赞,成本这点很对

    2020-12-05
    10
  • 9ambition
    从处理性能看,选用不同数据库的前提是搞清楚自己需要的数据属于什么类型的。 如果是存储具有强一致性,或者说存储的数据具有典型的结构化特征,就很需要用结构化型数据库,老师之前也讲到过,数据量不是特别大的时候,其实用不用分布式关系数据库都ok,但是如果数据量很大很大,需要在很大的数据量中查找某一个特定的结构化数据,就可以用分布式结构化数据库以提升查询和存储速率。 如果存储的数据类型是可用“键”-“值”结构表示的,用半结构化数据库存储就可以,但是话说回来,其实很多结构化的数据也还是可以用半结构化的方式表示,所以有的时候两者混用也是ok的。(至少从实战角度看) 如果存储的数据不是结构化数据,也不是“键”-“值”结构的数据,就可以用分布式文件系统来读取和存储。 如果要横向比较的话,我会觉得用半结构化的处理效率会比结构化快,因为结构化就需要先锁定表,然后再去访问某一列,再锁定某一行。而半结构化只需要锁定“键”,就可以直接访问对应的值。分布式文件系统没有用过,所以不是很懂。 从成本来看,我首先会去看数据库是否开源,其次是使用人群规模,一般来说用得多还开源的想必对电脑的要求不会太高。

    作者回复: 赞👍

    2021-02-18
    2
    3
  • PM Silence
    作为小白,大只能这样理解吗? 在业务体系复杂,却又包含多种关联的时候,可以使用NewSQL,比如多条业务线,需要调用订单模块,订单又要与支付产生关联。这些数据结构相对比较结构化,但是关联关系又很多,所以用NewSQL合适一些。 比如烟感、地磁、水浸等设备可以用NoSQL,因为不同设备数据结构略有不同,相同产品不同型号可能也不同,使用NoSQL可以较好解决数据兼容问题。 音视频这种非结构化数据使用分布式文件系统,但是在一些场景下,例如安防监控、交通监控之类的,想从数十小时内找到目标内容很费劲,所以很多科技在致力于非结构化数据结构化处理,满足快速检索的需求。

    作者回复: 基本OK,传感器数据也可以考虑时序数据库

    2020-12-17
    2
  • 小可
    老师请教个问题,除了数据本身存储选型,针对每个设备每天每种数据类型数据量的统计,比如20万设备5种类型保留30天,也就是3000w数据量,该选什么存储?统计粒度再细一点到每小时保留7天,也就是1.7亿又该选什么存储?

    作者回复: 针对设备的周期性数据可以用时序数据库,时序数据库本身就可以提供一些高效的数据操作。

    2021-02-03
  • Rovebiy
    老师,你好,我觉得postgresql数据库就很适合,除了分布式,其他场景都可以应用,为什么没提到呢

    作者回复: PostgreSQL挺好的,只是没有提到而已,可以继续使用

    2020-12-14
  • Geek_9b7997
    请问下,时序数据库不是应该归类到非关系型数据库吗?

    作者回复: 为什么这么说呢,没有理解? 先明确一个概念啊,这里非关系型数据库是指NoSQL数据库。为什么说时序数据库是NoSQL数据库呢?

    2020-12-02
    2
  • 佳伦
    最近四维纵横的matrixdb挺火的
    2021-11-30
    2
  • 代先生。
    请问Clickhose不推荐吗?
    2022-03-09
    1
    1
  • 班戟鱼
    有一个疑问,hdfs不是不适合存储海量小文件吗?如果图片文件都很小,hdfs存储是否就不太合适了
    2023-07-06归属地:新加坡
  • Geek_scorpio
    这一讲特别有感受,在数据存储和数据未来的处理读取上,我们也是升级改良了几版本。 现在是Sharding-JDBC在MySql的基本上做水平扩展,并对价值比较高的时序报警做存储,并生成统计类分片表。 而各种设备的时序数据依托唯一键值,以JSON的方式存储进MongoDB中,当后续Spark进行离线批处理的时候,再按唯一键读取进行统计分析。 现在成本还比较小,也想过利用NewSQL来升级MySql,但是部署成本上确实要高不少
    2022-11-13归属地:四川
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部