本文摘要:【摘要】论文介绍了第二代关系型数据库和第三代非关系型数据库的分类、特性和关联概念,概述了关系型数据库的性能优化方向和主要优化方法,阐述了关系型数据库在企业级软件中的应用架构,介绍了关系型数据库在云计算和大数据等新兴IT技术中的应用方式,最后简要介绍了N
【摘要】论文介绍了第二代关系型数据库和第三代非关系型数据库的分类、特性和关联概念,概述了关系型数据库的性能优化方向和主要优化方法,阐述了关系型数据库在企业级软件中的应用架构,介绍了关系型数据库在云计算和大数据等新兴IT技术中的应用方式,最后简要介绍了NoSQL数据库的分类和应用。
【关键词】计算机;数据库技术;信息管理
1引言
数据库是按照数据结构来组织、存储和管理数据的载体,在信息时代特指“一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合”。管理数据库的计算机软件称为数据库软件,一般简称为“数据库”。
2数据库分类及概述
2.1数据库的分类
IBM在1969年推出了第一代层次模型数据库管理系统IMS,20世纪70年代DBTG又推出了网状模型数据库,其优点是查询效率高,但表示数据具有局限性,不太适合多对多的节点关系。20世纪70年代开始,IBM、微软和ORACLE等公司逐步推出了DB2、SQLServer和Oracle等关系型数据库软件,因为关系型数据库严格基于数学基础,优点是数据结构简单清晰、易学易用,但查询效率不如层次或网状型数据库,因此,关系型数据库的查询性能调优是数据库技术研究和应用的一个重点领域。日常办公常用的Excel软件也可视作一种关系型数据库软件。
计算机论文范例:新时代地方院校计算机信息技术教育研究
从20世纪80年代末期开始,随着互联网特别是近年来移动互联网的发展,网络数据已不局限于传统二维表示的结构化数据,图片、语音、视频等没有预定义数据模型的非结构化数据成为网络数据的主流,第三代非关系型数据库逐渐兴起,采用“键-值”对、列簇或者图结构等方式来存储和查找数据,具有支持分布式、可扩展性强和开放性好等优点,很好地支持了人工智能、机器学习和大数据技术的各类应用。相比于关系型数据库,非关系型数据库在操作原子性、一致性、隔离性和持久性的支持能力不足,很多场合还需要依赖关系型数据库。因此,虽然非关系型数据库已成为今天大数据、机器学习等行业应用的热点,但传统的关系型数据库仍具有不可撼动的行业地位。
2.2关系型数据库的ACID特性
在关系型数据库操作中,一个任务执行单元称为事务,例如,一次数据插入或者一次数据更新,为保证数据库事务操作的正确可靠,关系型数据库必须具备4个特性:原子性、一致性、隔离性和持久性。所谓原子性,是借用早期人类认为的原子所具有的不可分割性,在数据库中指一个事务中的所有操作,要么都成功,要么就全部不执行。
如果部分成功部分失败,已经成功完成的操作要进行回滚操作,就好像没有执行过一样。所谓一致性,是指事务操作前后,数据库的完整性不受破坏。一致性往往与数据库的隔离性联系起来,即多个并行处理的事务同时操作数据后,数据的完整性不受破坏,在多个并行事务中呈现的数据值是一致的。隔离性的主要功能就是防止多个事务并发执行而导致的数据不一致问题。所谓持久性是指事务一旦被数据库执行,其对数据的修改就是永久性的,不因数据库或计算机故障而丢失。
2.3结构化查询语言
SQL结构化查询语言(StructuredQueryLanguage)简称SQL,是专用于管理关系型数据库的编程语言,用于对数据库数据的插入、修改、删除和查找等功能,用户在操纵数据库时,仅需要编写SQL语句来指明具体操作,剩下的工作都可以由数据库自动完成。SQL语句大大提高了数据库管理的效率和易用性,目前所有的关系型数据库基本上都支持标准的SQL语句,仅有极少数功能需要使用非标准的SQL语句。
SQL语言从功能上可以划分为数据定义、数据操纵和数据控制。数据定义是指定义数据库的三级模式结构:外模式、概念模式和内模式。其规定了数据的物理结构、逻辑结构和数据视图,如数据库和用户表的建立等。数据操纵指针对用户数据表的增删改查等具体操作。数据控制则规定了数据的访问和使用权限。
2.4数据库安全
数据是现代社会活动的核心,也是黑客重点攻击的方向,勒索病毒攻击加密数据库数据,往往给企事业单位带来重大损失,为数据库建立可靠的防护措施是必不可少的步骤。数据库防护的核心是数据安全,因此在数据库的访问控制和权限设置、用户操作行为和审计、数据维护等方面都应建立完备的制度和手段,如关闭不必要的网络端口、最小化用户操作权限、敏感数据加密存储等。
3关系型数据库性能优化
3.1表结构优化
数据库在建立时,就应该进行良好的设计,遵守数据库设计范式。关系型数据库有5种设计范式:第1~5范式,所有设计范式都是为了提高数据库的使用性能和提高其可扩展性。第1范式要求数据表的列具有原子性,即单表每列的数据只对应程序的一个属性,不能是对应多个属性的集合;如果一定要对应集合,应该使用从数据表,并且从数据表的每一列也要保持原子性。
第2范式要求必须在满足第1范式的基础上,表格中的每一条数据都可以被区分,不能有两条数据完全一致。实际上,要求数据库的每个数据表都应设置主键(PrimaryKey),主键的值在单表中具有唯一性。主键可以是1个,若1个主键不满足唯一性,则可以设置多主键,多主键的组合必须具有唯一性,但设置多主键会引起数据库增加开销,导致读写性能下降。
第3范式要求必须满足第2范式,它要求在单表中的属性具有独立性,互相之间不具有依赖关系,如果具有依赖关系,则应该将所有具有依赖关系的数据列单独划分为一个数据表,并通过设置外键来表示两张数据表之间的关联性。在查询数据时,可以通过左连接查询或者右连接查询来形成用户需要获得的完整数据。对于一些关联关系特别复杂的情况,满足第3范式可能导致性能下降,此时可以建立视图,预置复杂的连接查询,提高查询效率。
第4范式在第3范式的基础上,要求消除数据表的多值依赖,即数据表中不能存在若干行多列数据完全一致的情况。第5范式在第4范式的基础上,进一步消除传递依赖,即多个数据列之间不能形成依赖关系链。但实际上,数据库设计满足第3范式即可,过度追求完美的第5范式,将导致数据表设计过于复杂、零散,不利于实际使用,在数据量过大时,反而会引起数据库查询性能下降。
3.2并发性能优化
①单机并发能力优化主要目标是提高单数据库的并发能力。实际上,大型数据库一般都有单独的服务器,首先,确保所有计算机资源都用于数据库服务;其次,提高存储数据库文件的计算机硬盘I/O能力,如将机械硬盘改为固态硬盘;再次,提高网络带宽和QoS服务质量,降低网络传输时延和时延抖动;最后,优化数据库的连接池,合理设置连接池的大小、等待时间、保持时间和检测参数等。②部署优化主要指应用分布式部署来提高数据库的并发性能。一是可以对数据表进行横向分裂,将数据表数据按特定规则排序后,横向拆分到不同的数据库服务器上,即通过数据分库来提高并发服务能力。
二是针对并发读写冲突的问题,通过分布式服务器实现读写分离:先在后端构建一个主从同步数据库集群,将主数据库数据自动同步到从数据库,在前端服务器部署读写控制器。当要写数据时,由控制器向主数据库发起写请求,主数据库完成事务操作后,再将相同的操作同步到从服务器,实现主从数据同步;当要读数据时,前端控制器直接到从数据库读取数据。如果进一步对主数据库和从数据库进行分库,还能继续提高数据库集群的并发服务能力。读写分离的优点不仅在于提高了系统的读写并发能力,而且实现了数据的冗余备份,提高了数据的可靠性。
3.3SQL语句优化
数据库的性能主要体现为操作响应时间,在使用SQL语句查询时,也需要根据查询目标进行优化:①避免“select*”这样的全局查询和使用“like”关键字的模糊查询,这种查询方式需要进行全表扫描,对于列数较多且数据量巨大的表来说将消耗大量系统资源,造成系统响应时间将显著延长。②缩小查询范围,通过where字句、between等范围关键字和分页查询等方式,缩小查询范围。使用子查询时,应将查询范围最小的查询语句写在最内层,这样可以快速缩小查询范围,降低后续子查询的难度。
③连接查询时,使用数据量较小的表去连接查询数据量大的表,同时可以在连接的字段上建立索引,可进一步提高查询效率。SQL语句是影响数据库性能的重要因素,数据库大部分数据访问都属于查询操作,不合理的查询操作甚至有可能阻塞数据库的其他查询服务,因此,SQL语句执行查询操作时必须要优化查询效能。
4关系型数据库的应用
4.1在传统企业级软件中的应用
数据库是企业级软件必不可少的核心组成部分,企业级软件的核心架构是依据数据库结构来设计和确定的,后台业务核心逻辑就是对数据的运用、分析和持久化。以ERP、CRP等软件为代表的企业级软件,以结构化数据管理为主,基本都采用关系型数据库作为持久化存储软件。业界主流的企业级关系型数据库有MySQL、MariaDB、PostgreSQL、SQLServer和Oracle等。近年来,随着自主软件的发展和信息安全要求,国产数据库管理软件也在兴起,如南大通用、武汉达梦、华为高斯等。由于软件功能具有不确定性,随着企业业务发展和社会需求变迁,软件功能也在不断发生变化。
但是数据库的表结构一旦确定并在实际运行中写入大量数据,是很难随着软件功能随意变化的,一般仅在必要的情况下才会更改已形成的表结构,此时需要有专门的表结构升级脚本,操作烦琐且风险巨大,一旦因断电或其他意外原因造成升级失败又不能回滚,将给软件客户造成极大损失,因此,在企业级软件体系中,往往设置持久化中间层来兼容软件功能变化对数据库的影响。
持久层通过实体类与数据库的数据表建立映射关系,例如,在Java中可以通过XML或者注解的方式,在Java实体类与数据库表之间建立一对一映射关系,由持久化层来维护与数据库的连接和访问操作请求,并向上层业务逻辑代码提供API(应用可编程接口)。对数据库表的增删改查操作,简化为通过持久化层提供的API来操作实体类,由持久层将相应的操作转换为SQL语句去操作数据库,而不是程序代码直接通过SQL语句去访问数据库。在这种应用模式下,数据库不直接与软件业务逻辑代码发生关系,持久化层向业务逻辑代码屏蔽了不同厂商数据库的不一致性,提高了程序的可移植性,向数据库屏蔽了业务逻辑字段频繁变化对数据库的冲击,有利于提高软件和数据库的稳定性。
4.2在云计算和大数据体系中的应用
对于开源云计算管理平台OpenStack来说,MariaDB或者其他关系型数据库是部署云计算平台必不可少的基础环境,Nova、Glance和Keystone等组件都依赖数据库存放系统管理必要的结构化数据,一旦数据库遭到攻击,极有可能导致整个云计算系统崩溃。基于开源大数据处理平台Hadoop的数据仓库工具Hive,则可以视作大数据版本的关系型数据库。Hive将结构化数据文件映射为数据库表,通过HiveSQL可以将SQL查询语句转换为MapReduce程序来执行大数据查找和分析,它借鉴了关系型数据库的数据结构并结合Hadoop的MapReduce工具,实现了对海量关系型数据的离线查询。
5NoSQL数据库的分类和应用
互联网和移动互联网的发展催生了无数应用模式,微博、网购、外卖、抖音和移动社交网络等应用产生了各种不同类型的非结构化数据以及对应的数据应用,非关系型数据库发展了多个分支来适应这种需求。
①“键值对”型数据库,这类数据库基于哈希算法构建哈希表,通过将一个特定的“键”和“数据”进行绑定来实现数据管理,优点是简单易部署,单数据查询效率高,但是批量数据查询效率低下,常用于大型网站的分布式缓存,如Redis等。②列存储数据库,主要用于海量数据存储。传统关系型数据库是行存储数据库,特点是以“行”为单位来管理和使用数据。大数据处理往往有选择的处理数据的部分维度,如微博词频统计、评论分析等,此时列存储更有利于数据快速读取。列存储更有利于数据读取,不利于数据插入、更新和删除等操作,同时列数据的重复性更有利于数据压缩。因此,列存储主要用于大数据领域,如HBase等。
③文档数据库与“键值对”数据库类似,其以特定的格式来存储文档信息,如Json、XML等,其更高级的功能是允许键值嵌套,常用于网页数据、表单数据处理。④图型数据库适用于多对多类型的数据存储,如微博、微信等社交网络数据。图形数据库一般由结点集和结点关系集两部分组成,其查找算法需要特殊定制,但在近年兴起的知识图谱和较早应用的专家推荐系统中应用较为广泛。
6结语
随着互联网技术的深入发展,网络资源形式愈加丰富,非关系型数据库已经成为新一代网络应用的主流,但仍然不能放弃传统的关系型数据库。当前网络行业依然存在海量的结构化数据存储需求,并且随着非结构化数据的增长,与之相对应的结构化数据也将保持同步增长,关系型数据库在未来仍将保持旺盛的生命力,与非关系型数据库同步发展。
【参考文献】
【1】王珊,萨师煊.数据库系统概论(第5版)[M].北京:高等教育出版社,2014.
【2】姜明俊.分布式关系数据库事务管理器的设计与实现[D].南京:东南大学,2019.
【3】李小莲.对数据库范式的分析与应用[J].电脑知识与技术,2018,14(8):7-8,16.
【4】杨键.分布式关系型数据库查询方法优化与实现[D].成都:电子科技大学,2021.
作者:贺峰,杨青丰
转载请注明来自发表学术论文网:http://www.fbxslw.com/dzlw/29040.html