Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117716
  • 博文数量: 42
  • 博客积分: 932
  • 博客等级: 准尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-18 22:33
文章分类
文章存档

2011年(42)

分类: LINUX

2011-09-12 13:44:01

 现在热门的信息管理系统的核心就是数据库,数据库是什么呢?从组成部分简单的说是有数据管理软件和数据本身两者结合起来就是数据库!数据又是什么呢?简单理解就是能以记录存储下来的信息。数据库产生于距今五十年前,对这方面有接触过的都知道数据库经历了以下几个阶段:
人工管理阶段-->文件系统阶段-->数据库系统阶段-->未来发展趋势
  各个阶段的发展或者特点就不详细解释了,毕竟不是专业学些这方面的只是为将来有志于做管理DBA的同学们做下知识储备简单的了解下!如果有兴趣的可以参考下其他的资料!从中我们也可以了解一些业界的奇闻轶事!其实IBM成就了许多人和企业,不过这都扯远了。还是看我们的数据库,从数据的组织和存储的方式上的不同数据库的发展经历了一下几个阶段或者说是模型:层次模型,这种模型有点儿类似于我们的LINUX的目录结构是倒置的树状模型,一个子节点只能对应一个父节点,因此数据间的关联十分薄弱,而在此的基础上诞生了另外一种模型-->网状模型,这种模型数据间的关联还是比较好的,但是跟管理软件的耦合度十分的高,也就是说我么如果想要改变数据的结构或者数据本身,我们就要改变管理软件本身,这是异常困难的,这就造成了后来关系模型的蓬勃发展!我们接下来要学习的MySQL也是一个小型关系型数据库管理系统。所以我们要对此简单的了解下!
1970年,IBM公司的研究员Codd发表了一篇论文,关系模型开始走进人们的视野,详细的发展还是请参考其他的资料!下面简单介绍下与数据库和关系模型相关的一些概念(还是那句话这些概念来自于老师的口述和自己的理解多数是为了方便自己的理解可能并非准确和精确):
数据是数据库中存储的基本对象,是描述事物的符号记录。
数据库 DataBase 是长期存储在计算机内、有组织的、可共享的大量数据的集合。
数据库的三个基本特点:永久存储、有组织和可共享。
数据库管理系统是位于用户与操作系统之间的一层数据管理软件,主要完成科学的组织和存储数据,高效地获取和维护数据的任务。
现代多数数据库管理系统(DBMS)要提供的基本功能:
Managing storage     存储管理
Maintaining security 安全管理即提供数据的授权访问机制
Maintaining metadata 管理源数据() 
Managing transactions 事物管理
Supporting connectivity 支持连接性
Optimizing performance 性能优化 重要指标之一
Providing back-up and recovery mechanisms 备份和恢复 核心要件
Processing requests for data retrieval and modification 数据的获取和修改

数据库系统 DataBaes System,DBS
一般有数据库,数据库管理系统(机器开发工具)、应用系统、数据库管理员构成。
两类数据模型:
概念模型:也称信息模型,按用户的观点来对数据和信息建模,主要用于数据库设计。
逻辑模型主要包括:层次模型、网状模型、关系模型、面向对象模型、对象关系模型。按计算机系统的观点对数据建模,主要用于DBMS的实现。
关系型模型:RDBMS
关系:可以简单的理解为一张满足某些约束条件的二维表
元组:关系中的一行称为一个元组,存放的是客观实例
属性:关系中的一列称为属性,一个属性必须有唯一的属性名
域:关系中一个属性的取值范围
RDBMS的对象

视图,view 存储下来的select语句 实际上是一个虚表 底层的表称为基表
索引,index 加速查询的数据结构 要用到存储空间 描述数据特征的数据结构 mysql常用的索引类型:
触发器,trigger,用户对表中的数据修改时,数据库自身同时进行的额外的动作 是SQL语句的编程结构 ;通常是代码段,属于SQL编程范畴。
存储过程,storage procedure
存储函数,storage function
两者都是代码段:select 调用的一般都是存储函数
  call 用于定义存储过程
这是为了实现代码重用的,还可以增强数据库的安全性,通常放在服务器端,增强数据处理的能力
事件调度器,event sheduler 定期执行任务计划
严重依赖于RDBMS自身的编程接口
用户,权限的集合
物理文件

从物理角度看:RDBMS的重要作用之一实现逻辑关系与物理关系的映射,通过一个子模块来——存储引擎来实现
无聊但是必须要了解的部分概念基本上介绍完了,说点儿与我们将来就业有相关的东西!DBA Database Administrator 数据库管理员,实际意义上DBA有两种一种是开发DBA,工作包括实现数据库结构设计,以及在应用层次上的开发如:存储过程,存储函数,触发器(SQL提供的)等等,另外一种是管理DBA,工作包括以下几个方面:
数据库软件的安装,卸载,升级
 数据的备份,恢复,导入,导出
  用户管理权限管理
 安全管理
 架构设计,实施
