【问题标题】:Data retrieval and Join operations with cluster db server使用集群数据库服务器进行数据检索和连接操作
【发布时间】:2010-05-24 16:54:02
【问题描述】:

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

  1. 单个表分布在多个服务器上,我们如何根据用户输入过滤行?
  2. 如果主表在一个数据库服务器上,事务表在另一个数据库服务器上,我们如何进行连接操作?

请让我知道我们如何才能实现这一目标,我在哪里可以获得更多详细信息?

【问题讨论】:

    标签: sql-server database join cluster-computing


    【解决方案1】:

    我认为您对 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
    

    这样,您就可以在一个地方进行查询,而且您始终可以从它所在的任何服务器获取数据,而不是单独查询每台服务器。即使您不想拆分单个表,您也可以执行此操作 - 只需为要移动的每个表创建一个视图,然后让视图检查该表实际位于的任何服务器。

    如果我错过了您的实际问题,请留下评论和澄清,我很乐意添加更多细节。

    【讨论】:

    • 非常感谢。我正在寻找相同的解决方案。这让我很清楚。但是,如果我们在一台服务器上创建一个视图,并将其用于连接或其他一些操作,是否存在性能问题?我的意思是,将表拆分为多个表的实际原因是因为数据库大小的增加。在这种情况下,如果视图包含多个表,那么如果我们查询该视图,数据量肯定会非常大。会有性能问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2017-04-10
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多