集群数据库服务器的数据检索和联接操作

时间:2010-05-24 16:54:02

标签: sql-server database join cluster-computing

如果任何数据库分布在多个服务器(例如Microsoft Sql Server)上,我们如何进行连接或过滤操作。在我的场景中,假设:

  1. 单个表分布在多个服务器上,我们如何根据用户输入过滤行?
  2. 如果一个数据库服务器上有主表,而另一个数据库服务器上有事务表,那么我们如何进行连接操作?
  3. 请告诉我们如何才能实现这一目标?在哪里可以获得更多详细信息?

1 个答案:

答案 0 :(得分:0)

我认为您对SQL群集感到困惑 - 它不允许您跨多个服务器拆分表,而不是将不同的表放在同一服务器上的不同数据库中。群集用于热故障转移和冗余。

但是,我想我知道你在问什么 - 如果你想在不同的物理服务器之间拆分数据库,最简单的方法就是让一个VIEW将这些表统一在一起,然后你可以查询和过滤它。如果您从统一视图中选择某些内容,SQL Server足够智能(只要有适当的索引和统计信息)就可以将查询发送到需要的位置。

例如,假设您有两台服务器 - SERVER1和SERVER2都有一个数据库--DATABASE - 并且每台服务器都有一个表 - TABLE - 其中有一半数据(两台服务器之间,每行都有) 。只需在某个地方创建一个视图 - 服务器或其他完全 - 看起来像这样,然后为SERVER1和SERVER2添加允许SQL Server从远程位置获取数据的链接服务器:

CREATE VIEW SomeView
    AS
SELECT *
  FROM SERVER1.DATABASE..TABLE
 UNION
   ALL
SELECT *
  FROM SERVER2.DATABASE..TABLE

这样,你有一个地方可以查询,你总是从它所在的服务器上获取数据,而不是自己查询每个服务器。即使您不想拆分单个表,也可以执行此操作 - 只需为要移动的每个表创建一个视图,并让视图检查表实际所在的任何服务器。

如果我错过了您的实际问题,请发表评论并做一些澄清,我们很乐意再添加一些细节。