当前位置:C++技术网 > 精选软件 > 数据库编程疑惑全面解答:8 本地数据库和远程数据库的区别对比分析图解

数据库编程疑惑全面解答:8 本地数据库和远程数据库的区别对比分析图解

更新时间:2016-07-11 21:02:51浏览次数:1+次

    数据库在软件开发中太常用了。不管是小软件还是大软件,网站还是分布式系统,数据库无处不在。然而对于新手甚至编程经验不够的人来说,也只是停留在数据库语句和数据库管理配置方面。在开发上也是简单的增删改查,而没有往更高的层次提升。有时候,你理解一些概念,本身似乎能够明白,实则却依然模棱两可,一个原因是没有真正看透,或许是站的不够高,始终都是盲人摸象,只看得到局部。所以,理解总是有所偏差。
    我们这里讲述本地数据库和远程数据库的区别。之前的理解,就和上述所说的一样,非常局限。然后现在在工作中慢慢积累了一些经验,对于数据库在开发中的结构也就理解的稍微深入了一些,在此分享一番,希望能够给读者的你一个启发和全面的认识。
    我们在学习和使用数据库的时候,本机会装一个数据库,还会装一个数据库管理工具。然后在程序开发好后,数据库是运行在服务器上的。有的服务器上的数据库我们可以通过电脑的数据库管理工具登录连接数据库,然后操作数据库。有的服务器上的数据库我们是无法通过数据库管理工具连接的。前者就是远程数据库,或者叫做在线数据库,后者就是本地数据库。
    如果我们使用的是MSSQL数据库,也就是微软的数据库,在安装VS的时候,会自动安装一个精简版的开发版数据库。而在服务器上运行的一般都是完整版的数据库。而MSSQL数据库是商业版的数据库,是要收费的。所以,在Mysql数据库免费开源之后,国内公司大多用mysql做开发了。
    作为程序员的我们,我们会想,开发版的数据库和服务上运行的数据库有什么区别呢?为什么很多人说开发中做好了数据库的开发,到时候直接将程序连接到服务器上的数据库就可以了。然而,很多人都没有真正跨越这一步,不是真的理解本地的或者开发版的数据库和服务器上的数据库有什么差别。
    服务器是什么?服务器是一个24小时运行的,有固定的IP的计算机。所以,服务器和我们自己用的电脑是差不多的。我们自己的电脑也是可以做成服务器的,只要你能保证24小时开机,而且有固定的IP,就可以了。你可以在拉宽带的时候,跟服务商买一个固定外网IP的套餐,也就是,不管是在国内还是国外,通过这个IP就可以找到你自己的电脑。这样,你的电脑就可以是服务器了。所以,服务器并不是什么神秘的电脑。
    先把服务器这个神秘的东西说白了,我们再顺着思路往后分析。既然你的电脑就是服务器了,那么你电脑上运行的软件也就都是运行在服务器上的了。如果你在你的电脑上安装一个网站环境,配置一下,别人就可以通过你这个固定的IP访问你电脑的网站了。你的电脑就是web服务器了。Windows的高级版本都带有IIS,这是Windows系统上的web服务器环境。如果你想搭建php网站,你可以安装Apache服务器环境。也就是一些软件而已,环境搭建很简单。
    而数据库呢?前面说了服务器的概念,还说了常见的网站服务器,作为服务器的特征也就是具备固定的IP,让其他电脑可以直接访问。那么数据库如何应用这个特征呢?数据库服务器是什么样的呢?同网站服务器一样,别人可以通过他们的电脑的数据库管理工具或者命令等连接你的电脑即服务器的数据库,那么你的电脑就是数据库服务器了。如果你在你电脑设置了不能通过网络连接数据库,也就是你让你的数据库只能在本机使用,这就是本地数据库了。
    在线的数据库通过IP连接,本地数据库则无法通过IP连接,因为本地数据库根本就不对外,属于内部使用。而不管本地数据库还是远程数据库,都可以供网站或者软件使用,只是连接方式不一样而已。我们平时说的买数据库,也就是买的人家的数据库服务器中的一个数据库。数据库服务器中可以创建很多的数据库,一个数据库对应一个或者一套数据库支持文件。为什么我们要买一个数据库?因为数据库服务器可以24小时长期运行,而且提供一个固定的IP给我们连接。我们自己去配置一个数据库服务器,要占用一台电脑,而且要支付固定IP的钱,24小时开机,电费网费和电脑硬件,再加上维护等各种因素,让我们个人去配置一个服务器不现实,也很不划算。而购买一个数据库,可以免去各种问题。只要按时续费,这个数据库可以一直用下去。
    以上是我之前的一些认识,是远远不够的。在编程上,几乎都是一些常识性的,对于编程的理解和应用,帮助不够多。以至于对于商业上数据库的使用模式,不清楚,甚至不理解。为了在更深的层次或者更全面的理解,我画一个简单的示意图,帮助理解和描述。示意图如下所示:

