【问题标题】:Database architecture change from local to distributed数据库架构从本地变为分布式
【发布时间】:2010-12-13 10:19:15
【问题描述】:

我们公司有一个依赖本地数据库工作的产品(它允许更多的客户端连接到同一个数据库并在它们之间共享数据)。

DBMS:Microsoft SQL Server 2008

现在,我们需要创建一个单一的数据库,可以通过互联网访问(我目前对如何不感兴趣),这将允许更多用户使用它,就好像它是他们自己的一样.

简单的例子。
假设我们的程序将管理(插入/修改/删除)书籍及其卖家:

Table Seller:
   IdSeller          PRIMARY
   Name

Table Books:
   IdBook            PRIMARY
   IdSeller          NOT NULL
   Description

现在,我们需要分发它,并按“公司”对数据进行分类

 Table Company:
    IdCompany        PRIMARY
    LicenseNumber

我们的想法是像这样修改 primary (??) 表:

 Table Seller (NEW VERSION):
    IdSeller         PRIMARY
    IdCompany        NOT NULL
    Name

通过这种方式,我们可以确定图书将属于特定的卖家,而这些卖家将属于特定的公司。
从概念上讲,这是可行的,但是我们将不得不更改在 DataAccessLayer 中进行的所有查询!

我们想到了几个解决方案:

  • 每个主表表的公司过滤视图
  • 重写所有查询

你会如何处理这个问题?

【问题讨论】:

    标签: database architecture distributed data-access-layer


    【解决方案1】:

    您可以创建一个可通过 Internet 访问的 WCF/Web 服务,而不是公开 SQL Server。 WCF/Web 服务可以包含关于哪些记录从数据库提供给客户端以及限制哪些记录的所有逻辑。您的客户端可以简单地访问 WCF/Web 服务。

    如果我不能很好地理解您的问题,请告诉我。

    【讨论】:

    • 这确实是一个很好的建议,即使它部分回答了我的问题。仍然存在“我如何更改数据库?”部分丢失。
    【解决方案2】:

    即兴发挥,我会在您的 DAL 中重新进行查询。

    问题是,这是一个高度情境化的问题。你多久更新一次这个程序?工作中是否有重大修改?贵公司进行大型重构的能力如何?

    有时,在商业世界中,破解快速解决方案是最佳选择:'(

    【讨论】:

    • 这需要一段时间,但我们会修改大部分查询。这就是 DAL 的意义所在?
    • 修改 DAL 是最面向未来的答案。您不必担心任何进一步的更新“这是否符合我们提出的每个客户一次查看的黑客攻击?”
    【解决方案3】:

    首先,您需要确定这个新架构中的实体将代表什么……新的卖家表和旧的表是同一个实体吗?还是新表中的每一行都代表卖方与公司的关联?即,同一卖家可以与两家不同的公司合作吗?书的问题也一样。答案将决定如何最好地修改表架构以提供您需要的功能。

    【讨论】:

    • 不,每个卖家都有自己的公司。每家公司的书籍也必须不同,因为它们依赖于不同的卖家(每家公司的卖家不同)
    猜你喜欢
    • 2016-01-21
    • 2015-02-09
    • 2020-08-05
    • 1970-01-01
    • 2016-03-01
    • 2022-01-27
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多