英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料
翻译文献:
Liang L , Zhu L , Shang W , et al. Express supervision system based on NodeJS and MongoDB[C]// IEEE/ACIS International Conference on Computer amp; Information Science. IEEE, 2017.
本文针对快速监控系统的功能需求,讨论了使用AngularJS构建前端框架的优势,使用NodeJS构建后端Web服务器的优势,以及基于MongoDB存储数据的性能优势。本文重点研究了利用MongoDB存储大数据的存储方案和基于MapReduce的统计分析方案。本文讨论了如何基于NodeJs构建满足大数据可视化需求的Web服务。
- INTRODUCTION(简介)
随着互联网 时代的到来,网络购物已成为日常生活中不可或缺的购物方式,据2015年中国网络购物市场统计,2015年中国网络购物市场规模已达3.8万亿元。截至2016年,中国网络购物规模已达3.5亿。数以亿计的网购者产生了大量的快递件。2015年,交付量达到205亿。平均每天产生的账单数量为6000万张。可以预见,在未来,这些数字将成倍增长。
快递数据是一种非常宝贵的数字资源,是衡量我国社会经济水平的重要指标。快件数据信息对行业动态分析和安全监管具有重要影响。因此,对快递数据的研究对于指导快递资源的分配和规范快递规则具有重要的意义。目前,安全系统中有大量离线数据,约占400TB内存,已达到全球印刷材料产量(200PB)的0.2%。数据主要包括票据信息、国家信息和分支机构信息,是快递行业重要的敏感数据。因此,建立一个实现离线数据管理的监控平台,对行业趋势预测、行业组织优化和安全监管具有重要作用。
II. KEY TECHNOLOGIES(关键技术)
A、AngularJS
AngularJS是一个由Google维护的开源JavaScript库,用于帮助单页应用程序运行。它的目标是增强基于浏览器的应用程序的MVC模式(MVC)能力,使开发和测试变得容易。
B、 MongoDB,
MongoDB是一种强大、灵活、高性能、易扩展的数据存储方式。它是一个面向文档的数据库,而不是关系数据库,是NoSQL[1]所谓的面向文档,用一个更加灵活的文档来代替原来关系数据库中的“行”概念。文档可以是数组、文档等复杂数据模型的值。并且文档的键不是预定义的,也不会固定。MongoDB设计的一个主要思想是将可以传递给客户端的操作从服务器传递到客户端,如对象id的生成等操作解决方案。MongoDB作为一个通用数据库,除了能够创建、行、更新、删除数据外,还提供了一系列独特的功能,可以继续扩展。
- MongoDB支持通用辅助索引,允许多个快速查询,提供唯一索引、复合索引、地理空间索引和全文索引。
- MongoDB支持“聚合管道”。用户可以从片段创建复杂的聚合,并通过数据库自动优化它们。
- MongoDB支持一个时间限制集,适用于在某个时间点(如会话)过期的数据。类似地,MongoDB还支持固定大小的集合,用于存储最近的数据,如日志。
MongoDB没有关系数据库中一些共同的特性,比如连接查询和生成行,以获得更好的可伸缩性。因为这两种功能在分布式系统中很难使用。MongoDB的主要目标之一是提供优越的性能,MongoDB可以动态地填充文档,还可以预先分配数据文件,以利用额外的空间换取稳定的性能。MongoDB使用的内存和缓存的内存一样多,试图为每个查询自动选择正确的索引。总之,MongoDB在各个方面的设计都是为了保证他的稳定性能。尽管MongoDB非常强大,并试图保留关系数据库的许多特性,但它并没有追求关系数据库的所有特性。只要可能,数据库服务器将处理生成和逻辑,以供客户端实现。这种紧凑的设计是MongoDB能够获得如此高性能的原因之一。
B、 nodeJs,
nodeJs用C 语言编写,是一个JavaScript操作环境。js是一个JavaScript运行时环境,Node.js使用Google Chrome V8引擎以获得良好的性能,还提供了很多系统级api,如文件操作、web编程等。浏览器端的JavaScript代码在运行时受到各种安全限制,客户端系统的操作受到限制。js使用事件驱动的异步编程,并为网络服务设计。js的设计思想以事件驱动为核心,它提供了绝大多数基于事件的异步风格的api。
以Net module为例,Net Socket对象有以下事件:connect、data、end、timeout、drain、error、close等,使用Node.js的开发者需要根据自己的业务逻辑注册相应的回调函数。这些回调函数是异步执行的,这意味着尽管这些函数看起来是在代码结构中顺序注册的,但它们并不取决于它们出现的顺序,而是等待相应的事件触发。事件驱动和异步编程的重要优点是充分利用了系统资源。该代码的实现无需等待某个操作完成,并且有限的资源可以用于其他任务。此设计非常适合Node.js的目标,即后端网络服务编程。在服务器开发中,并发请求处理是一个很大的问题,阻塞功能会导致资源浪费和时间延迟。通过事件注册、异步功能,开发人员可以提高资源的利用率,性能也会提高。从Node.js提供的受支持的模块中,我们可以看到许多函数(包括文件操作)是异步执行的,这与传统语言不同。为了便于服务器的开发,Node.js的网络模块特别大,包括HTTP、DNS、NET、UDP、HTTPS、TLS等,开发人员可以在此基础上构建Web服务器。
III.SYSTEM ARCHITECTURE AND TECHNICAL SOLUTIONS(系统架构和技术解决方案)
- 系统架构
快件监控平台主要分为四个层次:数据集成、数据存储、数据分析和垂直层次的数据应用层。下图显示了快递监管平台的具体分层结构布局
在数据集成层,采用实时或动态的方法从oracle数据库中导出11g数据。同时,利用恢复方法导出备份数据,并利用数据清洗工具实现数据预处理。最后,将数据导入MongoDB。
在数据存储层,使用MongoDB来存储数据。MongoDB由于其碎片化和弱一致性,可以保证访问的速度。再加上其文档存储结构,用户可以更方便地访问数据。
在数据分析层,系统利用MapReduce实现统计分析和机器学习,完成大数据的处理和分析。
在数据应用层,采用Node.js Nginx集群,基于标准restful云服务接口提供数据服务,通过可视化的方式将大数据展现在前端。
- 数据存储解决方案
快递数据存储解决方案的目标是满足快递行业对大数据(包括历史数据和实时数据)的存储、备份和高性能读写的需求。为数据分析提供有效的数据,为性能保护提供依据。
- 总体架构概述:针对快递行业庞大复杂的数据,结合硬件性能和技术路线要求。服务器集群分为:分析应用服务器组、Mongo DB存储服务器组。分析应用服务器组由两台SX204-12大数据一体机组成,每台机配备4个双服务器节点,实现数据分析处理、存储节点路由和配置控制。Mongo DB存储服务器组由8台SX206-12大数据一体机组成,每台大数据一体机配置6个单服务器节点,实现了数据的分布式存储[3]。如下图所示:
- MongoDB分布式存储架构
图3展示了MongoDB分布式存储架构模型,具体组件如下:
Shard Server:针对express数据的特点,以及MongoDB分布式存储的健壮性和高效性,将存储服务器组的48个节点划分为16片,每片3个拷贝(主节点、从节点和仲裁节点)。使用上述配置可以更好地避免主机单点故障,同时也可以自动从主、从拷贝切换,兼顾性能和效率[4]。
路由过程:由于路由服务对整个数据库的存储速度和读写性能都会有较大的影响,因此它将分配给三个高性能的服务器节点,负责管理碎片。客户端通过前端路由,这样整个集群看起来就像一个数据库。客户端应用程序可以透明地使用。路由进程不存储来自配置服务器的数据。
配置服务器:路由服务器重用的这3个节点负责存储整个集群的配置信息,即片间对应关系的数据和碎片。
- 配置设置
分块:为了避免分块太小,导致存储数据频繁移动,结合数据的实际大小,我们除以256MB的大小。
数据块:按每天生成1亿数据计算,每个数据约为0.5KB。我们计算出一个集合需要设置200个数据块。数据组织:以日期键为键值,根据数据块大小和609个数据块,将数据存储在物理存储节点中,并映射标签项。数据操作的效率平均提高。
索引:为了提高数据操作和管理的效率,使用唯一标记数据的键值对数据进行索引。
- 数据库结构
源数据层:所有的历史信息都存储在历史数据库中,一组文档最多只能存储1亿个。实时数据经过预处理后导入数据库,生成状态信息和货运单数据临时表,预处理后存入特定集合。
实现数据层:状态信息数据库中的信息仅作为下一阶段数据分析的辅助信息。因此,在信息存储过程中不需要进行预处理,可以存储运单数据库的存储方法。根据运单年份,每年维护一个运单数据库。
现有数据层:将覆盖所有时间范围的数据(包括历史数据、实时数据采集)和用户相关信息进行处理并存储在数据库中,将单个采集限制为最多1亿(1亿)个文档。
- 统计分析解决方案
Mongo DB是目前最流行的大型数据存储平台之一,它可以作为云计算技术的底层存储层提供源数据,如Spark、Hadoop、Pig、Hive、Drill等计算框架。同时它提供了聚合流水线、MapReduce等功能,支持大数据的计算、统计、分类等需求。聚合管道和MapReduce在MongoDB中统称为聚合操作。
a) 聚合管道:聚合管道是MongoDB 2.2新引入的聚合框架,遵循Unix风格的数据处理管道。输出是集合中的文档进入多级管道[5]之后聚合的结果。处理管道中的第一步骤可以包含多个组件,包括过滤、投影、分组、排序、限制、跳过等。
图5显示了一个waybill文档,它存储诸如Receiver_name、Receiver_mobile、Receiver_date等字段。其目标是计算不同用户的数量(由接收器名称 接收器移动组合字段区分)和首次使用时间。处理流程分为预处理、统计和结果输出三个步骤。
预处理:预处理:首先,根据Receiver_date字段,在管道的第一阶段使用sort命令$sort of MongoDB对集合中的数据进行排序。在此期间,可以使用索引快速排序,此步骤的结果是提供一个有序的数据集,用于计算最早的时间[6]。否则,在其他处理步骤之后进行排序会比较慢,并占用大量内存。
统计:使用mongo DB grouping命令$group根据特定字段(id)对文档进行分组。具体来说,指定Receiver_name Receiver_mobile combination字段作为识别不同用户的_id字段。在这种情况下,您还需要计算用户最早的使用时间和号码。可以使用$first命令查询最早的时间,$first在相应字段中的排序数据集中效率更高。用户数通过$sum运算符传递,该运算符将值添加到组[7]中每个文档的计算结果中。在应用程序情况下,将值设置为1,可以用作统计值。
输出:最后一步是输出结果,结果文档可以通过$out操作写入目标集合,并且该操作还可以绕过Mongo DB文档大小限制。目标集的问题描述如下:当目标集不存在时,将创建集合,集合在聚合结束后可见;当目标集合已存在时,$out操作将自动覆盖原始集合。
其中,id字段记录用户id字段,userDate记录用户最早的时间,count是用户使用的总次数。
b) MapReduce:MapReduce是Google为大规模数据集(大于1TB)的并行操作提出的软件架构模型。“Map”和“Reduce”的概念,以及它们的主要思想都是从函数式编程语言中借用的,也是从向量式编程语言中借用的特点。MongoDB使用相同的处理范式实现MapReduce。在map函数中,当前文档中的值映射到键值对并发出;reduce函数接受参数并将同一个键的值合并到文档中。通过将计算划分为并行加法运算,MapReduce可以实现大规模的数据计算功能[8]。
例如,我们假设目标是获得不同用户的发货总量和首次使用的时间。首先实现映射部分,将接收方名称、接收方移动设备作为要分组的密钥,并设置{count:1,dates:[this.Receiver_date]}的值。count字段是用户数,dates数组存储用户时间数据。数据的格式用于确保值的一致性并减少时间数组。
在reduce阶段,计算当前键的值。Count字段可以是简单的求和。日期数组将当前值中的时间数据合并到数组中后,需要重新分配数组中最小时间的值。其他优化使用map的sort键进行排序,这减少了操作的次数[9]。最后,我们的计算如图7所示。
IV.SYSTEM DISPLAY(系统显示)
- 用户查询
主管可以在用户数据库中搜索相关信息和数据。用户数据库信息主要分为个人用户和机构用户。
通过上述数据聚合处理的三个步骤,可以得到用户的统计数据。结果如下图所示
您可以浏览和访问有关个人用户和机构用户的信息。个人用户数据库信息项包括:姓名、地址、电话、身份证号码、编码等;机构用户数据
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[238280],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。