物联网数据的储存

物联网数据的存储

1.海量存储空间;多源异构,数据的表达需要细致考虑
2.支持多粒度分级存储和检索,改善资源利用率,提高资源获取率
3.具有实时性的多维检测
4.冗余数据需要压缩

  • 开放兼容
  • 动态扩展
  • 可靠高效
  • 安全可信

关系型数据库

概念

域(Domain) :相同类型数据元素值的集合
笛卡尔积:一组域D1, D2,…,Dn,则笛卡尔乘积为D1XD2X…xDn ={( d1, d2,…, dn)| di∈Di,i=1,2,.,n}
元组(Tuple) : 笛卡尔乘积中每一-个元素(d1, d2,…, dn)称为一个元组)

关系模型的特点:

1.每一列不可再分
2.同一关系中属性(字段)不允许重名
3.关系中不允许有完全相同的元组
4.关系中任意交换两行位置不影响数据实际含义

关系数据结构

<关系名>(属性名1,属性名2,…属性名N)

关系数据操作

查询操作:选择,投影,连接,并,交,差
更新操作:增加,删除,修改数据的操作

常用的三种关系运算:

选择运算:选择若干行组成一个新的关系
投影运算:选择若干列组成一个新的关系
连接运算:合并成一张表(有一列是相同的)

关系完整性约束

完整性约束=实体完整性+参照完整性+用户定义完整性
1.实体完整性主要指关系中关键字不为空且唯一
2.参照完整性指外码的删除,出现数据不完整性
3.用户定义完整性指针对某一数据具体约束

非关系型数据库

1.键值存储数据库

使用一个哈希表,有一个特定的键值和一个指针指向特定的数据
简单,容易部署
针对部分值更新查询的效率低下

2.列存储数据库

应对分布式存储的海量数据
键指向多个列,列由列家族安排

3.文档型数据库

数据是版本化的文档,半结构化的文档
和键值存储时类似的,是键值存储的升级版

4.图形数据库

使用图形模型的数据库

5感知数据库

面向工业自动化,物联网等领域;
既可以进行关系数据管理,也可以在线存储实时特性的时序数据;
提供SQL标准接口,也提供实时数据的发布订阅,历史查询,历史数据分析等服务;
定位于满足企业级应用的数据库。

本地文件系统

物理存储资源直接连接在本地节点上,处理器通过系统总线可以直接访问
物联网使用本地 文件系统的方案较少
不同设备上的本地文件系统难以协同
通常运行与独立的设备:容易丢失

分布式文件系统

通常使用分布式文件系统存储物联网数据

◆建立于本地文件系统之上
◆通过网络将若干节点相连
◆提供并发处理
◆解决I/O瓶颈、空间动态扩展等问题

分布式文件系统优点:

1.简单配置即可轻松扩展集群
2.并发控制,提高效率
3.节点失效视为常态,容错性高;
4.健全的数据恢复与备份,可靠性高;
5.吞吐量大,适合大规模数据应用
6.支持大数据处理工具

GFS (Google FiLe System)

◆GFS集群由一个主服务器(Master) 和大量的块伺服器构成,并被许多客户
(Client)访问。
◆文件被分为固定大小的块,并分配一个全局唯一的块句柄 (chunk -handLe)
标识。
◆主服务器维护数据所有的元数据。
◆应用程序通过客户端使用文件系统,客户端和主服务器只交换元数据:数据通
信直接和伺服器联系。

MogilsFS

存储节点为实际文件存放的地方,用来完成存储,删除重命名等任务

物联网数据的储存_第1张图片

FastDFS文件系统

1.只有两个角色,tracker server和storage server ,不需要存储文件索引信息
2.所有服务器都是对等的,不存在Master- SLave关系存储服务器采用分组方式,同组内存储服务器上的文件完全相同

TFS (Taobao File System)特点:

◆面向互联网服务,针对海量非结构化数据
◆扁平化数据组织结构易于扩容
◆提供海量小文件存储(每个文件通常不超过1M)

HDFS内部机制

  • Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
  • Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware).上的分布式文件系统。HDFS是Apache Hadoop CoreI项 目的一部分。
  • HDFS是一.个主从结构。
  • 一个名字节点,管理文件命名空间和客户端访问文件的主服务器。
  • 若干数据节点,通常是一个节点一个机器,它来管理对应节点的存储。
  • HDFS对外开放文件命名空间并允许用户数据以文件形式存储。
内部机制是将一个文件分割成一个或多个块,这些块被存储在一组数据节点中:

名字节点用来操作文件命名空间或目录操作,如打开,关闭,重命名等等;
数据节点负责来自文件系统客户的读写请求:
数据节点同时还要执行块的创建,删除,和来自名字节点的块复制指令。

物联网数据的储存_第2张图片

客户端请求文件系统打开文件:
  • DFS获取文件最开始的几个块的datanode地址;
  • 第一个块读取完毕之后,寻找下一个块的最佳datanode,读取数据;
  • 数据读取完毕,客户端关闭流对象。
客户端写人,创建新的文件(块):
  • Namenode在文件系统的命名空间中创建一个新文件,此时该文件没有关联到任何block;
  • 客户端写入数据的时候,分解为packets (数据包), 并写人到一个数据队列中,请求Namenode分配新的block存放的数据节点;
  • 将packet写人到管道的第一个节点,第一个节点存放好packet乏后,转发给下一个节点,下一个节点存放之后继续往下传递;
  • 同时维护一个ack queue队列,等待来自datanode确认消息。当管道上的所有datanode都确认乏后,packet从ack队列中移除;
  • 数据写人完毕,客户端cLose输出流。将所有的packet刷新到管道中,然后安心等待来自datanode的确认消息。

你可能感兴趣的:(物联网)