一个大型应用系统的数据库设计方案,请指点.

oop2000 2004-12-22 11:45:32
关于数据库的设计问题.

有一个数据库要设计,我把一些具体情况介绍一下.希望能得到一些方向性的建议和知道.先谢谢了.

名词:
要开发数据库应用系统的分公司以下简称 D公司.

我先简单的介绍一下情况:

服务器操作系统:
Windows 2003 中文版,打了所有的补丁.

服务器硬件条件:
1台联想的R630.
http://appserver.lenovo.com/Product/Product_Server/Product_detail.asp?productid=2925

我们的具体配置是:
CPU: 2个,Intel Xeon MP2.0GHz CPU
内存:4G DDR266 ECC
硬盘:260G Scsi 没有做Raid
一个磁带机.
网卡: 1个Intel 千兆,1个Intel 百兆

客户端操作系统:
Windows 2000 sp4 中文版 或者 Windows xp sp2 但以WINDOWS2000居多

客户端的硬件条件:
条件不一样,但基本都是P4级别的机器,都是256M的内存.

网络环境:
总公司和各分公司在不同省区.
总公司内部和各分公司以及各分公司下属的子公司内部都是百兆局域网
总公司和各分公司通过2M数字电路连接,各分公司之间不连接,
各分公司和子公司通过2M数字电路连接,子公司只能连接到各分公司,然后通过各分公司的路由器连接到总公司
各分公司下属的子公司之间也通过2M数字电路连接.
还有一些营业网点通过512KADSL连接到各分公司(用加密卡连接到各分公司)

数据库:
采用Oracle9i 版本9.2.0 没有打补丁....


未来:
希望将服务器的OS系统迁移到LINUX,数据库升级到Oracle10G.(不知道对此有何建议?)


业务情况:
目前要设计的数据库是为了解决其中一个分公司的自身管理问题.
我希望该系统能满足总公司的业务需求,从而
让这个系统能有更大的应用范围,

目前总公司的业务应用情况:
各分公司及其分公司下属的子公司,通过2M DDN专线连接着.数据库放在总公司(RS6000,DB2的数据库)
采用的是数据大集中的方式,采用的是C/S架构.
各分公司的客户端基本的是录入,查询相对少一些.
使用客户端的人数大概在1500人左右.基本上是不停的录入和查询.使用时间非常集中.

D公司的业务应用情况:
客户端基本上是查询多.报表多.录入的相对少,
但涉及到大量的图片,目前想把图片存放在数据库中,
未来希望能变成总公司使用的系统,因此会有很多人同时录入.查询,希望在设计数据库的时候能够给予充分的考虑.

D公司客户端软件的情况
该客户端软件将使用.Net开发,基本确定C/S架构,如果未来需要可以方便的迁移到B/S的架构.
客户端用Oracle10g提供的< instantclient-basic-win32-10.1.0.2 >来连接数据库.



问题:
1.数据库将要设计出两套数据库(正式库和临时库),除了部分数据不同,其它的都一样,在需要切换的时候能及时切换到另外
一个数据库,同时,录入到临时库的数据能够在某个时间在导入到正式数据库.
希望能有数据库及时切换的好建议?(在服务器只有一台的情况下,如果有两台那我知道该咋弄.呵呵)

2.由于涉及到大量图片的存储和读取,图片很多.因为是用了C/S模式,所以把图片放在服务器上不太好办.
不知道有什么好建议?

3.在目前的情况下,Oracle的表空间设计以及表的设计有什么要特别注意的么?

4.为了提高运行的效率,我想把所有的查询和插入,删除,更新操作都用存储过程来处理.不知道这样效果
会不会好?还是说查询次数多的语句用存储过程?其它的可以用sql?

5.Oracle的安装的时候,那个选择连接方式的时候?一个是专有连接,还有一个是共享连接..
安装的时候Oracle说共享的连接适合多人使用.我原来用的是专有的连接.
后来用了这个共享的连接,发现速度慢了很多.不知道该怎么理解这个问题

6.Oracle的优化参数有没有什么好的设置比例推荐一个?.目前内存是4G,以后肯定会升级到6G.相应的
设置能否说一个?

7.其它的暂时没有想到的希望能得到提醒和一些指点..谢谢.




