0

我所说的多站点系统是指具有多个相同版本窗格的系统。Gamespot 就是一个例子,它会根据您在 uk.gamespot、us.gamespot 等网站上显示不同的发布日期甚至是不同的游戏。

选址在这里不是这个问题。问题在于开发的过程和易用性,以及如何选择或输入特定于站点的数据。各种系统组件也有可能不需要特定于站点,并且在极少数情况下,需要所有站点的所有数据都是可见的和可选择的,以用于报告和管理目的。

已经考虑了以下技术,尽管我们知道它们会起作用,但我们对它们实现的繁琐性质感到不满:

表视图 - 通过在每个表上为每个站点创建多个视图,我们可以加载特定于站点的要查询的数据。但是,内联 SQL 必须动态调用正确的视图,并且在创建新站点的情况下,必须创建一整套新视图。

SQL 修改 - 通过创建 SQL 中介函数,可以修改 SQL 以更改 where 子句并连接到仅选择特定于站点的数据的目标列。但是,我们认为通过这样的设备运行我们所有的查询可能会在未来出现严重问题,并且可能会限制我们查询的灵活性。

内联站点子句 - 尽管这是最麻烦和最烦人的实现,但如果我们能够在我们的编码方式上执行标准,它将被证明是最可靠的。尽管这可能是最可靠的,但对我们的开发人员来说也是最不吸引人的,这意味着为几乎每一个查询编写站点子句。

因此,与其寻找在系统的更高级别上实施该系统的最佳方法,我们正在尝试找到一种方法,该方法将允许在基础级别上相当简单地实施特定于站点的数据选择。

如果这个问题在任何方面都过于宽泛,请告诉我,我会尝试进一步缩小范围。

第一次编辑:

就表格而言,跨站点的数据类型是相同的。用户表将在所有站点之间共享,并且每个用户只能访问一个、部分或所有站点。

让我们更进一步地看 Gamespot 的例子。一位用户负责管理英国版本。

有关游戏及其评论的信息来自所有站点均可访问的记录,因为这是全球相关信息。但是,假设发布日期来自另一个特定于站点的表。以典型方式检索有关游戏的信息,但是获取发布日期需要一些额外的代码才能为正确的站点获取正确的信息。

关于用户,无论用户当前管理的哪个站点,都应该是选择和插入的目标站点。

可以想象,发布日期不是核心表,每个日期不能简单地直接映射到其各自的游戏。

(我并不暗示对 Gamespot 的运作有任何了解,这个例子是假设的)

4

1 回答 1

1

我认为这里没有一个普遍的答案,因为我们对您正在构建的实际站点了解不够。以下是一些对最佳设计有重大影响的问题示例:

  1. 网站之间的内容大部分是重叠的,还是大部分不同?
  2. “通用”内容和“特定”内容之间有简单的区分吗?(即内容要么对所有站点通用,要么特定于一个站点)。还是需要更灵活?
  3. 您预计需求会随着时间的推移而发展多少?

我的建议是将你的精力集中在正确的表结构上来存储你的数据。如果你做对了,一个好的软件设计应该自然而然地从中流露出来。

当然,请随时提出您在此过程中遇到的任何具体问题!

编辑:在您的问题更新后,我仍然认为有很多歧义,只有在您制定具体设计时才能解决。但是,如果您想快速回答,我认为内联站点子句是您建议的三个选项中最好的。其他增加了不必要的复杂层。

我不明白为什么内联站点子句“麻烦”和“烦人”。它们不会在好的设计中引入重复,因为您可以在 PHP 中以编程方式处理它们。

于 2012-11-20T12:08:55.733 回答