第0章——初识数据库

初识数据库

一、数据库的基本概念

1.1 什么是数据库

数据库Database,简称DB)是用来组织存储管理数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。

​ 当今世界是一个充满着数据的互联网世界,充斥着大量的数据。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

​ 为了方便管理互联网世界中的数据,就有了数据库管理系统的概念(简称:数据库)。用户可以对数据库中的数据进行新增、查询、更新、删除等操作。

数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:

  1. 数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“”两个概念结合成为数据库。
  2. 数据库是数据管理的新方法和技术,它能更合适的组织数据更方便的维护数据更严密的控制数据更有效的利用数据

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

1.2 数据库管理系统

(1)什么是数据库管理系统

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

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

  1. 使用正版数据库管理系统并及时安装相关补丁。
  2. 做好用户账户管理,禁用默认超级管理员账户或者为超级管理员账户设置复杂密码;为应用程序分别分配专用账户进行访问;设置用户登录时间及登录失败次数限制, 防止暴力破解用户密码。
  3. 分配用户访问权限时,坚持最小权限分配原则,并限制用户只能访问特定数据库,不能同时访问其他数据库。
  4. 修改数据库默认访问端口,使用防火墙屏蔽掉对 外开放的其他端口,禁止一切外部的端口探测行为。
  5. 对数据库内存储的重要数据、敏感数据进行加密存储,防止数据库备份或数据文件被盗而造成数据泄露。
  6. 设置好数据库的备份策略,保证数据库被破坏后能迅速恢复。
  7. 对数据库内的系统存储过程进行合理管理,禁用掉不必要的存储过程,防止利用存储过程进行数据库探测与攻击。
  8. 启用数据库审核功能,对数据库进行全面的事件跟踪和日志记录。
(2)数据库的分类
1. 关系型数据库

​ **关系型数据库(Structured Query Language,简称SQL),存储的格式可以直观地反映实体间的关系。**关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。

关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。

  • **常见的关系型数据库:**MySQL、Oracle、SQL Server、DB2、SQLLITE

  • 通过表和表之间,行和列之间的关系进行数据的存储

  • 通过外键关联来建立表与表之间的关系

  • 优点:

    1. **易于维护:**都是使用表结构,格式一致
    2. 使用方便:SQL语言通用,可用于复杂查询;
    3. 复杂操作:支持SQL,可用于一个表以及多个表之间非常复制的查询。
  • 缺点:

    1. 读写性能比较差,尤其是海量数据的高效率读写;
    2. 固定的表结构,灵活度稍欠
    3. 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

2. 非关系型数据库

非关系型数据库(Not Only SQL,简称NoSQL)严格上不是一加粗样式种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

  • Redis、MongoDB

  • 指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

  • 优点:

    1. 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型
    2. 速度快:NoSQL可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
    3. 高扩展性;
    4. 成本低:NoSQL数据库部署简单基本都是开源软件
  • 缺点:

    1. 不提供SQL支持,学习和使用成本较高
    2. 无事务处理
    3. 数据结构相对复杂,复杂查询方面稍欠。

目前NoSQL数据库仍然没有一个统一的标准,它现在有四种大的分类:

(1)键值对存储(key-value):代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。

(2)列存储:代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。

(3)文档数据库存储:代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。

(4)图形数据库存储:代表软件InfoGrid,它的优点可以方便的利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。