...全文
715 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
minkoming 2005-02-05
  • 打赏
  • 举报
回复
没必要升级到10G
Chinatosun 2005-02-05
  • 打赏
  • 举报
回复
学习。。。
lukecui 2005-02-05
  • 打赏
  • 举报
回复
这种系统不建议采用C/S方式,客户端程序的维护工作量太大了
SInoyew 2005-02-04
  • 打赏
  • 举报
回复
设计方案,群思广议嘛。
QiuJinHua 2005-02-04
  • 打赏
  • 举报
回复
补充:一般情况,WIN2000是有2G内存限制的。要突破这个限制,要打补丁。
QiuJinHua 2005-02-04
  • 打赏
  • 举报
回复
1.可用Linux的HA和共想存储介质实现双机。这样的话可以两台数据库是一模一样的,只是一个时间点只有一台服务器在运行。也可以实现问题1的功能。而且在应用功能上不会有限制。
2.可以试试Oracle的internetfiles系统。这样比去开发一个FTP,或是HTTP服务器可靠性要好得多。
3.表空间最好设计成本地管理模式。这样可以很大程地防止由于碎片导致数据库性能下降的情况。把表,索引,LOB大字段等建立不同的表空间.存储做R5,实现条带化,提高读写效率。
4.不一定储存过程的效率就会比SQL高。SQL绑定变量,也可以达到存储过程的效率。而且存储过程对于查询的灵活性不好。全部都用存储过程是不明智的,可能会事与愿违
5你要做MTS?有必要么?不是行业用户没有必要。使用这些特性很容易碰上Oracle的Bug.呵呵。
6.4G的内存,建议SGA调到3G左右,到6G时,调到5G左右(服务器只跑Oracle的情况)。是否能设到这么大(操作系统是否有内存寻址的限制?),请查相关的资料。

hippie1024 2005-02-04
  • 打赏
  • 举报
回复
ft,楼上的你没看清人家的前提吧
“总公司和各分公司在不同省区.”“总公司和各分公司通过2M数字电路连接”

"所有的公司\分公司\营业点直接连到数据库" 的说法实在不敢苟同。
呵呵,网络流量,服务器并发,容灾,要考虑的现在太多了。
你这样搞是简单了,出了问题DBA只能撞墙了
p0063665 2005-02-04
  • 打赏
  • 举报
回复
这个架构设计是十分幼稚的,可能有些条件限制成了这样,而我没有理解到.我谈谈我的看法,楼主自己考虑.
1.建议所有的公司\分公司\营业点直接连到数据库,并且只用一个数据库(不要用两个数据库来切换),简单的设计就是最好的.这样唯一的缺点是服务器挂了,所有的地方都不能营业,所以要保证这个服务器7*24.当然现在保证这个要求不难,也要考虑到电信局的网络挂了.
2.你现在的服务器应该是跑不动了.1500个连接到数据库,那是什么概念?居然没有raid,硬盘是这个服务器最主要的问题,如果你们有钱,最好是raid0+1,既提高I/O,又保证数据的安全.数据库文件放在那里,怎么避免I/O的凭颈(表空间设计),大有文章,每本DBA的书上都有很长的篇幅讲.
3.图片,呵呵,大量的图片不要放在数据里,他的I/O量十分大,占的空间十分大.如果条件许可,放在另外一台服务器上,这样才能提高速度,放在一个服务器上,怎么搞都快不了多少,另外图片的存取也要将技巧.
4.如果象你说的上千个连接,你当然是需要使用共享模式了.可能你还没有分清两者的区别吧.即使是共享模式,你当前的服务器的配置也很吃力哦.应该同时在线的连接只有几百个吧?
5.你提的其他的几个问题,太广泛了,要根据实际情况来回答,几天几夜都将不完了......
帮不了你了,自己好运.
microd 2005-02-04
  • 打赏
  • 举报
回复
学习。。。
bluefishzyq 2005-02-04
  • 打赏
  • 举报
回复
关注
hippie1024 2005-02-04
  • 打赏
  • 举报
