智能报表数据存储优化

2023-07-15 00:54柳美李夏光李晓阳
电子技术与软件工程 2023年7期
关键词:报表复杂度加密

柳美 李夏光 李晓阳

(国能数智科技开发(北京)有限公司 北京市 100001)

1 背景

为了智能报表能够更好、更稳定地运行,集团决定对智能报表存储方面做出提升,使得报表系统能够更好地支持集团的报表工作。存储设备往往连接多个系统,因此,必须保护每个系统的数据,防止其他系统未经权限而访问数据,或着破坏数据。防止集团数据内部和外部数据的安全性问题,也是集团数据存储的重中之重。

2 智能报表存储优化

2.1 数据库慢

智能报表最常用的两种功能是数据填写和数据查询,无论是关系型数据库还是NoSql,任何存储系统决定于其添加、查询性能的主要有三种:查询时间复杂度、数据大小、高负载。

2.1.1 查询复杂度

数据查询受时间复杂度和空间复杂度影响。

(1)时间复杂度。在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间理论上来说是算不出来的,因为它不仅仅与编写的算法有关,还与运行这个算法的机器有关系,计算机很好,那么所耗费的时间就可能会更少,因此,一个算法耗费的时间是需要放在机器上实际测验才能知道的。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。简单来说,时间复杂度就是一个程序运行所消耗的时间,叫做时间复杂度。

(2)空间复杂度。对一个算法在运行过程中临时占用存储空间大小的量度。空间复杂度不是程序占用了多少bytes 的空间,因为这个也没太大意义,空间复杂度算的是变量的个数。空间复杂度计算规则基本跟实践复杂度类似。简单来说,空间复杂度就是程序运行所需要的时间。

2.1.2 数据存储量

智能报表为多个系统提供技术服务支持,因此数据存储量比较庞大,选用适合的数据库也是至关重要的,数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。而不同的数据库是按不同的数据结构来联系和组织的。而在当今的互联网中,最常见的数据库模型主要分为两种,即关系型数据库和非关系型数据库。

(1)关系新数据库。关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式),表之间的联系通过不同表中的公共字段来体现。即一个关系型数据库是由二维表及其之间的关系组成的一个数据组织。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。

①关系型数据库的特性。

1.系型数据库,是指采用了关系模型来组织数据的数据库;

2.关系型数据库的最大特点就是事务的一致性;

3.简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

②关系型数据库的优点。

1.容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;

2.使用方便:通用的SQL 语言使得操作关系型数据库非常方便;

3.易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;

4.支持SQL,可用于复杂的查询。

③关系型数据库的缺点。

1.为了维护一致性所付出的巨大代价就是其读写性能比较差;

2.固定的表结构;

3.高并发读写需求;

4.海量数据的高效率读写;

(2)非关系新数据库。非关系型数据库,也称NoSQL 数据库,采用不同于关系数据“行列”组织的数据模型,可以混合支持多种数据类型。对比关系型数据库,NoSQL 数据库采用更简单的设计方式,更灵活的数据模型,在设计上有着更好的扩展能力,这使得NoSQL 数据库能更有效地应对数据负载超过单个服务器承载能力的应用场景。

NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。

①非关系型数据库的特性。

1.使用键值对存储数据;

2.分布式;

3.一般不支持ACID 特性;

4.非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

②非关系型数据库的优点。

1.无需经过sql 层的解析,读写性能很高;

2.基于键值对,数据没有耦合性,容易扩展;

3.存储数据的格式:nosql 的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。

③非关系型数据库的缺点。

1.不提供sql 支持,学习和使用成本较高;

2.无事务处理,附加功能bi 和报表等支持也不好;

无论是哪种存储,数据量越少,自然查询性能就越高,随着数据量增多,资源的消耗、磁盘读写繁忙)、耗时也会越来越高。

原有的智能报表数据是存储于NoSql 数据库的。现对数据存储做优化,对存储数据进行数据归档,将数据迁移到关系型数据库,通过数据库作业把非热点数据迁移到历史表,新增业务入口路由到对应的历史表(库)。从关系型数据库角度出发,索引结构基本固定是B+Tree,时间复杂度是O(log n),存储结构是行式存储。因此可对关系数据库优化。关系型数据库是按照结构化的方法存储数据,每个数据表都必须先定义好表的结构,再根据表的结构存入数据,这样整个数据表的可靠性和稳定性都比较高。