数据库编程疑惑全面解答8:本地数据库和远程数据库的区别对比分析图解

    实际上本地数据库和远程数据库的区别也就是连接方式的区别。一个是可以通过IP访问,一旦可以通过IP访问,那么全世界各地都可以访问。这也就是在线数据库,也叫作网络数据库,或者远程数据库。另一个是自己电脑使用的。本地数据库只给本机的软件等提供数据库支持,本机数据库的数据,无法直接提供给其他计算机访问。那么你会问,局域网访问的算是本地数据库吗?不是的。本地指的是你这个电脑,只要超过了这个电脑就是远程数据库了。远程数据库多了一个数据库的端口,支持TCP连接,mssql默认为1433,你需要启动tcp连接支持。所以,你安装在电脑上的数据库,决定是本地数据库还是远程数据库,不在于安装的文件,而是在于配置的访问的形式。如果一个数据库安装好后,你关闭了远程访问的TCP方式,这样外部就无法连接到你电脑的数据库,所以此时的数据库就是本地数据库了。
    我们知道了,远程数据库可以通过IP直接连接,那么也就是说,我们在写软件的时候,可以直接通过IP连接到远程数据库,来实现软件的数据存储和操作。这也是我之前一惯的做法。所以我一直都买着数据库。而且,我此前一直不知道本地数据库如何支持远程访问。
    而当我接触服务器越来越多的时候,既然我都可以有服务器了,我还需要远程数据库吗?如果不要远程数据库,别人又怎么远程和数据库交互呢?毕竟长期购买数据库还是要一些资金的。通过不断的摸索和思考,接触的越来越多的时候,发现了更多有意思的东西。而且以前不懂的很多技术,也开始明晰了。现在也越来越明白很多服务器的架构了。
    我们自己拥有服务器,可以安装数据库,然后本机数据库给本机的网站使用,或者给本机的软件使用。我们的目的在于提供网站或者软件支持的功能,而不是提供数据库本身的数据存储服务。我们面向的是用户,所以,数据库是后台的,无需对外。那么我们自己服务器安装的数据库,只要在本机让网站可以使用就可以了。这样一来,我们就不需要再购买远程数据库了。
    如果我们是要给软件提供数据库支持,而服务器本机安装数据库因为不对外,如何让我们个人电脑的软件能够操作数据库呢?在网站应用本地数据库的时候,操作数据库的是网站程序,我们用户使用网站的功能,是在间接操作数据库。那么如果我在我电脑想操作服务器的数据库如何实现呢?谁作为中间人呢?
    有一个名词叫做中间件。在模式上和这个类似。在我们电脑和服务器上的数据库之间,安插一个中间人,即所谓的中间件。我们所有的数据库操作都是向中间件发送请求,然后中间件去操作数据库。这样,我们也就实现了间接的数据库操作。我们需要提供的就是,在服务器运行一个程序,能够接受我们电脑发送过去的命令,然后解释命令,然后执行命令,也就是操作数据库,甚至是操作文件,甚至修改服务器的配置等等,也就是远程控制模式了。那么服务器端的程序就是服务端,我们电脑运行的程序就是客户端了。我们电脑使用的QQ就是客户端,腾讯服务器上运行的是QQ服务端,服务端接受到各种消息后,入库。
    在软件开发时,一般是通过sokcet方式来接入服务端,而Web开发则是通过http协议来实现,SVN、FTP等都是通过对应的协议,在服务器端有一个程序来代理操作。如果有数据库操作,就代理操作数据库,有文件操作就代理操作文件。
    这样的场景,我们可以看到,本地数据库实现了远程的支持,而且是现在各种大型软件系统的基本模型。从本地数据库的使用,衍生出了一种架构模型,而不只是开发时使用一下开发版数据库来完成数据库开发。

    对于数据库使用来讲,本地数据库和远程数据库只是两种访问方式。而要实现本地数据库支持远程操作,出现了中间件技术,也就是代理操作技术,出现了服务端代理操作和客户端请求操作的模式。特别是分布式架构,更是一层一层的请求代理,而不是直接操作。本地数据库的远程操作带给了我们学习现代分布式软件开发的启发。而此前我总是不理解中间件技术,也不理解分布式到底如何实现,更不知道缓存服务器如何做,更不懂CDN是怎么回事。有了本地数据库的远程使用的启发,这一切都如出一辙。