【问题标题】:How to represent this data model in a Scalable Way如何以可扩展的方式表示此数据模型
【发布时间】:2011-10-24 00:52:38
【问题描述】:

我想要与特定日期相对应的每个服务器名称的所有以下信息 就像今天的日期一样,我们必须为每个服务器(服务器名称)获取以下信息,假设如果我们有 3 台服务器,那么我们需要所有 3 台服务器的今天日期的以下信息。对于所有 3Servers,明天以同样的方式,我需要与该特定日期相对应的所有以下信息。我该如何表示这个模型。

这些是列名

updown 
docs  
indexsize  
cachehits  
lastcommit   
lastoptimize   
lastreplicationtime   
presentqueries   
slowqueries   
totalqueries

所以我认为这是一对多的关系模型。一个作为日期,许多表示服务器名称。我设计的示例表..!!

基于 Larsenal 更新的示例解决方案

【问题讨论】:

  • 您是否在表格中存储了其他内容以及日期?
  • @Larsenal,你问的是哪张桌子?

标签: database-design data-modeling


【解决方案1】:

从您在此处显示的内容来看,我认为没有令人信服的理由有一个单独的日期表格。

鉴于您提供的信息,我只需将日期列添加到您的主表中。在您的消费者代码中,您可以轻松地创建以下内容:

val r = ServerStats.forDate('2011-10-17');

生成类似于

的SQL
SELECT * FROM ServerStats WHERE Date = '2011-10-17'

【讨论】:

  • 所以您希望我通过删除 REID 外键列将日期字段添加到表 B 中,然后使用日期和服务器名称直接从表 B 中查询。
  • 是的。 “表 A”中是否还有其他需要单独的表的内容?
  • 表 A 中没有任何内容。我根据您的建议用解决方案更新了问题。这就是你所说的方式......?还有一件事,我们没有必要只拥有三个服务器。它可以更多,比如 10-20。所以这种设计足够可扩展??
  • 这将很好地扩展。一旦事情变得非常大,您就可以调整数据库索引以进一步优化事情。
  • 用 id 号替换真实数据(日期)与规范化无关。所以 over-normalization 在这里是错误的术语。不过,“不要这样做”是正确的解决方案。
猜你喜欢
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
相关资源
最近更新 更多