如何构建物联网平台(三)
数据从传输子系统流转过来,需要进行存储了。本文主要构建的是存储子系统。
存储子系统是将数据缓存和持久化存储的系统,为上层的应用系统提供数据支撑。存储子系统说起来也很简单,就是”存个数据”,况且数据库也都是现成的,实际上也并非如此简单。一个好的存储子系统至少要满足以下几点:1、兼容性好;2、拓展性强;3、开放性友好。
1、兼容性好,指的是需要支持多种数据库,包括常见的关系型数据库,如Oracle、MySql、SQL Server;还包括NoSql数据库,如MongoDB、Redis;根据项目需要,还要包括一些商业的实时数据库,如国外的PI、国内的Space。做到这一点,需要针对这些数据库的数据访问API,包装一层通用的数据访问接口。使开发人员在开发数据库的访问操作时,无需知道底层到底是什么数据库,就能完成对数据的增加、删除、修改、查询等常见操作。
2、拓展性强,指的是数据访问的接口能够方便的拓展。针对新的数据库,在不调整整个数据存储访问框架的基础前提下,实现对新数据库的支持。这就需要在存储子系统的软件架构层面下功夫,在架构时考虑这种拓展性,选取合适的设计模式进行架构。
3、开放性友好,指的是需要提供友好而丰富的数据访问接口,便于上层应用系统或第三方应用系统调取数据。这涉及到一个比较关键的点需要考虑,即接口的设计,都包含哪些接口,交互的数据内容是哪种格式的。一般来讲,无非是基于Socket的,和基于WebService的接口,格式方面,Json做为一种轻量级的数据交换格式,比较通用,如果具体到某一行业,有特定的行业标准的格式,则也必须要支持。从这个意义上来讲,接口不是唯一的,数据格式也是多种多样的,才能达到友好的开发性的要求。
如果满足了这3点,加上数据库本身的数据备份、数据迁移等特性,基本上完成了一个初步的数据存储子系统。但这也只是原始数据的存储,没有提供数据的清洗和加工,更没用提供数据深层次的处理、分析和挖掘。对数据深层次的处理是必须要完成的构建内容,无非是放在哪个子系统的问题。由于我们没有明确的划分数据处理子系统,我们暂且放在数据存储子系统中。
针对传输过来的数据不可避免的存在噪声数据、空缺数据和不一致数据等,需要使用数据清洗技术进行数据的质量控制,主要包括缺失数据处理技术、异常数据剔除技术、数据无量纲处理技术等。清洗和加工后的数据,才能进一步进行持久化存储。在数据深层次处理之前,可对数据进行初步的处理,例如某个字段一段时间范围内的平均值统计、大小值统计,形成一个新的字段,从而将数据参数进行相关的拓展。在数据深层次处理方面,结合数据的特性,如果符合大数据的4V特性,最好使用大数据技术。例如利用Spark对大量数据进行内存计算,及时快速的得到预期的结果。使用大数据技术,需要具体的业务模型,业务的确定和优化需要特定的业务专家来对数据打标签,逐步完善算法模型的准确性。形成算法模型后,再将其投放都生产环境中,并根据运行情况,持续优化算法模型。大数据技术涉及的组件较多,需要结合实际情况进行技术选型,选择合适的组件来帮助实现计算功能。
具备了数据处理功能的存储子系统,能够更好的存储数据和分析数据了,也可以为物联网平台贡献自己应有的价值了。构建出一个海纳百川的存储系统后,用户依然看不到效果,这一切都在后台运行。是时候和用户见面,为其提供最终的业务价值了,展示子系统呼之欲出。