数据库的发展:
萌芽期:文件系统 用磁盘文件来存储数据
初期: 第一代数据库 网状、层次模型的数据库
中期:第二代数据库 关系型数据库(横行纵列表)和结构化查询语言(sql)
高期:新一代数据库 “关系-对象”数据库
DBMS:数据库管理系统软件 DBA:数据库管理、维护、设计(数据库管理员)
数据库管理系统的基本功能
数据定义 数据处理 数据安全 数据备份
数据库的架构
单机架构(access)
大型主机/终端架构(multics)
主从式架构(c/s)(mysql,sqlsever,oracle)
非关系型数据库 (nosql)
Memcache(是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。工作流程:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。)
Redis (是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。)
MongoDB(是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。)
关系型数据库
行(row)、记录
列(column)、属性、字段
主键(primary key)
域(domain):属性的取值范围
事务(transaction):多个操作被当作一个整体对待
遵循ACID: 原子性 一致性 隔离性 持久性
数据三要素:
数据结构 数据操作 数据的约束条件:实体(行)完整性(唯一键)、域(列)完整性、参考完整性(外键)
数据库的正规化分析
范式:设计关系型数据库时,遵循不同的范式要求,设计出合理的关系型数据库,这些不同的规范要求称为范式,层次越高的范式,数据库的冗余越小。
第一范式:无重复的列(实体中某个属性不能有多个值或者不能有重复的属性) ,即强调列的原子性
第二范式:属性完全依赖主键
第三范式:属性不依赖于其他非主属性
关系选择:选择(挑选出符合条件的行),投影(挑选出需要的字段),连接(表间字段的关联)
半结构化的关系模型:xml数据
例如:centos6中的 vim /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
/disable_user_list
修改value=”true“,再次开机时需要输入用户账号