我正在开发一个数据库驱动的Web应用程序(ASP.NET,SQL 2008),它从各种来源接收结构化XML数据。数据类似于一个集合,通常需要“清理”,因此它以XML格式传递给数据库,并转换为结果集以供显示。
我想捕获生成的“干净”结果,并将它们发送到存档数据库以将它们保存到磁盘。
到目前为止我考虑过的选项是:
将整个“干净”结果集序列化为对象(XML / .NET序列化),并将其发送回存档数据库
将清理后的结果存储在表格中,并定期将此表格中的新记录复制到存档计算机
还有其他选择吗,有没有人有类似情况的经验?
答案 0 :(得分:1)
我已经成功地使用了这两种情况,我的工作取决于系统。
当我要处理非结构化数据时,或者当我们处理消息传递系统时,我倾向于保存Raw Xml,并且我们想要跟踪消息。例如,我处理的应用程序从已部署的Windows客户端收集消息,我们会将消息转储到关系结构中,然后将它们滚动到仓库中。当我接手该项目时,我们开始存储即将推出的原始xml,因为它确实允许我们重放,并能够准确查看系统中的内容。
如果我需要对数据进行任何报告聚合,我会将数据分解并将其存储到常规表中。我知道你可以在数据库中查询xml数据,但我试着避免这种情况。我仍然可以保存原始的原始消息以进行重播和故障排除。
我做的最后一件事是保存一个完整的序列化二进制对象。当对象图非常复杂时,我发现这很方便,并且对象之间的关系很重要。它确实有很大的缺点,即版本控制;但是,即使命名空间更改,对象层次更改等,我也已经设置了这个非常强大的版本控制。如果您需要访问SQL中的数据,这不是可行的方法。