数据库的介绍、分类、作用和特点

数据库的介绍、分类、作用和特点

一、数据库的介绍

数据库是"按照数据结构来组织、存储和管理数据的仓库"。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

2023年,英国生物银行发布了迄今世界上最大的全基因组测序数据库。


1.简介

1.1 定义

数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

数据库是一个按数据结构来存储和管理数据的计算机软件系统。

数据库的概念实际包括两层意思:

(1)数据库是一个实体,它是能够合理保管数据的"仓库",用户在该"仓库"中存放要管理的事务数据,"数据"和"库"两个概念结合成为数据库。

(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

数据库作为最重要的基础软件,是确保计算机系统稳定运行的基石。


1.2 发展现状

在数据库的发展历史上,数据库先后经历了层次数据库、网状数据库和关系数据库等各个阶段的发展,数据库技术在各个方面的快速的发展。特别是关系型数据库已经成为目前数据库产品中最重要的一员,80年代以来, 几乎所有的数据库厂商新出的数据库产品都支持关系型数据库,即使一些非关系数据库产品也几乎都有支持关系数据库的接口。这主要是传统的关系型数据库可以比较好的解决管理和存储关系型数据的问题。随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足需要,这主要是由于越来越多的半关系型和非关系型数据需要用数据库进行存储管理,以此同时,分布式技术等新技术的出现也对数据库的技术提出了新的要求,于是越来越多的非关系型数据库就开始出现,这类数据库与传统的关系型数据库在设计和数据结构有了很大的不同, 它们更强调数据库数据的高并发读写和存储大数据,这类数据库一般被称为NoSQL(Not only SQL)数据库。 而传统的关系型数据库在一些传统领域依然保持了强大的生命力。

2023年,英国生物银行发布了迄今世界上最大的全基因组测序数据库。


2.数据库管理系统

数据库管理系统是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。

数据库管理系统是数据库系统的核心组成部分,主要完成对数据库的操作与管理功能,实现数据库对象的创建、数据库存储数据的查询、添加、修改与删除操作和数据库的用户管理、权限管理等。它的安全直接关系到整个数据库系统的安全,其防护手段主要有:

(1)使用正版数据库管理系统并及时安装相关补丁。

(2)做好用户账户管理,禁用默认超级管理员账户或者为超级管理员账户设置复杂密码;为应用程序分别分配专用账户进行访问;设置用户登录时间及登录失败次数限制, 防止暴力破解用户密码。

(3)分配用户访问权限时,坚持最小权限分配原则,并限制用户只能访问特定数据库,不能同时访问其他数据库。

(4)修改数据库默认访问端口,使用防火墙屏蔽掉对 外开放的其他端口,禁止一切外部的端口探测行为。

(5)对数据库内存储的重要数据、敏感数据进行加密存储,防止数据库备份或数据文件被盗而造成数据泄露。

(6)设置好数据库的备份策略,保证数据库被破坏后能迅速恢复。

(7)对数据库内的系统存储过程进行合理管理,禁用掉不必要的存储过程,防止利用存储过程进行数据库探测与攻击。

(8)启用数据库审核功能,对数据库进行全面的事件跟踪和日志记录。


3.分布式数据库

所谓的分布式数据库技术,就是结合了数据库技术与分布式技术的一种结合。具体指的是把那些在地理意义上分散开的各个数据库节点,但在计算机系统逻辑上又是属于同一个系统的数据结合起来的一种数据库技术。既有着数据库间的协调性也有着数据的分布性。这个系统并不注重系统的集中控制,而是注重每个数据库节点的自治性,此外为了让程序员能够在编写程序时可以减轻工作量以及系统出错的可能性,一般都是完全不考虑数据的分布情况,这样的结果就使得系统数据的分布情况一直保持着透明性。

数据独立性概念在分布式数据库管理系统中同样是十分重要的一环,但是不仅如此,分布式数据管理系统还增加了一个叫分布式透明性的新概念。这个新概念的作用是让数据进行转移时使程序正确性不受影响,就像数据并没有在编写程序时被分布一样。

在分布式数据库里,数据冗杂是一种被需要的特性,这点和一般的集中式数据库系统不一样。第一点是为了提高局部的应用性而要在那些被需要的数据库节点复制数据。第二点是因为如果某个数据库节点出现系统错误,在修复好之前,可以通过操作其他的数据库节点里复制好的数据来让系统能够继续使用,提高系统的有效性。


4.数据库发展的里程碑事件

  • 早期数据管理(1950s-1960s):在计算机出现之初,数据主要以文件形式存储在磁带上。随着计算机的发展,人们开始意识到需要更有效的方法来管理数据。

  • 层次数据库系统(1960s):最早的数据库系统采用层次结构来组织数据,数据以树状结构存储,限制了数据的灵活性和查询能力。

  • 1962年,数据库(Database)一词早期广泛流行于美国加州的一些系统研发公司的技术备忘录中。

  • 1968年,伴随阿波罗登月计划,商业数据库的雏形诞生,出现IBM公司IMS(Information Management System)、Mainframe等数据库技术。

  • 1969年,美国国防部召开的数据系统语言会议(Conference on Data Systems Languages,CODASYL)发布了一份"DBTG(Database Task Group)报告",标志网状数据库系统进入标准化进程。

  • 关系数据库模型的提出(1970s):IBM公司研究员Edgar F. Codd于1970年提出了关系数据库模型的论文------"A Relational Model of Data for Large Shared Data Banks"(大型共享数据库的数据关系模型),奠定了关系模型的理论基础,他本人也被誉为"关系数据库之父",并于1981年获得"图灵奖"。这该模型是使用表格来组织数据,引入了关系代数和关系演算,成为现代数据库系统的基础。

  • 关系数据库商用化(1970s):IBM的System R和Ingres等系统率先将关系数据库理论应用于商业环境,开创了商用数据库系统的先河。

  • 1974年,IBM公司的校企联合计划中,与加州大学伯克利分校Ingres数据库研究项目携手创建了RDBMS(Relation DataBase Management System,关系数据库管理系统)System R原型。
  • Oracle数据库诞生(1979):Oracle Corporation成立,推出了Oracle数据库,成为商业数据库市场的领导者之一。1979年,因IBM公司战略调整其为当时主流的层次数据库,并剥离出处于萌芽状态的关系数据库;加州大学伯克利分校Ingres数据库研究项目联合Oracle公司的Larry Ellison创建了第一个商业关系数据库产品。

  • SQL(Structured Query Language)语言出现(1970s-1980s):SQL作为关系数据库的标准查询语言并逐渐发展,成为管理和操作关系数据库的重要工具。

  • ACID事务概念(1980s):在1980s,事务的概念被正式提出,ACID(原子性、一致性、隔离性、持久性)成为保证数据库事务完整性的重要准则。

  • OLTP和OLAP:1988年,IBM公司研究员率先提出数据仓库(Data Warehouse),主要用于复杂数据分析,并制定相关行业标准,将数据处理分为两大块业务:联机事务处理(On-Line Transaction Processing,OLTP)和联机分析处理(On-Line Analytical Processing,OLAP)。

  • 面向对象数据库发展(1980s-1990s):1986年,首款面向对象数据库GemStone/S出现。面向对象数据库系统是尝试将面向对象的思想应用于数据存储和管理。

  • MySQL诞生(1995):瑞典MySQL AB公司发布第一款开源关系数据库MySQL。MySQL作为一个轻量级的开源关系数据库管理系统,一经诞生,迅速成为流行的选择之一,适用于中小型应用。

  • 谷歌在线搜索引擎(1998):1998年,随着互联网的兴起,Lawrence Edward Page和Sergey Brin在斯坦福大学宿舍内共同开发了谷歌在线搜索引擎。

  • XML数据库(2000s):随着对半结构化数据的需求增加,XML数据库兴起,专门用于存储和查询XML格式的数据。2003年,MarkLogic公司发布第一款NoSQL(Not Only SQL,非关系型数据库)数据库解决方案,XML数据库。

  • NoSQL运动(2000s-2010s):NoSQL数据库提供了与传统关系数据库不同的数据模型,如键值存储、文档存储、列存储和图数据库。这个运动旨在应对大规模、分布式和半结构化数据的挑战。

  • 2007年,Neo4j公司推出第一款商用NoSQL图数据库。此后市场发展极为迅速,JanusGraph、Neptune、TigerGraph、ArangoDB、Ultipa Graph等图数据库厂商纷纷加入该赛道。目前,图数据库的发展处于一个百花齐放的阶段。

  • Big Data和分布式数据库(2010s):随着大数据的兴起,分布式数据库系统如Hadoop和Cassandra变得重要,可以处理海量数据和并行计算需求。2005年,受Google公司的Map/Reduce和Google File System(GFS)的启发,由Apache基金会所开发的分布式系统基础架构Hadoop发布。2009年,分布式文件存储的数据库MongoDB发布,为Web应用提供可扩展的高性能数据存储解决方案。2010年,HBase发行,采用列式存储而非行式,在Hadoop之上提供类似BigTable能力,支持非结构化数据存储。

  • 区块链数据库(2000s-2010s):区块链技术的兴起引发了分布式数据库的关注,它强调去中心化、不可篡改和安全性。

  • 2012年,有媒体将2012年称为"大数据元年","数据即资源"受到广泛认可。

  • 2014年,Michael Stonebraker因对现代数据库的概念和实践作出的根本性贡献获得2014年图灵奖。

  • GQL:继SQL后,第二个数据库查询语言标准------GQL(Graph Query Language)即将于今明年出台,这标志着GQL是成为自1983年以来唯一一个新面世的国际图数据库语言标准,这同时也是图数据库技术影响力和重要性的一个有力体现。


二、数据库的分类

关于数据库的分类其实可以从各个纬度来进行划分,但是我们最常使用的分类还是根据他们存取数据的特点来进行划分,主要分为关系型数据库和非关系型数据库

1.关系型数据库

​ 关系型数据库管理系统(Relational Database Management System:RDBMS)是指包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织的系统。

关系型数据库:如 MySQL、Oracle数据库、PostgreSQL、Access、 SQL Server、Sqllite、DB2、MariaDB、Percona Server、Google Fusion Tables、FileMaker、Sybase、dBASE、Clipper、FoxPro、foshub。

  • MySQL:开源,支持大容量数据,常用于Web应用

  • PostgreSQL:开源,支持特殊数据类型,如GIS、JSON等

  • SQL Server:Microsoft出品,Windows平台数据库

  • Oracle:付费的数据库,支持高并发和海量数据应用

  • DB2:IBM出品,高度可扩展和兼容的数据库


2.非关系型数据库(NoSQL)

NoSQL最常见的解释是"non-relational", "Not Only SQL"也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。

​ 非关系型数据库:如 MongoDB、Redis、Memcache、BigTable、Cassandra、CouchDB、Apache Cassandra、Dynamo、LevelDB。

SQL(StructuredQueryLanguage,结构化查询语言)是一种数据库查询语言和程序设计语言,主要用于管理数据库中的数据,如存取数据、查询数据、更新数据等。


3.关系型数据库与非关系型数据库的区别

简介 优点 缺点
关系型数据库 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。 1.易于维护:都是使用表结构,格式一致; 2.使用方便:SQL语言通用,可用于复杂查询; 3.复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 1.读写性能比较差,尤其是海量数据的高效率读写; 2.固定的表结构,灵活度稍欠; 3.高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库 非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等 1.格式灵活:存储数据的格式可以是key-value形式、文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。 2.速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘; 3.高扩展性; 4.成本低:nosql数据库部署简单,基本都是开源软件。 1.不提供sql支持,学习和使用成本较高; 2.无事务处理; 3.数据结构相对复杂,复杂查询方面稍欠。

3.1 存储方式

传统的关系型数据库采用表格的储存方式, 数据以行和列的方式进行存储,要读取和查询都十分方便。

而非关系型数据不适合这样的表格存储方式,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档。


3.2 存储结构

关系型数据库按照结构化的方法存储数据, 每个数据表都必须对各个字段定义好(也就是先定义好表的结构),再根据表的结构存入数据,这样做的好处就是由于数据的形式和内容在存入数据之前就已经定义好了,所以整个数据表的可靠性和稳定性都比较高,但带来的问题就是一旦存入数据后,如果需要修改数据表的结构就会十分困难。

而NoSQL数据库由于面对的是大量非结构化的数据的存储,它采用的是动态结构,对于数据类型和结构的改变非常的适应,可以根据数据存储的需要灵活的改变数据库的结构。


3.3 存储规范

关系型数据库为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然,当然这主要是一张数据表的情况。

如果是多张表情况就不一样了,由于数据涉及到多张数据表,数据表之间存在着复杂的关系,随着数据表数量的增加,数据管理会越来越复杂。而NoSQL数据库的数据存储方式是用平面数据集的方式集中存放,虽然会存在数据被重复存储,从而造成存储空间被浪费的问题(从当前的计算机硬件的发展来看,这样的存储空间浪费的问题微不足道),但是由于基本上单个数据库都是采用单独存放的形式,很少采用分割存放的方式,所以这样数据往往能存成一个整体,这对于数据的读写提供了极大的方便。


3.4 扩展方式

当前社会和科学飞速发展,要支持日益增长的数据库存储需求当然要求数据库有良好的扩展性能,并且要求数据库支持更多数据并发量,扩展方式是NoSQL数据库与关系型数据库差别最大的地方,由于关系型数据库将数据存储在数据表中,数据操作的瓶颈出现在多张数据表的操作中,而且数据表越多这个问题越严重,如果要缓解这个问题,只能提高处理能力,也就是选择速度更快性能更高的计算机,这样的方法虽然可以一定的拓展空间,但这样的拓展空间一定有非常有限的,也就是关系型数据库只具备纵向扩展能力。

而NoSQL数据库由于使用的是数据集的存储方式,它的存储方式一定是分布式的,它可以采用横向的方式来开展数据库,也就是可以添加更多数据库服务器到资源池,然后由这些增加的服务器来负担数据量增加的开销。


3.5 查询方式

关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询,SQL早已获得了各个数据库厂商的支持,成为数据库行业的标准,它能够支持数据库的CRUD(增加,查询,更新,删除)操作,具有非常强大的功能,SQL可以采用类似索引的方法来加快查询操作。

NoSQL数据库使用的是非结构化查询语言(UnQL),它以数据集(像文档)为单位来管理和操作数据,由于它没有一个统一的标准,所以每个数据库厂商提供产品标准是不一样的,NoSQL中的文档Id与关系型表中主键的概念类似,NoSQL数据库采用的数据访问模式相对SQL更简单而精确。


3.6 规范化

在数据库的设计开发过程中开发人员通常会面对同时需要对一个或者多个数据实体(包括数组、列表和嵌套数据)进行操作,这样在关系型数据库中,一个数据实体一般首先要分割成多个部分,然后再对分割的部分进行规范化,规范化以后再分别存入到多张关系型数据表中,这是一个复杂的过程。

好消息是随着软件技术的发展,相当多的软件开发平台都提供一些简单的解决方法,例如,可以利用ORM层(也就是对象关系映射)来将数据库中对象模型映射到基于SQL的关系型数据库中去以及进行不同类型系统的数据之间的转换。对于NoSQL数据库则没有这方面的问题,它不需要规范化数据,它通常是在一个单独的存储单元中存入一个复杂的数据实体。


3.7 事务性

关系型数据库强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。

并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务。而NoSQL数据库强调BASE原则(基本可用(Basically Available)、软状态(Soft-state)、最终一致性(Eventual Consistency)),它减少了对数据的强一致性支持,从而获得了基本一致性和柔性可靠性,并且利用以上的特性达到了高可靠性和高性能,最终达到了数据的最终一致性。NoSQL数据库虽然对于事务操作也可以使用,但由于它是一种基于节点的分布式数据库,对于事务的操作不能很好的支持,也很难满足其全部的需求,所以NoSQL数据库的性能和优点更多的体现在大数据的处理和数据库的扩展方面。


3.8 读写性能

关系型数据库十分强调数据的一致性,并为此降低读写性能付出了巨大的代价,虽然关系型数据库存储数据和处理数据的可靠性很不错,但一旦面对海量数据的处理的时候效率就会变得很差,特别是遇到高并发读写的时候性能就会下降的非常厉害。

而NoSQL数据库相对关系型数据库优势最大的恰恰是应对大数据方面,也就是对于大量的每天都产生非结构化的数据能够高性能的读写,这是因为NoSQL数据库是按key-value类型进行存储的,以数据集的方式存储的,因此无论是扩展还是读写都非常容易,并且NoSQL数据库不需要关系型数据库繁琐的解析,所以NoSQL数据库大数据管理、检索、读写、分析以及可视化方面具有关系型数据库不可比拟的优势。


3.9 授权方式

关系型数据库常见的有Oracle,SQLServer,DB2,Mysql,除了Mysql大多数的关系型数据库如果要使用都需要支付一笔价格高昂的费用,即使是免费的Mysql性能也受到了诸多的限制。

而对于NoSQL数据库,比较主流的有redis,HBase,MongoDb,memcache等产品,通常都采用开源的方式,不需要像关系型数据库那样,需要一笔高昂的花费。


三、数据库的作用

数据存储、管理和检索。数据库提供了一种方式来组织、存储和管理数据,使得用户可以方便地访问和处理数据。

1.数据共享

数据库允许所有有权限的用户同时存取和提取数据,从而提高了数据使用的效率和协作效率。

2.数据独立性

数据库支持应用程序和数据结构之间的独立性,确保数据逻辑和物理上的独立性,以满足不同的业务需求。

3.数据集中控制

数据库将数据集中存储在一个服务器中,通过统一的文件系统实现有组织的数据控制,便于管理和监控。

4.数据维护性

数据库支持分布式数据文件的统一存储,方便研发人员维护,并确保数据的安全性和一致性。

5.数据安全性

数据库通过配置管理员的权限来确保数据的安全性,防止数据被滥用或泄露。

6.数据一致性

数据库确保存储在其中的数据是一致的,即所有用户获取的数据都是相同的。

7.数据冗余减少

数据库通过数据共享减少了每个用户数据的重复性,避免了数据冗余。

8.数据恢复

数据库支持在系统出现问题(如宕机或硬件损坏)时,通过远程服务器上的数据库系统恢复数据,确保数据的完整性。

综上所述,数据库在现代社会中扮演着至关重要的角色,它不仅提高了数据管理的效率和安全性,而且支持了信息的共享和协作。


四、数据库的特点

数据库是"按照数据结构来组织、存储和管理数据的仓库"。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

从多种角度来看,数据库特点有以下几种:

1.数据共享性

数据库可以被多个用户共同访问和使用,实现数据的共享和协作。


2.数据独立性

数据库的数据与相关的程序是相互独立的,可以对数据进行独立的操作和修改,而不会影响到相关的程序。


3.数据的持久性

数据库中的数据可以长期保存,不会因为计算机断电或者程序关闭而丢失。


4.数据的安全性

数据库可以提供访问控制、权限管理等安全机制,保护数据的安全性和完整性。


5.数据的一致性

数据库中的数据应满足一致性约束,保证数据的正确性和完整性。


6.数据的可扩展性

数据库可以根据需要进行水平或垂直的扩展,以满足不断增长的数据需求。


7.数据的可恢复性

数据库可以提供备份和恢复机制,以防止数据丢失或损坏。


8.数据的高效性

数据库采用了各种优化技术,提高数据的存取效率和处理速度。


9.数据的易用性

数据库提供了用户友好的操作界面和查询语言,方便用户进行数据的管理和查询。


相关推荐
难以触及的高度1 分钟前
mysql中between and怎么用
数据库·mysql
Jacky(易小天)15 分钟前
MongoDB比较查询操作符中英对照表及实例详解
数据库·mongodb·typescript·比较操作符
Karoku0661 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
小技与小术2 小时前
数据库表设计范式
数据库·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Loganer2 小时前
MongoDB分片集群搭建
数据库·mongodb
LKID体2 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
刘大浪3 小时前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis
一只爱撸猫的程序猿3 小时前
简单实现一个系统升级过程中的数据平滑迁移的场景实例
数据库·spring boot·程序员