课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于大多数的后台开发程序员来说,数据库应用是我们必须掌握的编程开发技能之一,下面我们就一起来了解一下,数据库架构的常见组成部分都有哪些。
客户端管理器
客户端管理器是处理客户端通信的。客户端可以是一个(网站)服务器或者一个终用户或终应用。客户端管理器通过一系列知名的API(JDBC,ODBC,OLE-DB…)提供不同的方式来访问数据库。
客户端管理器也提供专有的数据库访问API。
当你连接到数据库时:
管理器先检查你的验证信息(用户名和密码),然后检查你是否有访问数据库的授权。这些权限由DBA分配。
然后,管理器检查是否有空闲进程(或线程)来处理你对查询。
管理器还会检查数据库是否负载很重。
管理器可能会等待一会儿来获取需要的资源。如果等待时间达到超时时间,它会关闭连接并给出一个可读的错误信息。
然后管理器会把你的查询送给查询管理器来处理。
因为查询处理进程不是『不全则无』的,一旦它从查询管理器得到数据,它会把部分结果保存到一个缓冲区并且开始给你发送。
如果遇到问题,管理器关闭连接,向你发送可读的解释信息,然后释放资源。
查询管理器
这部分是数据库的威力所在,在这部分里,一个写得糟糕的查询可以转换成一个快速执行的代码,代码执行的结果被送到客户端管理器。这个多步骤操作过程如下:
查询先被解析并判断是否合法
然后被重写,去除了无用的操作并且加入预优化部分
接着被优化以便提升性能,并被转换为可执行代码和数据访问计划。
然后计划被编译
后,被执行
这里我不会过多探讨后两步,因为它们不太重要。
查询解析器
每一条SQL语句都要送到解析器来检查语法,如果你的查询有错,解析器将拒绝该查询。比如,如果你写成”SLECT…”而不是“SELECT…”,那就没有下文了。
但这还不算完,解析器还会检查关键字是否使用正确的顺序,比如WHERE写在SELECT之前会被拒绝。
然后,解析器要分析查询中的表和字段,使用数据库元数据来检查:
表是否存在
表的字段是否存在
对某类型字段的运算是否可能(比如,你不能将整数和字符串进行比较,你不能对一个整数使用substring()函数)
接着,解析器检查在查询中你是否有权限来读取(或写入)表。再强调一次:这些权限由DBA分配。
在解析过程中,SQL查询被转换为内部表示(通常是一个树)。
如果一切正常,内部表示被送到查询重写器。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!