(3)历史数据迁移。历史数据迁移就是采用什么方法第数据进行迁移,数据迁移主要策略有先录后迁,单个迁移,批量迁移。根据不同报表类型,在不同页面下配置报表数据结构。存储至关系型数据库的报表的范围可以配置,主要指通过配置可以控制哪些报表可以往关系型数据库存储。可以通过报表模板单独配置报表,也可以通过配置文件批量全部配置报表。同一份数据存储在两个数据库中。这样一份两存对数据的存储也有一定的保障作用。

先录后迁;报表数据先录入到NoSql 数据库,再通过需要将数据迁移至关系型数据库。先录后迁只要针对的是新旧数据结构存储在特定差异的差异的情况,

单个迁移:根据需要将需要迁移的报表数据进行一张报表的数据迁移,单表迁移的优点在于迁移实施的过程段,相对批量迁移,迁移涉及的问题少,相对风险比较低,其缺点就是故宫工作强度比较大,如果迁移的数据量较大,工作人员会很疲劳。

批量迁移:根据需要将需要迁移的报表数据进行多张报表的数据迁移,批量迁移可以将任务分开,有效地解决了数据量大和宕机时间段之间的矛盾,但是批量迁移会增加出错的概率,

因此,在进行报表迁移时选择适合的迁移方法即可。

2.1.3 高负载

高负载造成原因有高并发请求、复杂查询等,导致CPU、磁盘繁忙等,而服务器资源不足则会导致慢查询等问题。该类型问题会选择集群、数据冗余的方式分担压力。

2.2 数据存储优化的层面

自顶向下的一共有四层,分别是硬件、存储系统、存储结构、具体实现。

层与层之间是紧密联系的,每一层的上层是该层的载体;因此越往顶层越能决定性能的上限,同时优化的成本也相对会比较高,性价比也随之越低。

以最底层的具体实现为例,索引的优化的成本应该是最小的,可以说加了索引后无论是CPU 消耗还是响应时间都是立竿见影降低。一个简单的语句,无论如何优化加索引也是有局限的,当在具体实现这层没有任何优化空间的时候就得往上一层【存储结构】,【存储结构】是否从物理表设计的层面出发优化(如分库分表、压缩数据量等),如果是文档型数据库得思考下文档聚合的结果。

如果在存储结构这层优化得没效果,得继续往再上一次进行考虑,是不是关系型数据库不适合用在现在的业务场景?如果要换存储,那么得换一个适用于业务的NoSQL。最后则考虑优化硬件,而优化硬件成本是最高的,因此,优化着先考虑优化sql 索引、存储结构、存储系统。

2.3 数据存储的安全性

2.3.1 加密

在智能报表数据存储项目中,加密是保证数据安全和系统安全的一种有效手段。数据加密技术可分为数据传输加密技术、数据存储加密技术。

数据传输加密技术的目的是对传输中的数据流加密,通常有线路加密与端—端加密两种。线路加密侧重在线路上而不考虑信源与信宿,是对保密信息通过各线路采用不同的加密密钥提供安全保护。端—端加密指信息由发送端自动加密,并且由TCP/IP 进行数据包封装,然后作为不可阅读和不可识别的数据穿过互联网,当这些信息到达目的地,将被自动重组、解密,而成为可读的数据。

数据存储加密技术的目的是防止在存储环节上的数据失密,数据存储加密技术可分为密文存储和存取控制两种。前者一般是通过加密算法转换、附加密码、加密模块等方法实现;后者则是对用户资格、权限加以审查和限制,防止非法用户存取数据或合法用户越权存取数据。

2.3.2 授权

智能报表为多个系统提供服务,权限对数存储有着至关重要的作用,是所有安全防范和保护的主要策略之一,授权可以从登录控制和权限控制两个层面进行保护,主体依据是某些控制策略或权限对客体或其资源进行的不同授权访问,限制对关键资源的访问,防止非法用户进入系统及合法用户对资源的非法使用。

登录访问控制。登录访问控制为网络访问提供了第一层访问控制它主要控制哪些用户能够登录到网络存储系统并获取存储资源。

访问权限控制。将能够访问网络的合法用户划分为不同的用户组,每个用户组被赋予一定的权限。用户对存储资源的访问权限可以用访问控制表来描述。它的主要特征是可以保证系统的所有资源不被未经授权的实体任意非法使用和非法访问。基于这一特征,访问控制决定了哪些实体能够访问进入系统,能访问使用系统的哪资源信息以及如何使用这些数据。合理适当的访问控制能够有效阻止未经允许的实体有意或无意地获取使用数据资源信息。访问控制的方法通常包括用户识别代码、口令、登录控制、资源授权、授权核查、日志和审计信息。访问控制是维护安全,保护系统资源的主要手段之一,也是防止黑客攻击的关键手段之一。

