日期:2014-05-16  浏览次数:20690 次

请问关于数据库的使用思路的问题,谢谢!
我初涉数据库的知识,问的问题可能比较低级,请各位高手多多帮助,十分感谢!
我们单位局域网中使用的BS系统访问数据库应该是以下流程吧:
      客户端——>业务服务器——>数据库服务器——>业务服务器——>客户端
我的问题是:
1.在这个流程中,数据库的并发是指:业务服务器——>数据库服务器这个过程中的线程数吗?
2.可否有这种访问数据的流程?
        客户端——>数据库服务器——>客户端
3.如果以上流程可行,那么它和BS的区别是什么?为什么大家都不这么用呢?
4.如果以上流程可行,那么数据库服务器可以允许多少客户端直接访问数据库呢?数据库标称的”并发“数是否就是允许同时访问数据库的所有客户端的最大数量呢?

十分感谢!
------解决方案--------------------
并发不仅仅指数据库层,前端程序比如你说的业务层也需要支持多并发。
2.可否有这种访问数据的流程?
        客户端——>数据库服务器——>客户端
这一步,缺少了两个特性,1:安全性,直接访问数据库容易带来不安全的因素。2:扩展性,如果压力上升,3层架构可以通过加中间层的配置来分摊前端业务压力。

另外bs结构有一个好处,你只需要在业务服务器上打补丁、升级程序,前端用户就可以享受新功能,但是CS架构要本地程序也更行,比较典型的CS就是QQ,你的客户端可能经常需要更新
------解决方案--------------------
1.在这个流程中,数据库的并发是指:业务服务器——>数据库服务器这个过程中的线程数吗?
并发有2层意思,一个是值客户端到业务服务器的并发,一个是业务服务器到数据库服务器的并发。

2.可否有这种访问数据的流程?
        客户端——>数据库服务器——>客户端


3.如果以上流程可行,那么它和BS的区别是什么?为什么大家都不这么用呢?
比较完善的cs系统是比教复杂的,应该也是3层或者是多层架构的,以前自己做毕业设计的时候,做的就是cs架构,就2层,1层就是客户端,一层就是数据库,客户端直接链接到数据库。

而bs架构,一般是浏览器,连接到应用服务器,然后应用服务器连接到数据库,是3层的架构,相对而言,应用服务器能够分担一部分压力,而且也可以缓存一部分数据,很多数据,可以不直接从数据库取出,而是直接在应用服务器的内存中缓存,以减小对数据库的压力。

而完善的cs架构也是非常复杂的,比如我们用的QQ,那就是一个cs架构,qq客户端登录到腾讯公司的服务器,服务器上肯定有一个qq服务器端,在内存中缓存了大量的qq用户的信息,当你登录qq时,由于在内存中没有你的信息,所以需要访问数据库,把发送的用户名和密码,和数据库中的比对,是否正确,如果正确,那么就登录成功。

这些会设计到网络协议,应该是一个难点,所以一般的公司也就用bs结构,只有少数有技术实力的公司,才能开发大型的cs架构的程序,比如银行、邮局,像邮局,客户端可能有几十万个,还有其他的物流系统,都需要访问数据库。

4.如果以上流程可行,那么数据库服务器可以允许多少客户端直接访问数据库呢?数据库标称的”并发“数是否就是允许同时访问数据库的所有客户端的最大数量呢?

这个一般是没有限制,只是和你的硬件的能力有关系,还有就你设计的程序,如果设计合理,普通的机器,可能一秒也能处理几百个事务,但就算是好的机器,如果设计不合理,1秒处理100个事务,也可能会挂掉。
------解决方案--------------------
客户端——>业务服务器——>数据库服务器——>业务服务器——>客户端

这个有点不够贴切,改成

客户端 <——> 业务服务器 <——> 数据库服务器

比较好。BS和CS的区别在于客户端是网页浏览器还是订制软件,业务服务器是接收HTTP信息还是接受专用数据包。两者优劣不多讨论(BS参考google,CS参考QQ)。
----------------------------------------------------------------------------------------------------------------------------------------------------------
数据库的并发,指的是同一个业务在短时间内大量触发,可以理解成一个网站发起的投票,同时可能有几千人在点击投票,这些人的动作都要记录下来。这时你画的那两条线都会有大负载,至于谁先挂掉就看设计者的水平和服务器的性能了。

----------------------------------------------------------------------------------------------------------------------------------------------------------
客户端——>数据库服务器——>客户端

这种结构适合单机软件,比如EXCEL。。。。你可以把EXCEL文件想象成数据库,把OFFICE里的EXCEL.exe想象成客户端。
数据库出来的东西不能直接应用的,肯定要经过处理才能用,而事务量一大的话这个处理的过程肯定需要一个服务器去完成,省不了。
其实你可以把数据库理解成一个仓库,业务服务器理解成售货员,客户端理解成买卖东西的人,如果大家跳过售货员直接去拿东西确实会少一个环节,但人一多就肯定乱了,由售货员来进行交易和存取货的操作能至少能保证业务能正常进行下去。
------解决方案--------------------
引用:
Quote: 引用:

并发不仅仅指数据库层,前端程序比如你说的业务层也需要支持多并发。
2.可否有这种访问数据的流程?
        客户端——>数据库服务器——>客户端
这一步,缺少了两个特性,1:安全性,直接访问数据库容易带来不安全的因素。2:扩展性,如果压力上升,3层架构可以通过加中间层的配置来分摊前端业务压力。

另外bs结构有一个好处,你只需要在业务服务器上打补丁、升级程序,前端用户就可以享受新功能,但是CS架构要本地程序也更行,比较典型的CS就是QQ,你的客户端可能经常需要更新


非常感谢,请问
1.能具体说一下,CS架构会有哪些不安全因素吗?
2.CS架构的”压力上升“,是指什么情况下?如何引起的?会产生什么后果?

谢谢!!


c/s其实分 直连数据库的c/s,和 多层的c/s
前者非常不方便,只适合局域网,或者搭建vpn的广域网,因为需要数据库直接向客户端开放
后者灵活性大很多,互联网、局域网用户都可以直接连到中间层来访问数据库,安全性也好很多
还可以在中间层增加连接池,把实际的数据库并发量大大降低,提高响应速度