Python mysql-数据库基础知识
2017-09-05 19:10:55
一、数据库定义
从本质上讲,数据库就是信息的集合,它可以存在很长时间,往往是很多年。一般来讲,"数据库"这个词指的是有数据库管理系统管理的数据的集合。数据库管理系统DBMS将满足:
- 允许用户使用专门的数据定义语言来创建新的数据库并指定其模式(数据的逻辑结构)。
- 给予用户使用适当的语言来查询数据和修改数据的能力,这种语言通常被称为查询语言(query language)。
- 支持对非常大量的数据进行长期的存储,允许搞笑的存取数据已进行查询和数据修改。
- 是数据具有持久性,即能够从故障,多种类型的错误或者故意滥用中进行恢复。
- 控制多个用户同时对数据进行访问,不允许用户间有不恰当的相互影响(称为孤立性),并且不会发生在数据上进行了部分的而不是完整的数据操作的情况(称为原子性)。
二、DBMS种类
DBMS主要通过数据保存的格式来进行分类,现阶段主要有以下5种:
- 层次型数据库(Hierarchical Database,HDB)
最古老的数据库之一,它把数据通过层次结构的方式表现出来。层次型数据库曾经是数据库的主流,但随着关系型数据库的普及,现在已经很少使用了。
- 关系型数据库(Relational Database,RDB)
是现在应用最广泛的数据库。关系型数据库1969年诞生,可谓历史悠久,和excel工作表一样,它也采用行列二维表结构来管理数据,所以简单易懂。同时,它还专门使用sql语言进行数据的操作。这种类型的dbms称为关系数据库管理系统(RDBMS)。比较具有代表性的RDBMS有如下几种
Oracle DB : 甲骨文公司的RDBMS
SQL Server : 微软的RDBMS
Mysql : 开源的RDBMS
PostgreSQL : 开源的RDBMS,学术性更重一点
- 面向对象数据库(Object Oriented Database,OODB)
编程语言中有一种被称为面向对象的语言。该类数据库把数据以及对数据的操作集合起来以对象为单位进行管理,因此得名。面向对象数据库就是用来保这些对象的数据库。
- XML数据库(XML Database,XMLDB)
最近几年,XML作为在网络上进行数据交互传输的形式逐渐普及起来。XML数据库可以对XML形式的大量数据进行高速的处理。
- 键值存储系统(Key-Value Store,KVS)
这是一种单纯用来保存查询所使用的主键和值的组合的数据库。具有编程语言经验的读者可以把它想象成关联数组或者是散列表。近年来,随着键值存储系统的管饭应用,这种存储系统主键为人们所关注。
三、事务机制
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
- 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
- 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
- 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。