01 数据库基础知识

数据库(Database):

 

1.数据库:

(1)概述:

  • 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

  • 每个数据库都有一个或多个不同的API(应用程序接口)用于创建,访问,管理,搜索和复制所保存的数据。

  • 我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。

  • 关系型数据库是一种建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

(2)分类和特点:

  • 关系型数据库:由多张能互相连接的表组成的数据库。常见的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access和MySQL等。

    • 优点:

      1. 都是使用表结构,格式一致,易于维护。

      2. 许多的行和列组成一张表单,若干的表单组成database。

      3. 每行为各种记录名称,每列为记录名称所对应的数据域。

      4. 使用通用的SQL语言操作,使用方便,可用于复杂查询。

      5. 数据存储在磁盘中,安全。

    • 缺点:

      1. 读写性能比较差,不能满足海量数据的高效率读写。

      2. 不节省空间。因为建立在关系模型上,就要遵循某些规则,比如数据中某字段值即使为空仍要分配空间。

      3. 固定的表结构,灵活度较低。

  • 非关系型数据库:指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。常见的非关系型数据库有Redis、Neo4j、MongoDB、Memcached、MemcacheDB和HBase等。

    • 优点:

      1. 非关系型数据库存储数据的格式可以是key-value形式、文档形式、图片形式等。使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。

      2. 速度快,效率高。NoSQL可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。

      3. 海量数据的维护和处理非常轻松。

      4. 非关系型数据库具有扩展简单、高并发、高稳定性、成本低廉的优势。

      5. 可以实现数据的分布式处理。

    • 缺点:

      1. 非关系型数据库暂时不提供SQL支持,学习和使用成本较高。

      2. 非关系数据库没有事务处理,没有保证数据的完整性和安全性。适合处理海量数据,但是不一定安全。

      3. 功能没有关系型数据库完善。

(3)数据库访问接口:

不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行SQL语句,进行数据库管理。主要的数据库访问接口主要有ODBC、JDBC、ADO.NET和PDO。

  • ODBC:

ODBC(Open Database Connectivity,开放数据库互连)为访问不同的SQL数据库提供了一个共同的接口。ODBC使用SQL作为访问数据的标准。这一接口提供了最大限度的互操作性。一个应用程序可以通过共同的一组代码访问不同的SQL数据库管理系统。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS(数据库管理系统),不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是MySQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

  • JDBC:

Java Data Base(JDBC,Java数据库连接)用于Java应用程序连接数据库的标准方法,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

  • ADO.NET:

ADO.NET是微软在.NET框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET提供了对关系数据、XML和应用程序的访问,允许和不同类型的数据源以及数据库进行交互。

  • PDO:

PDO(PHP Data Object)为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO是PHP 5新加入的一个重大功能。

(4)相关术语:

  • 数据库:数据库是一些关联表的集合

  • 数据表:表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格

  • 列:一列(数据元素)包含了相同类型的数据,例如邮政编码的数据

  • 行:一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据

  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性

  • 主键:主键是唯一的,一个数据表中只能包含一个主键。可以使用主键来查询数据

  • 外键:外键用于关联两个表

  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引

  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录

  • 参照完整性:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性

(5)数据表组成:

  • 表头(header):每一列的名称

  • 列(column):具有相同数据类型的数据的集合

  • 行(row)):每一行用来描述某条记录的具体信息,也称为数据库记录

  • 值(value):每一行的具体信息,每个值必须与该列的数据类型相同

  • 键(key):键的值在当前列中具有唯一性

 

2.常用数据库汇总:

现在已经存在了很多优秀的商业数据库,如甲骨文(Oracle)公司的Oracle数据库、IBM公司的DB2数据库、微软公司的SQL Server数据库和Access数据库。同时,还有很多优秀的开源数据库,如MySQL数据库,PostgreSQL数据库等。

(1)Oracle:Oracle是甲骨文公司的一款关系型数据库管理系统,在数据库领域一直处于领先地位的产品,是目前世界上流行的关系型数据库之一,是一种高效率、可靠性好、适应高吞吐量的数据库方案。

  • 优点:

  1. Oracle可移植性好,能在所有主流平台上运行(包括Windows),完全支持所有工业标准。采用完全开放策略,使客户可以选择最适合解决方案。以及对开发商的全力支持。

  2. 获得最高认证级别的ISO标准认证,安全性高。

  3. 与其它数据库相比,Oracle性能最高。保持着开放平台下TPC-D和TPC-C世界记录。

  4. 多层次网络计算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接 。

  5. 完全向下兼容,因此被广泛应用,且风险低 。向下兼容指的是高版本支持低版本的或者说后期开发的版本支持和兼容早期开发的版本。

  • 缺点:

  1. 对硬件的要求高

  2. 价格比较昂贵

  3. 管理维护麻烦

  4. 操作比较复杂

