正是数据库管理的需要催生了数据库管理系统DBMS,而关系型数据库管理系统为RDBMS
常见的数据模型有三种: – 层次模型 – 网状模型 – 关系模型
在DBMS出现之前,人们用文件来管理数据,但存在很多缺陷: 1. 数据冗余和不一致性。数据冗余表示在每个shell脚本中基本上都是/bin/bash,但很多用户使用的都是bash,那么这个可能出现多次,冗余量很大;不一致性,比如有一个数据在多个文件中都被使用,那么修改的时候,需要把每个文件都手动修改。 2. 数据访问困难。如果数据库有上千万行数据,那么我们使用时,需要把这上千万行数据全部载入内存中,再使用,对硬件的要求会很高而且载入时间很长,但其实我们需要比较的也只是那一行数据而已。 3. 数据孤立。由于数据保存在不同的文件里面,所以这些文件之间的格式可能各不相同,所以后续开发一个软件来管理的话非常困难,因为它们不满足某一个规范,使得数据之间是相互孤立的。 4. 完整性问题。例如两个转账的用户之间数额的总和应该是一样的,但如果在转账的过程中出现了问题,那么文件就无法解决,除非应用程序设计上解决,但应用程序本身并无法理解数据之间的逻辑问题。 5. 原子性问题。类似于完整性问题,数据必须从一个稳定的状态转换为另外一个稳定的状态。 6. 并发访问异常问题。按道理来讲,如果一个用户访问数据库文件的前十行,另一个用户访问最后十行,本身他们俩并不会冲突,但如果某个用户需要修改的话,另外一个用户并不能访问。因为为了保证文件的完整性,我们会加锁的,但文件级别的锁安全性太高,并不适合这种访问。 7. 安全性问题。部分访问授权很难实现,很难使某一个用户只能看到其中指定的某些字段。
因为这些问题,所以出现了关系数据库 1. 关系数据库想要解决数据冗余问题,它将每一个关系都看成了一个表,每一列都看成是一个属性,每一行看成是他的一个元组(也就是数据)如果有许多相同值的话,它将具有相同字段的值独立出来,把一张表拆分成两张表,降低所谓的冗余度,这种关系也叫做E-R关系模型(实体关系模型)
2.关系:关系代数,支持代数运算,比如两个集合的交集、并集等。
SQL:Structure Query Language(关系结构化语言)
数据存储和查询的执行过程: 1. 查询管理器接收用户查询,并理解。使用DML和DDL解释器 2. 将DML和DDL解释器的结果给查询执行引擎 3. 查询执行引擎的结果给存储管理器 4. 存储管理器将操作写入磁盘中
mysql是单进程多线程的 mysql不允许一个进程为两个用户同时提供服务,比如一个用户请求访问某一个表,而第二个用户同时访问同样的数据,这两个请求不能使用同一个进程得到服务,原因是因该考虑是否两个用户对这个数据是否都有访问权限,如果其中一个没有,那么数据的安全性不能得到保障.
但因为数据库的请求很多时候需要的数据量是很大的,比如现在有十个用户同时对某个数据库访问,第一个用户需要载入256M的数据,第二个用户需要1G的数据等等.所以数据库通常是一个系统最慢的节点所在,应该尽量避免数据库的交互.那么应该怎么提高数据库的交互速度?
关系运算主要为了实现mysql语句的执行
SQL语言的组成部分:DDL、DML、完整性定义语言(DDL的一部分功能)、视图定义、事务控制、嵌入式SQL和动态SQL、授权
使用程序设计语言如何与RDBMS交互 – 嵌入式SQL:与动态SQL类似,但是其语言必须在程序编译时完全确定下来,并由预处理器进行处理 – 动态SQL:程序设计语言使用函数(mysql_connect())或者方法与RDBMS服务器建立连接,并进行交互,通过建立连接向SQL服务器发送查询语句,并将结果保存至变量中而后进行处理。
mysql不同的存储引擎可以实现不同的功能 – 5.5.8之前,默认引擎为MyISAM – 5.5.8之后,默认引擎为InnoDB 简单来讲,MyISAM不支持事务,而InnoDB支持事务。所以InnoDB更适合在线事务处理系统
数据库逻辑请求过程
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181203.html原文链接:https://javaforall.cn