【问题标题】:Dynamic data and dynamic types in SQLSQL 中的动态数据和动态类型
【发布时间】:2018-12-16 06:29:33
【问题描述】:

我们需要开发一个程序来监控网络上的一些设备等,但我们不需要任何硬编码的设备或程序中的传输协议或参数类型。

我们希望用户能够定义参数(名称、别名、数据类型、组、传输协议、IP、采样时间等)并将这些参数绑定到参数组。最后将参数组绑定到用户定义的设备。

任何时候用户都可以定义新参数、新设备和...。

如何设计必要的 SQL Server 表?

在运行时为参数生成单独的表?将所有参数存储为字符串还是 XML?有样品吗?

我们谈论 100 种设备,任何设备的 100 个参数和非常快的采样时间。

【问题讨论】:

  • 您可以将属性存储为 EAV、xml 或 json。这些选项都不是最优的,但它们都非常灵活。我想我可能会选择 json,因为它在 c# 中最容易使用。
  • 看起来您只需要 FAST 进行存储而不是检索。然后将数据存储在一张表中。多个表只会减少数据大小。例如,名称和别名将是通用的,因此您无需每次都保存。所以你有一个别名和名称表。然后在您的结果中您只保存一个,但是您必须查找以确保名称/别名在表中。为了速度,您不想进行任何查找。
  • 如果架构在运行时完全流畅,正如您说“任何时候用户可以定义新参数、新设备和......”时所建议的那样,也许您应该考虑使用文档数据库像 MongoDb 一样。在这种情况下,你当然会使用 json 而不是 xml。

标签: c# sql-server database-design bigdata


【解决方案1】:

解决方案更多的是现实世界需求的问题,而不是我眼中的数据库设计问题:

  • 谁需要多久更改一次此数据?
  • 这些用户的技能如何?

如果专业人士或管理员很少更改这些配置,我会考虑在例如App.config 为 xml。

但是,如果您有更多没有经验的用户并且他们必须经常更新此配置,我建议您提供一个包含所有错误检查的用户 ui 表单。因此,将所有信息存储在 sql db 表中会更容易。

对于 100 台设备,xml 配置似乎很难维护。

【讨论】:

    猜你喜欢
    • 2015-02-28
    • 2023-03-28
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2021-07-28
    • 2012-07-11
    相关资源
    最近更新 更多