数据库在软件架构的定位(软件分层)

比较流行的一种软件架构的分类是“双层”、“三层”、“多层”架构。客户端直接和数据库服务器通信,比如通过ODBC、JDBC连接数据库,一般称为“双层架构”或“client-server”架构。若客户端和数据库之间有一个中间服务器(如Web服务器,中间件),则由中间服务器负责转发请求给数据库服务器,这种模式称为“三层架构”。在很多较大规模的Web应用中,在Web服务器和数据库服务器之间还可能存在一个应用服务器,这种结构称为“四层架构”。

本文探讨的MySQL是基于目前互联网最常见的架构,如,网站应用、移动互联网应用。它们一般是三层架构:

        1)用户接口层,即各种终端,比如运行在最终用户计算机上的浏览器。

        2)业务逻辑和数据处理层,即应用程序服务器,比如PHP、Java EE、ASP.NET、Ruby on Rails等应用服务。网站处理网络访问请求的过程可能是这样的:由Nginx接受用户请求,处理静态页面,并且将动态请求转发给后端的PHP服务,PHP服务处理完动态请求后,将结果返还给Nginx,Nginx再返还给用户。有时也称该层为中间件(middle ware)。

        3)DBMS后端数据存储,如MySQL、PostgreSQL、Redis、Memcached等产品。

相应地,在软件系统架构设计中也存在一种分层设计的方法学。我们熟知的三层架构(3-tier application)是一种应用广泛的分层设计,它把应用分解为表现层、业务逻辑层、数据访问层3个层次。三层(多层)架构主要的好处是提供了一个灵活的、可重用的模型,开发者可以通过简单地修改某一层的功能或增加某一层的功能来实现某种需求,而不需要修改整个应用程序。

表现层(UI),即直接和用户交互的界面。

业务逻辑层(BLL),即对业务逻辑进行处理,处理用户的请求,它将许多最终用户的业务逻辑集中到了应用服务器上。

数据访问层(DAL)直接操作数据库,即针对数据的增加、删除、修改、查找等操作。

传统行业的商业数据库往往还承载了许多业务逻辑的功能,这其中就会经常用到存储过程、触发器。互联网世界的开源数据库虽然也有存储过程、触发器之类的特性,但绝大部分场合下并不会用到这些非核心的基本特性,开发者把数据库更多地看作一个存储数据的容器,并已将核心业务逻辑从数据库功能中分离了出来


读书笔记来自陈晓勇的《MySQl DBA修炼之道》1.1章节,如有侵权,请通知删除。

推荐阅读更多精彩内容