(2)SQL Server:SQL Server是Microsoft公司推出的关系型数据库管理系统,主要应用于大型的管理系统中。

  • 优点:

  1. 与微软的Windows系列操作系统的兼容性很好。

  2. 高性能设计,可充分利用WindowsNT的优势。

  3. 系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。

  4. 强壮的事务处理功能,采用各种方法保证数据的完整性。

  5. 支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。

  • 缺点:

  1. SQL Server只能在Windows系统上运行,没有丝毫开放性。

  2. 没有获得任何安全证书。

  3. 多用户时性能不佳 。

  4. 只支持C/S模式,SQL Server C/S结构只支持Windows客户用ADO、DAO、OLEDB、ODBC连接。

(3)MySQL:MySQL是一种开放源代码的关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品。因为其速度、可靠性和适应性而备受关注。MySQL是流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的应用软件之一。

  • 优点:

  1. 性能卓越服务稳定,很少出现异常宕机

  2. 开放源代码且无版权制约,自主性强、使用成本低。

  3. 历史悠久、社区及用户非常活跃,遇到问题,可以很快获取到帮助。

  4. 软件体积小,安装使用简单,并且易于维护,安装及维护成本低。

  5. 支持多种操作系统,提供多种API接口,支持多种开发语言。

  • 缺点:

  1. MySQL最大的缺点是其安全系统,主要是复杂而非标准,只有调用mysqladmin来重读用户权限才会发生改变。

  2. MySQL不允许调试存储过程,开发和维护存储过程很难。

  3. MySQL不支持热备份。

  4. MySQL的价格随平台和安装方式变化。

(4)Access:Access是由Microsoft发布的小型关系数据库管理系统,是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。

  • 优点:

  1. 存储方式简单,易于维护管理。Access的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb或 .accdb)的数据库文件中,便于用户的操作和管理。

  2. Access是一个面向对象的开发工具,这种基于面向对象的开发方式,使得开发应用程序更为简便。

  3. 界面友好、易操作。Access是一个可视化工具,风格与Windows完全一样,用户想要生成对象应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。

  4. 集成环境,可以处理多种数据信息。Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。

  5. 支持广泛,易于扩展,弹性大。Access是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发。即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。

  • 缺点:

  1. 不支持并发处理。

  2. 数据库存储量小安全性不够高。

  3. Access是小型数据库,当数据量过大时,一般百M以上(纯数据,不包括窗体、报表等客户端对象)性能会变差。

  4. 虽然理论上支持255个并发用户,但实际上根本支持不了那么多,如果以只读方式访问大概在100个用户左右,而如果是并发编辑,则大概在10-20个用户。

  5. 单表记录数过百万时,性能就会变得较差,如果加上设计不良,这个限度还要降低。

  6. 不能编译成可执行文件(.exe),必须要安装Access运行环境才能使用。

(5)DB2:DB2是美国IBM公司开发的一款支持多媒体、Web的关系型数据库管理系统。主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境。

  • 优点:

  1. 相比较MySQL和Oracle两种数据库来说,DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模地应用程序执行能力,具有与平台无关的基本功能和SQL命令。

  2. DB2采用了数据分级技术,能够使大型数据很方便的下载到数据库服务器,使数据库本地化和远程连接透明化。

  3. 拥有非常完备的查询优化器,改善了查询性能,并支持多任务并行查询。

  4. 具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统更加使用。

  5. DB2可跨平台使用。

  • 缺点:

  1. 配置文件和参数多,且命名不规范。

  2. 一些 DB2产品开发不方便。

  3. 和Oracle相比,命令多,且没Oracle统一规范的好。

  4. 由于其设计框架的问题,如果用户对数据库的本身优化和应用程序优化做的不足,那么DB2容易出现锁等待现象。

 

(6)PostgreSQL:PostgreSQL是一款富有特色的自由数据库管理系统,甚至可以说是最强大的自由软件数据库管理系统。该数据库管理系统支持了目前世界上最丰富的数据类型。是自由软件数据库管理系统中唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的自由软件。

  • 优点:

  1. PostgreSQL遵循的是BSD协议,是一个完全开源、免费、同时非常强大的关系型数据库。

  2. 与PostgreSQL配合的有很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这些MySQL则比较难实现。

  3. PostgreSQL源代码写的很清晰,易读性比MySQL强,所以很多公司基本都是以PostgreSQL做二次开发的。

  4. PostgreSQL是多进程的,而MySQL是多线程的。并发不高时,MySQL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL的总体处理性能不如 PostgreSQL,原因是MySQL的线程无法充分利用CPU的能力。

  5. PostgreSQL有很强大的查询优化器,支持很复杂的查询处理。

  6. BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

  • 缺点:

  1. 对于简单而繁重的读取操作,相比较其它数据库来说,PostgreSQL性能较低。

  2. PostgreSQL数据库扩容花费时间很长。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值