监控和优联系数据库系统的生产厂商,跟踪技术信息等等
 
一个公司,不管它是自己开发应用软件,还是购买第三方的应用软件,只要涉及到数据库(有多少不涉及数据库的应用软件呢?数据库是商业的灵魂和大脑啊),就需要确定是否雇佣一个或几个DBA。知道DBA这个职位有哪些要求,对于企业内部这个职位的定义或者对于那些未来的DBA将是至关重要的。所以说多了解下是没错的!终于要进入正题了,呵呵!MySQL现在可以说是全球最流行的关系型数据库,简单的了解下MySQL的发展历程吧!

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。对于Mysql的前途,没有任何人抱乐观的态度。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。对于为什么叫MySQL!据老师说是来源于开发者一个女儿的名字。

常见的数据库:

IBM DB2,Oracle,Informix,Sybase,微软的 SQL Server,MySQL,postgreSQL-->EnterpriseDB(除了崩溃后恢复不如mysql,其他的性能是相当优越的)等等

与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。

  

LAMP

目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP/Perl/Python),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统

所以说我们接下来对数据库这方面就是对MySQL的学习,虽然前景不容乐观,但是由于Oracle的承诺,和Orcale的实力来说,应该会有还不错的发展,至于以后的使用费用上可能会十分的不乐观!在了解了MySQL的过去和现在以及未知的将来后,我们还是来学习下MySQL的使用吧!不过在此之前我们还要先了解MySQL的基本架构和特点以及特性也就是说这一篇将是纯理论的部分,在下一篇会对SQL语句和MySQL相关的管理和使用的命令做详细的介绍!开发部分自然不会涉及!

MySQL 是开源的关系型数据库,遵循GUN规范,这也是MySQL流行的主要原因之一。

特点:多线程,多任务,插件式的存储引擎(最特别的地方之一)。

版本MySQL version
GA 生产环境中使用的版本 使用MySQL 官方提供的rpm包
RC 候选版
beta 公测
alpha 内测

特点:速度快,稳定可靠性好,可扩展性,易用,可移植性和兼容性,支持多用户,国际化,支持广泛的应用程序,开源。

相关的组件:

MySQL Server 核心组件,提供MySQL服务

MySQL Cluster MySQL的集群服务组件

MySQL Administrator MySQLd的图形化管理工具

MySQL Query Browser 查询浏览器

MySQL Migration Toolkit 实现数据迁移功能的工具,可以将其他数据库中的数据迁移到MySQL中

MySQL Embedded Server 嵌入式MySQL Server

MySQL Dirvers and Connectors 驱动和各种语言的连接器(即各种接口)

mysql图形化工具:
SQLyog
MySQLFront
phpMyAdmin
MySQL Query Browser
MySQL Administrator
MySQL Workbench

相关软件包:MySQL RPM Packages
MySQL-client *
MySQL-debuginfo 调试信息
MySQL-devel  *
MySQL-embedded 嵌入式MySQL引擎
MySQL-ndb-management 集群
MySQL-server 服务器端 *
MySQL-shared *
MySQL-shared-compat 向前兼容的包
MySQL-test 测试组件

带*号的是我们在学习和实验过程中能用到的!

安装方式:

rpm包安装(redhat系统自带的,mysql官方提供的)

binaryformat 二进制包绿色安装

sourcecode 源码编译安装

初始化配置:
/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf
/path/to/file when defaults-extra-file=/path/to/file is specified
~/.my.cnf
每次启动的时候都按这种次序寻找,若多个配置文件中配置有冲突以最后找到的配置为准。

$MYSQL_HOME 定义MySQL 工作目录若未设置则默认为 basedir 数据目录
windows下的查找次序:
%WINDIR%\my.ini,%WINDIR%?\my.cnf

安装完成以后mysql会自动生成5个帐号,而且密码为空
3个管理员帐号:root@localhost、root@127.0.0.1、root@hostname
2个匿名帐号:''@localhhost、''@hostname

如上图所示即为整个MySQL的应用架构!MySQL最大的特点之一就是插件式的存储引擎,从上图中可以看出MySQL支持的存储引擎有哪些,在后续的博文中会有进一步的介绍,这里不再赘述,关于MySQL的安装及配置前面的文章中也有介绍,在此处也不在详解,关于MySQL的源码安装等有时间了再弄吧,对于LINUX的学习已经接近尾声了,其实最近感觉课程很快,有点儿吃不消,很多东西都没来得及总结,打算等结束后再花点儿时间对学过的东西进行巩固和总结!有关MySQL理论部分的暂时介绍到这里,接下来的博文里会对MySQL的管理命令,SQL语句的使用,以及MySQL的备份和恢复,用户权限的分配和管理等会有较详细的介绍!不过由于各种原因吧!可能会迟几天!敬请期待!

 

 

阅读(2368) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~