架构问题 - 一个中央数据库和许多不同的程序访问它

时间:2011-03-24 20:00:00

标签: c# sql linq architecture

我正在设计一个程序来构建和维护数据库,并充当中央服务器。这是更宏伟计划的“第一阶段”。稍后将会有3-5个远程程序围绕放入此数据库的信息构建。

要求是:

  1. 远程程序必须能够访问数据库中的信息。
  2. 当数据库中的信息发生变化时,远程程序必须能够设置警报。
  3. 远程程序必须能够请求中央服务器外出并获取新的/不同的数据。
  4. 所以,问题是:我如何将这些数据和事件暴露给外界?我的两个选择是:

    1. 让他们直接与我的'服务器'应用程序通信。这似乎更容易:
      • 做事件通知(虽然我想我可能在SQL中遗漏了一些东西)。
      • 看起来这似乎更“可升级” - 这就是我不需要担心数据库更新和崩溃我的所有远程程序,因为有些东西发生了变化。我可以解释这一点,并将数据转换为子程序将理解的版本。
    2. 继续,让他们直接连接到数据库。
      • 这件好事就是解决了。我可以使用LINQ for SQL。主服务器应用程序唯一需要做的就是让远程程序知道数据库的位置。
      • 我不确定如何通过可能在同一台计算机上或不在同一台计算机上的不同程序触发/中继“事件”以进行数据库中的字段更改。
    3. 原谅我对这个问题的无知。我觉得很不自在地问它,但是我很难搞清楚从哪里开始。这是我的第一个真正的数据库项目: - /

      谢谢!

5 个答案:

答案 0 :(得分:5)

如果其他程序需要了解数据库的更新,那么最佳解决方案是通过服务器应用程序管理所有数据库更新,以便它可以向客户端发出更改警报。否则,客户端很难意识到数据库的更改。这样做的好处是可以从客户端隐藏存储解决方案的实现细节,因此您可以自由更改数据库等...

答案 1 :(得分:3)

我的建议是选择1.构建一个可以提供所有需要的信息的Web服务。这将是最灵活的,允许您减少与数据库直接通信时发生的重复后端代码。

答案 2 :(得分:1)

我建议首先查看一些数据源设计模式。这种类型的模式将帮助您提供有关如何管理数据状态的解决方案。否则,我认为我需要更多关于您的要求的信息,以便客户提出任何进一步有用的建议。

答案 3 :(得分:1)

我建议您先了解SQL Server和/或数据库。您似乎没有意识到您希望从“中央服务器”获得的大部分内容都可以由SQL Server本身完成。

答案 4 :(得分:1)

中央数据库是最简单的选择,也是最便宜的构建和维护。

但是有一些情况下,中央数据库可能会导致问题:

  • 其中一个系统的高负载:其中一个系统的高负载可能会降低其他系统的性能。例如,运行内部报告的某人会阻止您在电子商务网站上接受订单。
  • 有几个系统写入同一个数据库,锁定的可能性更大。
  • 由于多个系统依赖于相同的数据库架构,您如何升级?所有系统同时进行?
  • 如果您需要关闭数据库,则所有系统都会停止。