数据库

定义:

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

数据库介绍:

 

计算机工作原理:硬盘 → 内存 → cpu
内存:快,但是断电消失信息。平时run code中的变量。
硬盘:慢,断点后数据不消失。长久存储数据。
持久化:让数据持久存储的过程,俗称存到硬盘、存到数据库。

 

数据库管理系统:

      数据库管理系统是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。

      数据库管理系统是数据库系统的核心组成部分,主要完成对数据库的操纵与管理功能,实现数据库对象的创建、数据库存储数据的查询、添加、修改与删除操作和数据库的用户管理、权限管理等。

 

     防护手段主要有:

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

类型:

    关系数据库:关系型数据库,存储的格式可以直观地反映实体间的关系。

 

1. sqlite。轻量级数据库,纯文本,不需安装,几万行数据量一下速度不慢。场景,手机应用。
2. microsoft office access。微软office套件中的轻量级数据库,定位高不成低不就,不太流行。
3. mysql。几乎最流行的数据库。开源免费,15年左右随php捆绑包流行。现在被oracle公司收购。
4. oracle。java语言,oracle。商用。2000年后就稳居国内大型公司市场。稳定、强大、授权费贵。盗版多。
5. db2。IBM公司出品,重型数据库。场景,银行业。
6. postgresql。大象数据库,诞生于一所大学的开源项目。竞争对手mysql。号称技术最牛的数据库。相同服务器资源下,性能明显超过mysql。一些开源web项目也推荐这个数据库。国外开始流行,国内几乎无人用。

 

        虽然关系型数据库有很多,但是大多数都遵循SQL(结构化查询语言,Structured Query Language)标准。 常见的操作有查询,新增,更新,删除,求和,排序等。
查询语句:SELECT param FROM table WHERE condition 该语句可以理解为从 table 中查询出满足 condition 条件的字段 param。 [2] 
新增语句:INSERT INTO table (param1,param2,param3) VALUES (value1,value2,value3) 该语句可以理解为向table中的param1,param2,param3字段中分别插入value1,value2,value3。 [2] 
更新语句:UPDATE table SET param=new_value WHERE condition 该语句可以理解为将满足condition条件的字段param更新为 new_value 值。 [2] 
删除语句:DELETE FROM table WHERE condition 该语句可以理解为将满足condition条件的数据全部删除。 [2] 
去重查询:SELECT DISTINCT param FROM table WHERE condition 该语句可以理解为从表table中查询出满足条件condition的字段param,但是param中重复的值只能出现一次。 [2] 
排序查询:SELECT param FROM table WHERE condition ORDER BY param1该语句可以理解为从表table 中查询出满足condition条件的param,并且要按照param1升序的顺序进行排序。
优点:分表维护逻辑清晰,强事务确保结构一致。
缺点:数据存储硬盘上,多张表外键关联,导致查询性能有上限。
       非关系型数据库(NoSQL)
NoSQL数据库适合追求速度和可扩展性、业务多变的应用场景。
目前NoSQL数据库仍然没有一个统一的标准,它现在有四种大的分类:
(1)键值对存储(key-value):代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。 [3] 
(2)列存储:代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。 [3] 
(3)文档数据库存储:代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。 [3] 
(4)图形数据库存储:代表软件InfoGrid,它的优点可以方便的利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。
优点:有一类把查询频繁的表,例如用户表,缓存到内存中(固态硬盘500MB/s,内存400MB/s),查询效率提高;往往存储键值对对象结构,跟编程语言的对象结构一样,不用转换,易于理解
缺点:内存贵;数据一致性不高。
NoSQL与关系型数据库的区别:
     存储方式:
                 统的关系型数据库采用表格的储存方式, 数据以行和列的方式进行存储,要读取和查询都十分方便
                 非关系型数据不适合这样的表格存储方式,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图             结构或者文档。
       存储结构:      
              关系型数据库按照结构化的方法存储数据,好处是由于数据的形式和内容在存入数据之前就已经定义好了,              所以数据表的可靠性和稳定性都比较高,问题是一旦存入数据后,如果修改数据会很困难。
                    NoSQL数据库由于面对的是大量非结构化数据的存储,采用动态结构,对于数据类型和改变非常的适应,              可以根据数据存储需要灵活的改变数据库的结构。
        存储规范:
                      关系型数据库为避免重复、规范化数据以及充分利用好存储空间,把数据按最小关系表的形式进行存储,数据管理                  变的很清晰,一目了然。数据表之间存在着复杂的关系,随着数据表的增加,数据管理会越来越复杂。
                      NoSQL数据库的数据存储方式是用平面数据集的方式集中存放,虽然会存在数据被重复存储,从而造成存储空间被                 浪费的问题。但是由于基本上单个数据库都是采用单独存放的形式,很少采用分割存放的方式,所以这样数据往往能存                 成一个整体,这对于数据的读写提供了极大的方便。
        扩展方式:
                      关系数据库只具有纵向扩展能力。
                      NoSQL数据库由于使用的是数据集的存储方式,它的存储方式一定是分布式的,它可以采用横向的方式来开展数据                 库,也就是可以添加更多数据库服务器到资源池,然后由这些增加的服务器来负担数据量增加的开销。
        查询方式:
                     关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询,SQL早已获得了各个数据库厂商的支持,成为                  数据库行业的标准,它能够支持数据库的CRUD(增加,查询,更新,删除)操作,具有非常强大的功能,SQL可以采                  用类似索引的方法来加快查询操作。
                     NoSQL数据库使用的是非结构化查询语言(UnQL),它以数据集(像文档)为单位来管理和操作数据,由于它没                   有一个统一的标准,所以每个数据库厂商提供产品标准是不一样的,NoSQL中的文档Id与关系型表中主键的概念类似,                 NoSQL数据库采用的数据访问模式相对SQL更简单而精确。
 
分布是数据库:
          关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询,SQL早已获得了各个数据库厂商的支持,成为数据库行业的标准,它能够支持数据库的CRUD(增加,查询,更新,删除)操作,具有非常强大的功能,SQL可以采用类似索引的方法来加快查询操作。NoSQL数据库使用的是非结构化查询语言(UnQL),它以数据集(像文档)为单位来管理和操作数据,由于它没有一个统一的标准,所以每个数据库厂商提供产品标准是不一样的,NoSQL中的文档Id与关系型表中主键的概念类似,NoSQL数据库采用的数据访问模式相对SQL更简单而精确。
         数据独立性概念在分布式数据库管理系统中同样是十分重要的一环,但是不仅如此,分布式数据管理系统还增加了一个叫分布式透明性的新概念。这个新概念的作用是让数据进行转移时使程序正确性不受影响,就像数据并没有在编写程序时被分布一样。
           在分布式数据库里,数据冗杂是一种被需要的特性,这点和一般的集中式数据库系统不一样。第一点是为了提高局部的应用性而要在那些被需要的数据库节点复制数据。第二点是因为如果某个数据库节点出现系统错误,在修复好之前,可以通过操作其他的数据库节点里复制好的数据来让系统能够继续使用,提高系统的有效性。

 

 
posted @ 2019-10-29 22:15  天宇游  阅读(152)  评论(0编辑  收藏  举报