【问题标题】:Database design for log data evaluation用于日志数据评估的数据库设计
【发布时间】:2014-09-20 03:12:57
【问题描述】:

我的任务是开发用于评估日志文件的工具,我正在寻找合适的数据库设计。有几十个应用程序以 CSV 格式生成日志文件,但每个应用程序都有不同的列和数据类型。在启动时,每个应用程序都会将其当前日志文件发送到服务器,服务器会将新行插入 SQL Server 数据库。

到目前为止,我想出了以下设计。从我在其他帖子中读到的内容来看,强烈建议不要使用 EAV 设计,它也不能说服我必须将所有数据存储为字符串。所以我想出的唯一选择是每个应用程序有一个表。

还有其他我还没有考虑过的选择吗?如果您遇到过类似情况,您选择了哪种设计?

1.) 每个应用程序一个表

ApplicationA(A, B, C, D, E)
ApplicationB(B, E, H, J)
ApplicationC(C, P, N, X, Y)

优点:

  • 简单的设计

缺点:

  • 很多表
  • 每当引入新项目时,都必须创建相应的表
  • 如果文件格式发生变化,则必须更改表定义

2.) EAV 模型

Applications(AppId, Name)
DataTypes(DTypeId, Name)
Properties(PropId, Name, DTypeId)
ApplicationProperties(AppId, PropId)
Values(ValueId, AppId, PropId, Value)

优点:

  • 无需添加新表或列

缺点:

  • 所有值都存储为字符串
  • SQL 查询由于大量连接和强制转换而更加复杂

【问题讨论】:

    标签: sql database-design relational-database


    【解决方案1】:

    在我看来,性感并不总是更好。每个应用程序设计的简单 1 个表让我投票赞成简单。添加表的维护应该没什么大不了的。没有想到其他设计。

    但是,您需要使用不同的查询来获取每个应用程序的数据。因此,如果您谈论的是大量应用程序,那么如果您采用 EAV 设计,它将为您节省大量开发应用程序以获取数据的时间,因为您可能能够创建一个检索日志的函数只需发送不同的参数即可获取任何应用程序的信息。

    祝你申请顺利。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2011-09-07
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多