0

我们有一个调用 Web 服务的 .Net 客户端。我们希望将结果存储在 SQL Server 数据库中。

我认为我们在这里有两种选择如何存储数据,我有点犹豫不决,因为我无法清楚地看到利弊:一种是将结果映射到数据库字段中。这将要求我们拥有与每种可能的结果类型相对应的数据库字段,例如,对于每个“正常”结果类型以及故障结果类型。

另一方面,我们可以存储生成的 XML 并通过 SQL Server 内置的 XML 函数进行查询。

就个人而言,我对处理 SQL 和 XML 都很满意,所以对我来说两者都很好。

在尝试为许多不同的可能的 Web 服务操作存储生成的 XML 时,在数据库设计方面我需要考虑什么?我在考虑每个操作的结果表,我们使用不同的条目来调用不同的可能结果/类型,然后将 XML 存储在正确的字段中,例如错误字段中的错误,适当的“正常”返回类型场等

4

1 回答 1

4

我们使用两者的组合。用于参考和详细数据的 XML,以及您可能搜索的字段的文本列。可搜索的列包括订单号、客户参考号、票号。我们只是在需要时添加它们,因为您可以从 XML 列中提取它们。

我不会只推荐 XML。如果您每天存储 10.000 条消息,则查询如下:

select * from XmlLogging with (nolock) where Response like '%Order12%'

可能会变慢并干扰其他查询。您也无法在 GUI 中显示日志记录,因为检索速度太慢。

我也不会只推荐文本列。如果 XML 格式发生变化,您将得到一个空列。如果没有 XML 消息,这很难解决。此外,如果您需要“重放”消息流,使用 XML 消息会容易得多。很少有需求需要重播,但在修复生产问题的后果时确实很有帮助。

于 2012-09-03T20:19:07.307 回答