3. 关系型数据库与NoSQL的区别
  • 存储方式:
    • 关系型数据库采用表格的存储方式,这就需要数据以行和列的方式进行存储,要读取和查询都十分方便。
    • 而NoSQL数据库却不适用这种表格存储方式,通常以数据集的方式来将大量的数据集中存储在一起,类似于键值对等。
  • 存储结构:
    • 关系型数据库按照**结构化(也就是先定义好表的结构)**的方法存储数据,好处就是由于数据的形式和内容在存入数据之前就已经定义好了,所以整个数据表的可靠性和稳定性都比较高;但问题在于:一旦存入数据后,如果需要修改数据表的结构就会十分困难
    • 而NoSQL数据库由于面对的是大量非结构化的数据的存储,它采用的是动态结构,对于数据类型和结构的改变非常的适应,可以根据数据存储的需要灵活的改变数据库的结构。
    • 也就是说,关系型数据库使用的是一个已经规定好存放什么的“盒子”;而NoSQL数据库使用的是一个可以随意改变的“盒子”。
  • 存储规范:
    • 关系型数据库为了避免重复、规范化数据以及充分利用好存储空间,会把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然(当然,这是基于一张表的情况)。如果是多张表情况就不一样了,由于数据涉及到多张表,数据表之间存在着复杂的关系,随着数据表数量的增加数据管理也会越来越复杂
    • 而NoSQL数据库的数据存储方式是用平面数据集的方式集中存放,虽然会存在数据被重复存储,从而造成存储空间被浪费的问题(从当前的计算机硬件的发展来看,这样的存储空间浪费的问题微不足道),但是由于基本上单个数据库都是采用单独存放的形式,很少采用分割存放的方式,所以这样数据往往能存成一个整体,这对于数据的读写提供了极大的方便。
  • 扩展方式:
    • 控制方式是NoSQL数据库与关系型数据库差别最大的地方。
    • 由于关系型数据库将数据存储在数据表中,数据操作的瓶颈出现在多张数据表的操作中,而且数据表越多这个问题越严重,如果要缓解这个问题,只能提高处理能力,也就是选择速度更快性能更高的计算机,这样的方法虽然可以一定的拓展空间,但这样的拓展空间一定有非常有限的,也就是SQL只具备纵向扩展能力。
    • 而NoSQL数据库由于使用的是数据集的存储方式,它的存储方式一定是分布式的,它可以采用横向的方式来开展数据库,也就是可以添加更多数据库服务器到资源池,然后由这些增加的服务器来负担数据量增加的开销。
  • 查询方式:
    • 关系型数据库采用**结构化查询语言(即SQL)**来对数据库进行查询,SQL早已获得了各个数据库厂商的支持,成为数据库行业的标准,它能够支持数据库的CRUD(增加,查询,更新,删除)操作,具有非常强大的功能,SQL可以采用类似索引的方法来加快查询操作。
    • NoSQL数据库使用的是非结构化查询语言(UnQL),它以数据集(像文档)为单位来管理操作数据,由于它没有一个统一的标准,所以每个数据库厂商提供产品标准是不一样的,NoSQL中的文档Id与关系型表中主键的概念类似,NoSQL数据库采用的数据访问模式相对SQL更简单而精确。
  • 规范化:
    • 在数据库的设计开发过程中开发人员通常会面对同时需要对一个或者多个数据实体(包括数组、列表和嵌套数据)进行操作,这样在关系型数据库中,一个数据实体一般首先要分割成多个部分,然后再对分割的部分进行规范化,规范化以后再分别存入到多张关系型数据表中,这是一个复杂的过程。好消息是随着软件技术的发展,相当多的软件开发平台都提供一些简单的解决方法,例如,可以利用ORM层(也就是对象关系映射)来将数据库中对象模型映射到基于SQL的关系型数据库中去以及进行不同类型系统的数据之间的转换。
    • 对于NoSQL数据库则没有这方面的问题,它不需要规范化数据,它通常是在一个单独的存储单元中存入一个复杂的数据实体。
  • 事务性:
    • 关系型数据库强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能操作稳定性的要求。并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务
    • 而NoSQL数据库强调BASE原则(基本可用(Basically Available)、软状态(Soft-state)、最终一致性(Eventual Consistency)),它减少了对数据的强一致性支持,从而获得了基本一致性柔性可靠性,并且利用以上的特性达到了高可靠性高性能,最终达到了数据的最终一致性。NoSQL数据库虽然对于事务操作也可以使用,但由于它是一种基于节点的分布式数据库,对于事务的操作不能很好的支持,也很难满足其全部的需求,所以NoSQL数据库的性能和优点更多的体现在大数据的处理数据库的扩展方面
  • 读写性能:
    • 关系型数据库十分强调数据的一致性,并为此降低读写性能付出了巨大的代价,虽然关系型数据库存储数据处理数据的可靠性很不错,但一旦面对海量数据的处理的时候效率就会变得很差,特别是遇到高并发读写的时候性能就会下降的非常厉害。
    • 而NoSQL数据库相对关系型数据库优势最大的恰恰是应对大数据方面,也就是对于大量的每天都产生非结构化的数据能够高性能的读写,这是因为NoSQL数据库是按key-value类型进行存储的,以数据集的方式存储的,因此无论是扩展还是读写都非常容易,并且NoSQL数据库不需要关系型数据库繁琐的解析,所以NoSQL数据库大数据管理、检索、读写、分析以及可视化方面具有关系型数据库不可比拟的优势。
  • 授权方式:
    • 关系型数据库常见的有:Oracle、SQLServer、DB2、MySQL等。其中除了MySQL外,大多数的关系型数据库如果要使用都需要支付一笔价格高昂的费用,即使是免费的MySQL,其性能也受到了诸多的限制。
    • 而对于NoSQL数据库,比较主流的redis、Hbase,MongoDB、memcache等产品,通常都采用开源的方式,不需要像SQL那样,需要money。
4. 分布式数据库

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

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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值