日期:2014-05-18  浏览次数:20695 次

熟悉系统架构的朋友帮我参考一下
我现在开发的一个系统中要用到四个数据库
这么多的数据库在管理上是一个难题
比如数据库名,连接字符串,用户,密码,CMD对象,打开关闭等等
在我写Provider类的时候感觉有点乱,有时候还老是弄错

数据库   中所有的查询、更新、插入操作全部用存储过程来实现
(四个数据库在同一个服务器中)
现在我就想问大家一个问题
我能不能把所有的存储过程都建在一个数据库中,其他的数据库操作都通过跨数据库操作,这样对数据库的管理就方便了
这样做现实吗?在性能方面有影响吗?安全吗?
请大家给一些参考…………

------解决方案--------------------
引用對象時寫完整的對象名就可以了
------解决方案--------------------
樓主,支持你,從方便性角度出發,我相樓主行的想法是對的,但是我不建議樓主行這麼去做,我也曾經做過一個案子跨了四個數據庫,我當時也有這個想法。所幸我後來還是沒有這麼做,相信建立四個數據庫,是因為他們彼此獨立而又有關連,對於數據庫的跨數據庫的操作,對於安全性和性能方面都有影響:
安全性:
因為SQL Server的驗證機制是:先進行身份認證,後進行權限驗證,如果通過跨數據庫的調用,那麼這樣對於帳號的管控就會一個帳號涉及到四個數據庫的不同權限的限制了,而這樣從數據庫管理的角度來說安全性是有隱患的。而且對於管理員來說增加了管理的開銷,
性能方面:
要知道跨數據庫的操作,它的性能肯定是會受到一定的影響的。而且還有一個不好的一點,如果以後隨系統的成長,數據庫的規模越來越大,數據量成長道一定階段的時候,你會發現服務器的負載非常重,而SQL Server 不管是2000還是2005都還沒有支持真正的負載均衡技術,那個時候如果你的服務器負載過重,你只有兩個方法:
第一:直接升級服務器的硬件,不夠就一定往上加,如果是服務器本身限制,那只能換更高檔的服務器硬件了,
第二:把不同的應用分配到不同的服務器,由多台服務器來一起承擔業務處理

顯然,第一種方法的成本最高,因為你的數據庫可能需要全部做一個移轉,而且還可能有第二次移轉。而第二種方法,確比較好,只是把某一部門應用給其它服務區承擔,這樣你的系統會更靈活,更有效,

而如果樓主行采用所有跨數據庫調用,那麼以後就只能選擇第一種做法了。那樣成本樓主行可以考慮一下。
------解决方案--------------------
建議:
四個不同的數據庫,設置四個不同的帳號進行安全管控,在程序開發時,可以設置四個不同的連接池,針對每個數據庫都編寫相應的調用接口,四個系統業務邏輯之間的關系以及調用在程序中來實現,而數據庫是彼此獨立的。這樣系統的擴展性和松散耦合性更好,
比如:以後如果有新業務模塊的增加,我可以建立第五個數據庫,而且如果負擔很重的話五個數據庫可以分擔到不同的服務器,
------解决方案--------------------
呵呵...
支持分开!
------解决方案--------------------
其实就这个系统而言,我觉得根本没有必要建四个数据库
两个就足够了,一个放基本资料,另一个存放数据
总共才十几个表,却放在了四个数据库里
最少的一个才两个表
但决策者说要用四个数据库,俺也没办法了^^^^
==========================================================

这样的数据库,在一个服务器上,有意义做这么多数据库么?