优化数据转换

时间:2009-10-26 14:55:04

标签: data-structures

我们的业务涉及房屋,多年来我们创建了几个业务对象来代表它们。我们还从外部来源收到大量数据,并将数据发送给外部消费者。其中每一个都以不同的方式代表房子,我们花费了大量的时间和精力将一种格式转换为另一种格式。我正在寻找一些关于如何处理这种情况的一般模式或最佳实践。如何编写灵活,可扩展,快速的通用数据转换器。

背景:房屋通常具有30-40个属性,例如大小,卧室数量,屋顶类型,建筑材料,壁板材料等。这些属性通常表示为键/值对。典型的翻译问题是,一个供应商将卧室的数量表示为单个键/值对:NumBedrooms = 3,而不同的供应商将为每个卧室设置一个键/值对:Bedroom = master,Bedroom = small,Bedroom =小。 翻译没什么特别难的,但我们花了很多时间和精力来编写和测试翻译。我该如何优化呢?

由于

(我的环境是.Net)

2 个答案:

答案 0 :(得分:2)

最好的起点是创建一个“内部表示”,这是您的处理始终的表示。然后根据需要从“外部表示”创建翻译器。我想这就是你已经在做的事情,但应该提到它的完整性。优化来自于只有在您需要时才能有选择地编写导入和导出。

如果可以的话,一个好的实施策略是外化转型。如果您可以将输入和输出转换为XML文档,那么您可以在内部和外部表示之间编写XSLT转换。目标是能够设置从输入XML文档到内部表示的转换管道。如果所有内容都以XML表示并使用通用协议(例如...... hmm ... HTTP),则可以使用配置来控制该过程。顺便说一句 - 这基本上是Pipes and Filters设计模式。

请查看Yahoo pipesApache CocoonXML pipelineNetKernel以获取灵感。

答案 1 :(得分:0)

我的雇主在90年代遇到了这个问题。正如D.Shawley建议的那样,我们有一个标准格式,我们将客户的数据转换成来源。

我进一步设计了一种简单的格式描述语言;我们用那种语言描述了我们的标准格式,然后,对于一个新的数据集,我们也会编写它的格式。然后程序将采用两种描述并将数据从一种格式转换为另一种格式,具有自动类型转换,安全检查等(这对于其他一些操作也很方便,而不仅仅是这些初始/最终转换。)< / p>

详情可能无法帮助您 - 您可能会处理完全不同类型的数据。但是,你可以从一般原则中获益。 “数据定义语言”不一定是解析器和扫描器的奇特之处;您可以直接使用IronPython中的数据结构来定义它,比如说。