系统实现与应用测试.docx
- 文档编号:6020561
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:40
- 大小:41.35KB
系统实现与应用测试.docx
《系统实现与应用测试.docx》由会员分享,可在线阅读,更多相关《系统实现与应用测试.docx(40页珍藏版)》请在冰点文库上搜索。
系统实现与应用测试
4.2系统数据库设计
4.2.1数据库设计原则
根据能耗远程监测系统的特性,设计能耗系统的数据库。
数据库采用Oracle10.2版本,通过PLSQL可视化工具访问数据库。
数据库设计考虑能耗监测系统的特点,依据规范性、效率、可操作性等原则设计。
数据库设计的基本原则是在系统总体信息方案的指导下,各个库应当为它所支持的管理目标服务,在设计数据库系统时,应当重点考虑以下几个因素:
1、数据库必须层次分明,布局合理。
2、数据库必须高度结构化,保证数据的结构化,规范化和标准化,这是建立数据库和进行信息交换的基础。
数据结构的设计应该遵循国家标准和行业标准,尤其要重视编码的应用。
3、在设计数据库的时候,一方而要尽可能地减小冗余度,减小存储空间的占用,降低数据一致性问题发生的可能性,另一方面,还要考虑适当的冗余,以提高运行速度和降低开发难度。
4、必须维护数据的正确性和一致性。
在系统中,多个用户共享数据库,由于并发操作,可能影响数据的一致性。
因此必须用“锁”等办法保证数据的一致性。
5、设定相应的安全机制,由于数据库的信息、对特定的用户有特定的保密要求,安全机制必不可少。
4.2.2数据表主要结构
数据表根据业务需求设计了以下的表,主要包括:
用户、权限表:
用于存储用户信息,用户权限及其关联表。
分项数据时、日、月数据表:
用于存储计算生成的分项分时数据表。
测点数据时、日、月数据表:
用于存储计算生成的测点分时数据表。
测点原始数据表:
用于存储报文解析后的测点原始读数表。
测点实时数据表:
用于存储近期测点原始读数表,数据量较少,读数效率高,同时为二次计算提供数据。
建筑信息表:
用于存储建筑基本资料信息。
测点、采集器、端口信息表:
用于存储与采集器匹配的采集信息数据表。
日志表:
用于记录操作日志数据表。
其数据表结构图如图4-8所示。
4.2.3数据表详细设计
能耗远程监测系统主要数据表详细设计如下:
1.T_D_User:
用户数据表详细设计如表4-1所示:
表4-1用户数据表
Table.4-1Userdata
字段名
中文描述
数据类型
是否为空
键码
备注
Id
自增长ID
integer
否
PK
Name
用户名
nvarchar(200)
否
Pass
密码
nvarchar(200)
否
CreateTime
创建日期
datetime
IsUsed
是否启用
nvarchar(200)
2.T_D_Role:
权限描述表详细设计如表4-2所示:
表4-2权限描述表
Table.4-2Permissiondescription
字段名
中文描述
数据类型
是否为空
键码
备注
Id
自增长ID
integer
否
PK
RoleCode
权限代码
nvarchar(200)
否
RoleDes
权限描述
nvarchar(200)
否
3.T_D_User:
用户权限关联表详细设计如表4-3所示:
表4-3用户权限关联表
Table.4-3UserRightsAssociation
字段名
中文描述
数据类型
是否为空
键码
备注
Id
自增长ID
integer
否
PK
UserId
用户关联ID
integer
否
RoleId
权限关联ID
integer
否
4.T_D_FlfxHour:
分类分项数据表(时、日、月)详细设计如表4-4所示:
表4-4用户权限关联表
Table.4-4Classifiedsubitemdata
字段名
中文描述
数据类型
是否为空
键码
备注
Id
自增长ID
integer
否
PK
Dian
电
nvarchar(50)
总电能
DZmczyd
照明插座用电_1
nvarchar(50)
分项能耗
DKtyd
空调用电_2
nvarchar(50)
分项能耗
DDlyd
动力用电_3
nvarchar(50)
分项能耗
DTsyd
特殊用电_4
nvarchar(50)
分项能耗
DDZmcz
照明插座_1_1
nvarchar(50)
分项能耗
DDZlyj
走廊应急_1_2
nvarchar(50)
分项能耗
DDSwzm
室外照明_1_3
nvarchar(50)
分项能耗
DDLrz
冷热站_2_1
nvarchar(50)
分项能耗
DDKtmd
空调末端_2_2
nvarchar(50)
分项能耗
DDDLdb
冷冻泵_2_1_1
nvarchar(50)
分项能耗
DDDLqb
冷却泵_2_1_2
nvarchar(50)
分项能耗
DDDLj
冷机_2_1_3
nvarchar(50)
分项能耗
DDDLt
冷塔_2_1_4
nvarchar(50)
分项能耗
DDDRsxhb
热水循环泵_2_1_5
nvarchar(50)
分项能耗
DDDDgl
电锅炉_2_2_1
nvarchar(50)
分项能耗
DDDKqjz
空气机组_2_2_2
nvarchar(50)
分项能耗
DDDXfjz
新风机组_2_2_3
nvarchar(50)
分项能耗
DDDPfjz
排风机组_2_2_4
nvarchar(50)
分项能耗
DDDFjpg
风机盘管_2_2_5
nvarchar(50)
分项能耗
DDDFtkt
分体空调_2_2_6
nvarchar(50)
分项能耗
DDDt
电梯_3_1
nvarchar(50)
分项能耗
DDSb
水泵_3_2
nvarchar(50)
分项能耗
DDXxzx
信息中心_4_1
nvarchar(50)
分项能耗
DDXyf
洗衣房_4_2
nvarchar(50)
分项能耗
DDCfct
厨房餐厅_4_3
nvarchar(50)
分项能耗
DDYyc
游泳池_4_4
nvarchar(50)
分项能耗
DDJsf
健身房_4_5
nvarchar(50)
分项能耗
DDQt
其他_4_6
nvarchar(50)
分项能耗
Shui
水
nvarchar(50)
分类能耗
Gdrq
管道燃气
nvarchar(50)
分类能耗
Jzgrl
集中供热量
nvarchar(50)
分类能耗
Jzgll
集中供冷量
nvarchar(50)
分类能耗
Mei
煤
nvarchar(50)
分类能耗
Qtny
其他能源
nvarchar(50)
分类能耗
Yhsyq
液化石油气
nvarchar(50)
分类能耗
Rgmq
人工煤气
nvarchar(50)
分类能耗
QiYou
汽油
nvarchar(50)
分类能耗
MeiYou
煤油
nvarchar(50)
分类能耗
ChaiYou
柴油
nvarchar(50)
分类能耗
Kzszy
可再生能源
nvarchar(50)
分类能耗
CreateTime
时间
datatime
分类能耗
BuildId
建筑ID
nvarchar(50)
建筑关联ID
5.T_D_BuildInfo:
建筑基础信息表详细设计如表4-5所示:
表4-5建筑基本信息表
Table.4-5Buildingbasicinformation
字段名
中文描述
数据类型
是否为空
键码
备注
Id
自增长ID
integer
否
PK
BuildId
建筑代码
nvarchar(50)
否
BUILDNAME
建筑名称
nvarchar(200)
否
BUILDOWNER
建筑业主
nvarchar(200)
DISTRICTCODE
所属行政区划
nvarchar(200)
ISSTANDARD
是否标杆建筑
nvarchar(200)
BUILDYEAR
建设年代
nvarchar(200)
BUILDFUNC
建筑功能
nvarchar(200)
TOTALAREA
建筑总面积
nvarchar(200)
UPFLOOR
地上建筑层数
nvarchar(200)
DOWNFLOOR
地下建筑层数
nvarchar(200)
AIRAREA
空调面积
nvarchar(200)
HEATAREA
采暖面积
nvarchar(200)
AIRTYPE
空调系统形式
nvarchar(200)
HEATTYPE
采暖系统形式
nvarchar(200)
BODYCOEF
建筑体型系数
nvarchar(200)
STRUTYPE
建筑结构形式
nvarchar(200)
WALLMATTYPE
外墙材料形式
nvarchar(200)
WALLWARMTYPE
外墙保温形式
nvarchar(200)
WALLWINTYPE
建筑外窗类型
nvarchar(200)
GLASSTYPE
建筑玻璃类型
nvarchar(200)
WINFRAMETYPE
窗框材料类型
nvarchar(200)
WORKDEPT
工程施工单位
nvarchar(200)
DESIGNDEPT
方案设计单位
nvarchar(200)
MONITORDATE
施工日期
datetime
ACCEPTDATE
竣工日期
datetime
6.T_D_Function:
测点基础信息表详细设计如表4-6所示:
表4-6测点基础信息表
Table.4-6Basicinformationofmeasurementpoints
字段名
中文描述
数据类型
是否为空
键码
备注
Id
自增长ID
integer
否
PK
FunctionId
测点ID
nvarchar(200)
否
Type
能源类型
nvarchar(200)
Adress
地址描述
nvarchar(200)
BuildId
所属建筑
nvarchar(200)
GatewayId
所属采集器
nvarchar(200)
MeterId
所属端口
nvarchar(200)
Unit
测量单位
nvarchar(200)
FunctionName
测点名称
nvarchar(200)
7.T_D_FunctionValue:
测点原始(实时)数据表详细设计如表4-7所示:
表4-7测点原始数据表
Table.4-7Measuringpointrawdata
字段名
中文描述
数据类型
是否为空
键码
备注
Id
自增长ID
integer
否
PK
FunctionId
测点ID
nvarchar(200)
否
Value
测点值
nvarchar(100)
否
CreateTime
数据日期
datetime
ErrorCode
错误编码
nvarchar(50)
8.T_D_FunctionValueHour:
测点分时数据表(时、日、月)详细设计如表4-8所示:
表4-8测点分时数据表
Table.4-8Timemeasurementdata
字段名
中文描述
数据类型
是否为空
键码
备注
Id
自增长ID
integer
否
PK
FunctionId
测点ID
nvarchar(200)
否
FunctionValue
测点分时值
nvarchar(100)
否
CreateTime
生成时间
datetime
否
4.3核心功能设计
4.3.1数据接入解析设计
数据接入解析是将能耗数据采集器通过网络传输的报文接入服务器,对于能耗远程监测系统的数据存储包含报文原始数据和业务数据的存储。
原始报文为报文发送的内容,将报文保存为txt落地,以文件形式存储在服务器硬盘上。
而业务数据为业务展示系统提供数据来源,该数据主要存储在Oracle中。
对于两种数据,我们要考虑数据储存及读取的效率,数据的安全性。
原始报文生成以后,系统根据时间+建筑编号命名生成txt文件,存在到硬盘。
硬盘上建立文件夹,文件夹按年、月、日的日期名称生成文件夹,日文件夹下再自动生成每个小时的文件夹,原始报文根据时间存储在对应的文件夹下。
根据时间分类存储可以让文件更有条理,查询起来更加便捷。
另外服务器上安装文件备份工具软件SmartCopy,定时将原始报文数据备份,软件会自动比较文件日期,当源文件日期比目标文件日期新则进行备份。
当数据量随着时间的推移而不断增大,独立数据库无法满足系统要求时候,我们将采取分布式数据存储。
分布式存储系统,是将数据通过多台分布的服务器进行存储。
分布式网络存储系统采用可扩展的架构,利用多台存储服务器来分担存储工作压力,利用位置服务器分布架构存储数据,不但能够提高数据的存取效率、可靠性以及可用性,对于扩展性也十分有益。
尽管数据存储方式是物理上是分布的,但是逻辑上是集中统一的。
也就是说分布式数据是指数据信息和程序可以不需要部署在同一台服务器,可以分散到多台服务器上,与服务器的地理位置无关,以网络上分散分布的信息数据及相关联的数据库操作为研究对象的一种理论计算模型。
分部署数据库存储以不同地域不同网络的方式对数据存储,让数据通过架构达到共享、交换的目的。
数据以某种特定的格式记录在计算机内部或外部存储设备上。
数据接收方式为被动接收,采用网络协议技术实现,基于TCP/IP传输协议。
其数据接收的流程图如图4-8所示:
4.3.1.1TCP/IP协议及Socket编程
能耗数据接入服务以TCP/IP网络协议为基础,采用Socket编程开发。
能耗数据接入服务部署在服务器上,开放约定的端口,提供网络地址给数据采集终端,用于接收报文数据。
Tcp/Ip协议是应用于网络上的一种通讯方式协议,具体在互联网上传输的快速性、准确性。
该网络协议从分层模型来说可以分为四层:
网络接口层,网络层,传输层,应用层。
应用层:
应用程序通过这一层来访问网络。
能够想用户提供常用的应用程序,例如电子邮件系统,文件传输访问,远程登录访问等。
应用层协议主要包括如下几个:
FTP、TELNET、DNS、SMTP、NFS、HTTP。
FTP(FileTransferProtocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
HTTP(HypertextTransferProtocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80。
传输层:
提供两台主机之间的应用程序的通信。
其功能包括:
一、格式化信息流;二、提供可靠传输。
为实现可靠传输,传输层协议规定接收端必须发回确认,假如分组丢失,则必须重新发送,即耳熟能详的“三次握手”过程,从而提供可靠的数据传输。
传输层协议包括两种,传输控制协议TCP(TransmissionControlProtocol)和用户数据报协议UDP(UserDatagramprotocol)。
UDP对于可靠性不保证,不能保证数据准确的传输到达目的地,而TCP则是可靠的传输,应用也非常广泛。
网络层:
负责相邻计算机之间的通信。
该层包括IP(InternetProtocol)协议、ICMP(InternetControlMessageProtocol)控制报文协议、ARP(AddressResolutionProtocol)地址转换协议、RARP(ReverseARP)反向地址转换协议。
IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。
IP数据报是无连接服务。
网络接口层:
模型的基层是网络接口层,又称为数据链路层,是负责IP数据包的接收与发送,或者从网络上接收物理帧,抽出IP数据包,交给IP层。
Socke通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。
Socke编程大部分都是使用系统提供的API接口进行交互。
Socket实质上提供了进程通信的端点。
进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:
服务器监听,客户端请求,连接确认。
(1)服务器监听:
是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求:
是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。
为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
(3)连接确认:
是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。
而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
4.3.1.2能耗数据报文协议
能耗监测系统定义了数据报文协议。
协议用于能耗数据采集器与监测中心的数据接入解析服务之间的数据格式约定。
为确保能耗数据的机密性,对报文设计了数据加密。
加密方式主要通过AES加密,以及身份认证及MD5密钥等算法,加密的流程如图所示4-9所示。
其具体加密过程如下:
(1)TCP连接建立成功后,能耗监测及分项计量系统将本地存储的认证密钥计算后MD5值和自身ECC算法公钥发送给数据中心,请求身份认证。
(2)数据中心将收到的MD5值和本地计算结果相比较,如果一致则认证成功,否则认证失败。
(3)认证成功后,生成新的身份认证密钥和加密能源计量数据AES算法密钥,使用能耗监测及分项计量系统ECC算法公钥加密后传。
输到能源计量系统。
(4)能耗监测及分项计量系统使用ECC私钥算法解密身份认证密钥和AES算法密钥。
更新本地身份认证密钥,并向数据中心发送身份认证密钥更新成功信息。
(5)数据中心更新本地身份认证密钥信息,完成后向能耗监测及分项计量系统确认。
(6)能耗监测及分项计量系统使用AES算法加密能源计量数据后传输。
(7)数据中心使用AES算法解密能源计量数据。
能耗数据传输协议设计规范主要包括:
包体格式、身份认证、远程传输包等。
其主要协议的具体设计如以下表。
表4-8能耗数据报文包体格式表
Table.4-8Energyconsumptiondatapacketformat
项目
长度
定义
说明
包头
4字节
0x680x680x160x16
代表当前数据包中的“有效数据”的长度。
有效数据总长度
4字节
“有效数据”为数据包的实体内容
有效数据
N字节(M+4)
只对“有效数据”进行CRC校验
CRC校验
4字节
0x550xAA0x550xAA
表4-9身份认证数据包表
Table.4-9Identityauthentication
指令内容
Type元素格
说明
采集器请求身份验
Request
元素名称:
id_validate
数据中心发送一串随机序列
Sequence
采集器发送计算的MD5
Md5
数据中心发送验证结果
result
表4-10远程传输包表
Table.4-10Remotetransmissionpacket
指令内容
Type元素格
说明
数据中心查询数据采集器
query
元素名称:
data
采集器对数据中心查询的应答
reply
采集器定时上报的能耗数据
report
采集器断点续传的能耗数据
continuous
全部续传数据包接收完成后,数据中心对断点续传的应答
continuous_ack
4.3.2能耗数据计算设计
能耗数据计算是将已经存入Oracle数据库的测点原始数据,进行二次加工,生成小时、日、月、平均等以供直观分析的数据。
能耗数据计算同样部署为windows系统服务,设置定时触发生成业务数据。
能耗数据计算服务是由于在前端调用数据库数据时,由于直接读取原始数据,再实时计算的效率非常低下,从而设计了能耗数据计算服务。
能耗数据计算服务的主要任务是定时将需要复杂计算的数据提前计算好,生成保存到对应的数据表中,提供给前端直接调用,从而达到大大减少前端数据压力的目的。
能耗数据计算主要包括:
测点分时计算、能耗分项分时数据计算。
其中分时为小时、日、月的综合数据。
测点分时计算相对单一,针对某测点,将该小时最后的数据减去上小时最后的数据,形成该测点的小时能耗统计。
对于日度和月度数据的统计计算同理。
能耗分项分时数据计算,将所有测点该小时最后的数据取出来,再进行类别判断,将同类的相加,分别减去上小时同类的相加,然后将不同类别的数据分别对应存储数据表对应的字段,形成该小时的能耗分项分时数据。
由于测点和类别都较多,所以实现的时候,一定要注意代码的可靠性。
4.3.3数据库访问设计
数据库访问Oracle数据库,通过oracleclient访问。
Oracle开发调试工具安装PLSQL,配置Oracle连接服务,用于可视化调试数据库。
使用A访问数据库,引用System.Data.OracleClient.dll文件。
这是.NETforOracle组件的核心文件。
使用时,开发人员可以通过安装oracle_net.msi来使用.NETforOracle组件,这时系统会将此组件作为一个系统默认的组件来使用,NETforOracle组件中用于组织类和其他类型的名字空间是System.Data.OracleClient。
在此名字空间中,主要包含四个核心类,它们分别是:
OracleConnection、OracleCommand、O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 实现 应用 测试