请各位高手帮忙:关于多个数据查询的问题。
因为历史的问题,以前不少系统只涉及某一些面的管理,都拥有自己独立的数据库,所以查询某些资料就只能进入不同的系统查询,这样很麻烦。
现在需要做一个查询系统,只要用户输入一个条件值,就要得到所在数据库中相关的资料,这就涉及到多个数据库的查询,请问各位有什么好的办法吗?
因为系统是B/S结构,速度很重要!
考虑过使用一个综合的数据库,把别的数据库都同步到这里,但是用户要求数据的同步性很高,所以数据库的负担会很大,看来不大可能。
请问各位有什么好的办法,一些资料中提及的数据调度层是怎么回事?
谢谢各位!
问题点数:200、回复次数:25Top
1 楼CSDNATM(飞行员,麻烦帮开个窗让我透透气)回复于 2005-08-01 10:52:30 得分 0
放在.net/C#里没有人过问,转来水园里灌水好了!Top
2 楼cacafuego(反正吹牛不上税!)回复于 2005-08-01 10:59:49 得分 50
在你的系统中做n个接口Top
3 楼dapang731(大胖)回复于 2005-08-01 11:01:32 得分 50
找到个C#的例子
有点多,详情参看 http://www.yesky.com/230/1762230_1.shtml
3.2.1 远程对象的发布与获取
系统运行后所要做的第一个工作是发布本地的远程对象并获取其它各店所发布的远程对象。发布远程对象时,首先要设置一个网络端口号,然后创建并注册一个通道,最后发布该服务器端的激活对象。其它场地的服务器根据IP地址和网络端口号即可方便地获取所发布的远程对象。实现远程对象发布和获取的关键代码如下:
远程对象的发布:
//创建一个通道实例,port为指定的网络端口号
TcpChannel MyChannel= new TcpChannel (Int32.Parse(port));
//注册通道
ChannelServices.RegisterChannel(MyChannel);
//发布该服务器端激活对象
RemotingConfiguration.RegisterWellKnownServiceType( typeof ( DbServer ), "STORE", WellKnownObjectMode.Singleton);
远程对象的获取:
//根据IP地址和端口号获取相应的远程对象
try
{myDbServer=(DbServer)Activator.GetObject(typeof(DbServer),"tcp://"+ip+":"+p+"/STORE"); }
//捕捉异常
catch( NullReferenceException nullExp )
{MessageBox.Show( "指定的url地址不可到达 " + nullExp.Message );}
catch( RemotingException remExp )
{MessageBox.Show( "指定获得的对象定义不对" + remExp.Message );}
3.2.2数据库的访问
通过ADO.Net访问数据库,可以方便地连接数据库,将数据源中的数据导入DataSet对象中,在DataSet对象中可对数据表进行各种操作,而且DataSet对象本身也可远程传递。这为开发分布式数据库系统带来极大方便。实现数据库访问的关键代码如下所示:
//建立数据库的连接
string SqlConn = "Initial Catalog=Store;Data Source=Localhost;Userid=sa;Password=;";
SqlConnection Conn= new SqlConnection
(SqlConn);
Conn.Open();//打开数据库
//将数据源中的数据导入到数据集对象
try{
DataSet ds = new DataSet();
DataTable dt=new DataTable("Result");
SqlDataAdapter adapter=new SqlDataAdapter();
SqlCommand mySqlDataSetCmd =new SqlCommand
(CmdString,Conn);//CmdString为要执行的命令
adapter.SelectCommand= mySqlDataSetCmd;
adapter.Fill(dt);
ds.Tables.Add(dt); }
finally
{ Conn.Close();//关闭数据库的连接}
Top
4 楼dingki(死胖子:闽南语当红主持人)(在水源感受霸权主义存在!)回复于 2005-08-01 11:08:55 得分 0
其实很简单的啊,分别把查询的值送到不同的查询页面,查询完后可以使用框架返回到同一个页面Top
5 楼Microsoft_Office()回复于 2005-08-01 11:16:51 得分 0
可以实现的。。Top
6 楼zhanggangyi(小胖)回复于 2005-08-01 11:17:41 得分 0
dapang731(大胖)Top
7 楼CSDNATM(飞行员,麻烦帮开个窗让我透透气)回复于 2005-08-01 11:22:23 得分 0
TO dingki(死胖子:闽南语当红主持人)
谢谢!
这与关联返回的数据集在效率上有什么区别?
我关心的是查询的速度和实现的难度!
Top
8 楼abcde_1(高飞)回复于 2005-08-01 11:27:43 得分 0
帮顶Top
9 楼waterxx(我心如水)(♂)(授人芳草,手自留香;平和处世,一生安康。)回复于 2005-08-01 12:54:02 得分 10
UPTop
10 楼wangyhlj(开心)回复于 2005-08-01 13:07:40 得分 10
帮顶
Top
11 楼fhb13(游途道标)回复于 2005-08-01 13:38:02 得分 0
帮顶Top
12 楼xiaoya317(.°。☆.°★。°°小雅。☆˙°★.°。°)回复于 2005-08-01 14:24:56 得分 0
帮顶·····
Top
13 楼Fooo(四月·来也勿勿·去也冲冲)回复于 2005-08-01 14:32:24 得分 0
我关心的是查询的速度和实现的难度!
++++++++++++++++++++++++++++++++++
速度与难度 与系统结构有关系吗?
我们的信息平台,就套了四个独立的库,但是在同一台服务器上。
青蛙想实现什么?Top
14 楼Fooo(四月·来也勿勿·去也冲冲)回复于 2005-08-01 14:47:09 得分 0
因为系统是B/S结构,速度很重要!
考虑过使用一个综合的数据库,把别的数据库都同步到这里,但是用户要求数据的同步性很高,所以数据库的负担会很大,看来不大可能。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
我们的信息平台:(四个独立库)
1.单位与人员库
2.设备库
3.基础信息库
4.设备操作库
只要允许提供接口,创建视图,这与c/s或b/s检索数据速度,有什么关联呢?Top
15 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-08-01 14:54:18 得分 10
如果数据库分布在不同的服务器上,可以利用分布式查询实现想要的结果。
以SQL Server 2000为例:
以一台服务器为主服务器,其他数据库服务器作为链接服务器接入到主服务器,查询数据时只需要连接到主服务器即可,而查询则是动态路由到相应的链接服务器上去检索数据并返回。Top
16 楼hash_boy(Berserker)回复于 2005-08-01 15:19:40 得分 10
数据仓库才是王道。Top
17 楼wangyhlj(开心)回复于 2005-08-01 16:35:59 得分 10
帮顶·····Top
18 楼realfengyuzhe(风雨者)回复于 2005-08-01 16:53:29 得分 10
不清楚,帮顶了Top
19 楼CSDNATM(飞行员,麻烦帮开个窗让我透透气)回复于 2005-08-01 17:08:52 得分 0
TO Fooo(我爱我妻)
你的四个库的数据是相对独立的,但是我的N个库里面有些资料是相同的。也就是说如果用户输入某个条件值,这个条件可能在那几个数据库中都能找到符合的记录。可估计你的最多是多个表联合查询,但我的是多个数中的多个表联合查询,跨数据库操作肯定会对速度有一定的影响。
C/S结构的系统可以把大量的数据载到本地来编辑,直到编辑完才传回服务器,对数据库的操作不算频繁。但是B/S结构的系统就不能这样做,几乎是每一个对数据操作都要回传服务器,在数据库效率不高的情况下,负担是挺重的。特别是通过VPN传送数据的时候,那个叫做惨惨惨!
Top
20 楼Fooo(四月·来也勿勿·去也冲冲)回复于 2005-08-01 17:25:56 得分 10
CSDNATM(青蛙【自娱自乐】) :
明白你的意思,未能更提供更好的方案,再帮顶,或到Asp.Net或数据库版块问一下?
Top
21 楼mychao2002(坚持,成功就在下一个转弯处!)回复于 2005-08-01 17:35:47 得分 10
关注这个问题Top
22 楼pingnt(淡蓝色的雪)回复于 2005-08-01 17:46:26 得分 0
CSDNATM(青蛙【自娱自乐】) :
"我的N个库里面有些资料是相同的。也就是说如果用户输入某个条件值,这个条件可能在那几个数据库中都能找到符合的记录。"
可以看出你的库(可能是早期设计的)本身结构设计就有问题,如果多个库中查询出来的数据冗余大,那你可以考虑重新设计库结构,前不久我公司就这样做了,也避免以后数据量更大时会有更多的影响.
当然效率还与程序的实现方式有一定的关系,尤其是数据量很大的时候.建议采用存储过程来代替直接的SQL查询语句,另外,SQL语句的写法同样会影响数据的执行速度,也即SQL语句的优化问题.还有数据缓冲等问题你也应该考虑到.
Top
23 楼CSDNATM(飞行员,麻烦帮开个窗让我透透气)回复于 2005-08-01 17:55:22 得分 0
TO pingnt(淡蓝色的雪)
你猜对了,这些数据结构是很早就存在了,重写数据结构不大可能
我也是考虑用存储过程。
谢谢!Top
24 楼Fooo(四月·来也勿勿·去也冲冲)回复于 2005-08-01 18:05:30 得分 0
TO pingnt(淡蓝色的雪)
你猜对了,这些数据结构是很早就存在了,重写数据结构不大可能
我也是考虑用存储过程。
谢谢!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
呵呵 对啊 也可以运用视图或存储过程等。。。。
N个库里面有些资料是相同的 但表与表之间 会存在外键关联 这就可以了嘛 到数据库版块
请教那些高手Top
25 楼zzzl(不拉拉链)回复于 2005-08-01 18:24:28 得分 20
没有办法,只能连接各个数据库Top