2.3.3 完整性

数据完整性是指数据没有受到非授权方式所做的篡改,同时也没有出现未经授权的使用情况,如果充许“向上写、向下读”,那么高安全等级的数据就有可能被低安全等级的用户、进程等主体篡改,数据完整性将没有任何安全保障可言。

2.3.4 数据安全

数据安全主要包括白名单防护系统访问安全、通过用户登录防护填报数据访问安全、通过日志记录访问信息、使用域名。

(1)白名单防护系统访问安全:允许访问填报工具的第三方系统的域名及IP 记录在填报工具白名单中,填报页面被访问时做白名单检查。

(2)用户登录防护填报数据访问安全:在第三方系统访问填报工具时,先调用登录,使得当前用户自动登录填报工具;当前登录用户的权限等信息将自动加载到填报工具内存;用户在填报工具保存、修改数据时,操作信息均记录在填报工具日志中,详见《填报工具日志设计》。

(3)日志记录访问信息:将每次访问填报工具的第三方系统IP、用户电脑IP、用户工号、组织机构、期间等信息记录在填报工具日志中。

(4)使用域名:通过域名填报工具,不能直接通过IP 地址访问。

2.4 数据存储的准确性

2.4.1 数据采集

通常数据处理之前会有数据采集的过程,数据采集会涉及到多数据来源,每种数据来源由于格式等不一致,需要特殊处理。针对不通的数据源,需要做到每个数据源获取数据能够独立;采集过程需要监控,传输之前如有条件,可以做到本地有备份数据,便于异常查找时进行数据比对。

2.4.2 数据传输(实时/批量)

数据传输部分在整个系统中是相当重要的。数据传输是数据从一个地方传送到另一个地方的通信过程。数据传输系统通常由传输信道和信道两端的数据电路终端设备(DCE)组成。传输信道可以是一条专用的通信信道,也可以由数据交换网、电话交换网或其他类型的交换网路来提供。

数据源本地已经做到有备份的情况下,对于传输异常的时候,需要支持重试,存储端需要支持去重。

2.4.3 数据建模/存储

数据存储可以针对结果集合进行冗余分类存储,便于数据进行比对,针对存储需要进行副本备份,同时数据可以考虑按生效记录进行叠加存储,支持回溯历史的存储结构进行存储。

2.4.4 数据计算/分析/挖掘

数据进行计算,分析的时候需要进行步骤分解,便于准确性的分析和统计

(1)计算之前,支持测算,同时支持数据进行分批计算,需要能导出本批次清单基础数据(例如人员或者id),便于数据核对。

(2)计算之中,支持快速少量指定的典型数据测算,支持选择,是否存储参与计算过程的全部的中间变量。

(3)计算之后,可以选择,支持导出本次计算过程中的所有参与变量和中间变量参数,可以线下根据数据列表对应的参数,进行计算,从而进行数据准确性的核对。

计算过程中,支持针对有问题的数据ID 进行染色,染色后的数据,所有的中间过程变量全部进行打印输出。

3 结论

总而言之,智能报表数据存储优化是多个方面的,卓先考虑的就是适合业务需求的存储系统,智能报表最适合的存储系统则是mongodb,因为mongodb 的最大特点就是格式自由,易于存储数据,然而报表数据的内容是多样化的,在对智能报表数据存储优化,就是将mongo 数据格式转化为mysql 格式的数据存储,mysql存储性能高于mongo 的存储性能。数据存储的安全性和准确性也是数据存储优化必不可少的,不准确、不安全的数据存储会使得工作出现和恩多不必要的麻烦。为了智能报表长期、稳定地运行,数据存储优化万万不能小视。

猜你喜欢
报表复杂度加密
一种基于熵的混沌加密小波变换水印算法
一种低复杂度的惯性/GNSS矢量深组合方法
LabWindows/CVI中Excel报表技术研究
从三大报表读懂养猪人的成绩单
求图上广探树的时间复杂度
认证加密的研究进展
某雷达导51 头中心控制软件圈复杂度分析与改进
出口技术复杂度研究回顾与评述
基于ECC加密的电子商务系统
基于格的公钥加密与证书基加密