回复
楼上的,
1,局域网间连通是不可控的(不像你内网出问题你可以去测去解决)
稳定性是第一,不能由于外网断就影响所有的分公司。(任何大企业不可能接受,这么不可靠的 架构)
更何况,这个应用一个点就有1500个客户端,还有大量图片需要通过网络传输,如果需求对响应时间要求高就更不能这样了
2,连一个数据库,速度上没有优势,稳定性更不用提,实在每看出来是什么“绝对是最佳方案”了。

呵呵,兄台,“最好,最佳” 不要说的太绝对了。
p0063665 2005-02-04
  • 打赏
  • 举报
回复
ft,楼上的你没看清人家的前提吧
“总公司和各分公司在不同省区.”“总公司和各分公司通过2M数字电路连接”

我没有看错,现在的网络环境远远够用!直接连一个数据库绝对是最佳方案.
当年我们写的时候,电话拨号上网,只有几K,照样直接连,并发数也是上百个,主机还没有托管呢.
lzy5042 2004-12-31
  • 打赏
  • 举报
回复
关注...
oop2000 2004-12-30
  • 打赏
  • 举报
回复
up..顶
oop2000 2004-12-29
  • 打赏
  • 举报
回复
至楼上:hippie1024(痞子)

1.这东西我抽空一定看看。
2.如果大量图片放入数据库中。那么读取这些图片是要占用很大的网络资源吧(这么多用户)
在说如果放入数据库在磁盘IO上要很费力了。肯定用Raid,但Raid几还不好说。要在性能和安全性上取得平衡
如果不存数据库,那么图片的上传下载都是问题。如果用Http,那么效率我很担心。如果用FTP。那么防火墙的问题恐怕要写在帮助里面。
另外。如果放在数据库外面,那么备份是个大问题。
我很头痛。。
3.assm我还没有来得及看。。另外是否有必要升级到10G?数据库目前是用Win2003,那么如果将来换成Linux,在迁移上问题会很多吧。但如果现在上linux我又不太行。。
4.噢。这问题也对。那查询之类的放入存储过程如何?我感觉这样是好很多。效率应该高一些才对,
5。我想用专用模式,因为我感觉这个能快一些。。不知道对于大量用户来说。哪个更合适??
这些用户会添加,修改,查询。查询会多一些。因为报表很多。修改也会不少。目前添加的少。但将来添加的也会很多。
6.我在学习学习。。

感谢楼上的鼎立支持。。

我的邮箱:liziyu@126.com,希望有机会和大家探讨.




oop2000 2004-12-29
  • 打赏
  • 举报
回复
这几天忙着写一些客户端的临时用的软件。没有抽空来。。不好意思。今天来看帖子了。

希望这个讨论的帖子能给大家一些经验。
hippie1024 2004-12-24
  • 打赏
  • 举报
回复
觉得楼主的这种帖子挺值得大家讨论的。

关于你的回复的回复如下:
1,同一台机器两个数据库的stand by可以解决你的问题,去仔细看一下相关文档,
 不用SID,用ADDRESS_LIST+SERVICE_NAME就是,应用透明的自动转移stand by文档中也有的。
2,不存数据库中你还要有一套文件访问权限的管理策略,不划算。
3,assm使用很简单,自动化的管理是DBA的福音:)
4,我的意思是插入,删除,更新大都是简单SQL,没有使用存储过程的必要。
5,你不是所“共享连接”么,oracle使用共享服务器模式就是MTS阿。
  PGA是属于进程(线程)私有的区域。在oracle使用共享服务器模式下(MTS),PGA中的一部分,也  就是UGA会被放入共享内存large_pool_size中也就是说放在了共享内存里面,不同进程(线     程)之间可以共享这部分内存。
  也就是说你“共享连接”下large_pool_size过小,后果你可想而知了吧:)
xieyongan 2004-12-23
  • 打赏
  • 举报
回复
问题一:你可以使用DBCA在一台服务器上再创建一个临时数据库,
问题二:图片最好不要放在oracle数据库存储,特别是图片非常多时候,应该放在外部。若是c/s可以在服务器上做个临时管理程序负责把client图像转存到服务器上外部目录。
问题三:问题比较广,最好根据你的具体应用联系在一起。其他问题下午跟你探讨。还有你服务器最好要做raid,
dw99413145 2004-12-23
  • 打赏
  • 举报
回复
关注中……
学习中……
oop2000 2004-12-23
  • 打赏
  • 举报
回复
ding
加载更多回复(3)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