数据库基础概念
一、数据库简介(了解)
1.1、数据库的发展史(了解)
数据库发展可以分为三个阶段
1.1.1、人工管理阶段
数据库的历史可以追溯到六十年前,那时的数据管理非常简单。通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。而数据管理就是对所有这些穿孔卡片进行物理的储存和处理
1951 年雷明顿兰德公司(Remington Rand Inc.)的一种叫做Univac I 的计算机推出了一种一秒钟可以输入数百条记录的磁带驱动器
注意:穿孔卡和磁带只能顺序存取数据
1.1.2、文件系统阶段
1956年IBM生产出第一个磁盘驱动器—— the Model 305 RAMAC。此驱动器有50 个盘片,每个盘片直径是2 英尺,可以储存5MB的数据。使用磁盘最大的好处是可以随机地存取数据
1.1.3、数据库管理阶段
后来60年代的时候,随着计算机广泛的应用,对数据管理和共享要求越来越高,传统的文件系统已经无法满足我们的需求了,这个时候能够统一的管理和共享数据的数据库管理系统应用而生(DataBase Managerment System)那数据库系统的核心和基础什么呢?也就是我们如何设计这个数据库系统--数据模型
1.1.3.1、数据模型
什么是数据模型?
1、数据是描述事物的一个符号, 2、模型就是现实世界的一个抽象数据模型 又由三部分组成
1.数据结构:主要是描述数据的类型,内容,以及他们数据之间的联系 2.数据操作:主要是对数据结构进行操作(类型的操作,内容的操作) 3.数据约束:主要是对数据结构间的数据的语法,内容以及依存关系的约束.以及数据动态变化的规则,以保证数据的正确性,有效性
1.1.3.2 发展历程(层次模型数据库--》网状模型数据库--》关系型数据库)
1961年通用电气开发成功了第一个网型数据结构DBMS系统 IDS,并且得到了广泛的应用 但缺点只能在GE的主机上运行,而且数据库的所有表必须手工编码来生成,虽然网状数据模型对层级和非层级能模拟,但是对一些复杂的层级结构的描述不是很清晰,这个时候基于层级结构的数据库模型的数据库就出现了,
1968年,美国IBM公司推出层次模型的IMS(Information Management System)系统,硬盘使用系统。这也是IBM推出的一个重量级的产品,与网状数据模型的数据库同时存在,但网状数据模型的数据库系统占主流
1969年,美国CODASYL(Conference On Data System Language)组织发布了DBTG(Data Base Task Group)报告,总结了当时各式各样的数据库,提出网状模型。
1970年,美国IBM公司的Edgar F.Codd博士连续发表论文,提出关系模型,奠定了关系型数据库的理论基础。Codd也获得了声望很高的ACM图灵奖。
1990年以后,数据库进入了高级应用阶段。面向对象的数据库技术、开放数据库互联技术、数据仓库(大数据)和数据挖掘技术的应用日益广泛
1.2、什么DB和DBMS(了解)
1.2.1、DB数据库
1.2.1.1、定义
全称Data Base,是长期存储在计算机内,有组织的,统一管理的相关数据的集合
1.2.1.2、数据库的常用应用场景
销售:用于存储客户、产品和购买信息等
会计:用于存储付款、收据、账户余额、资产和其他会计信息
人力资源:用于存储雇员、工资、所得税和津贴的信息,以及产生工资单等
银行业:用于存储客户信息、账户、贷款以及银行的交易记录
信用卡交易:用于记录信用卡消费的情况和产生每月清单
1.2.2、DBMS(数据库管理系统)
1.2.2.1、定义
全称DataBase Management System数据库管理系统,是指数据库系统中对数据进行管理的软件系统,它是数据库系统的核心组成部分。可以通过DBMS对DB进行定义、查询、更新及各种控制数据库管理系统(DBMS)是与用户,其他应用程序和数据库本身来捕获和分析数据进行交互的计算机软件应用程序
1.3、主流数据库分类(掌握)
1.3.1、关系型
1.3.1.1、定义
关系型数据库以行和列的形式存储数据,行和列组成二维表,表与表之间的数据记录有关系,很多二维表又组成一个数据库,
1.3.1.2、关系模型
关系
可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名元组
可以理解为二维表中的一行,在数据库中经常被称为记录属性
可以理解为二维表中的一列,在数据库中经常被称为字段域
属性的取值范围,也就是数据库中某一列的取值限制关键字
一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成 例如关系模式
指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库中成为表结构关系模型
一对一 多对一 ,多对多
1.3.1.3、分类
大型数据库:IBM DB2、Oracle、Sybase
中型数据库:SQL Server、MySQL、Informix、PostgreSQL
小型数据库:Access、Visual FoxPro、SQLite
1.3.2、非关系型(NOSQL)
1.3.2.1、概要
随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一词最早于1998年被用于一个轻量级的关系数据库的名字)NoSQL被我们用得最多的当数key-value存储,当然还有其他的文档型的、列存储、图型数据库、xml数据库等。在NoSQL概念提出之前,这些数据库就被用于各种系统当中,但是却很少用于web互联网应用。
1.3.2.2、分类
| 分类 | Examples举例 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
|---|---|---|---|---|---|
| 键值(key-value) | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用hash table来实现 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
| 列存储数据库 | Cassandra, HBase, Riak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
| 文档型数据库 | CouchDB, MongoDb | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法。 |
| 图形(Graph)数据库 | Neo4J, InfoGrid, Infinite Graph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。 |
1.3.2.3、应用场景
对数据库高并发读写的需求
对海量数据的高效率存储和访问的需求
对数据库的高可扩展性和高可用性的需求
1.3.2、对比
1.3.2.1、优点:
成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
1.3.2.2、缺点:
维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。
不提供关系型数据库对事物的处理。