【问题标题】:Convert Tree Structure Data to XML-- Performance Concerns将树结构数据转换为 XML——性能问题
【发布时间】:2009-04-14 16:01:13
【问题描述】:

我有一组树形结构的数据。目前我将这些数据保存到二进制文件中。缺点是这些数据的排序、过滤非常困难。不仅如此,当数据量很大时,从硬盘读取到内存的速度很慢。

所以我正在考虑将这些树状数据保存到 XML 文件中。我想要这个的原因是因为

  1. XML 已内置用于过滤和数据操作的库
  2. 社区很好地支持 XML 操作,而现在我必须支持我自己的数据结构操作

鉴于 .Net 对 XML 的支持,我想知道从 XML 查询数据是否比从二进制文件查询数据更快(在加载速度方面)?我进行转换有什么好处吗?我很确定,就编程工作而言,XML 胜过我自己的树数据结构,但是加载速度呢?

【问题讨论】:

    标签: c# xml tree


    【解决方案1】:

    根据经验:您不会发现 XML 是管理数据的最小或最快的方法。

    您的描述没有提供足够的细节来确定,但也许关系数据库会是更好的方法。将树结构映射到关系模型通常并不困难。 (反过来说就是另一回事了……)

    【讨论】:

    • 将树结构映射到关系模型中...关于如何做到这一点的任何指南?如何将树节点映射到列和表中?前者是高度非结构化的,但后者是在开始时定义的
    • 一个很好的介绍,更多的链接,可以在这里找到:rockstarapps.com/wordpress/?p=82 注意:除非你需要优化深度嵌套的查询,当你到达“所以最好的方法是什么?”,下降约 20%。
    【解决方案2】:

    数据大小可能会大于您当前的树大小,因为 XML 是文本,因此所有数据都必须序列化为文本表示。所以加载可能会也可能不会更慢,这也取决于您当前的加载实现。

    至于其余部分,如果操作正确,查询和修改数据非常简单且相当有效,但由于文本性质,它通常不能超过做得好的二进制实现。

    如果您需要转换您的树数据(用于显示等),XML 非常棒 - 使用 XSL Transformations 允许您几乎无需编程即可创建数据的任何 XML、HTML 或文本表示(因此还可以进行测试)和调试)努力。

    【讨论】:

      【解决方案3】:

      从性能的角度来看,XML 几乎肯定会在与二进制结构的竞争中输掉。但是,从开发和技术的角度来看,您对 XML 胜出的估计是完全正确的。

      我完全同意@Dan 的说法。随着数据大小的增加,XML 数据结构的性能呈指数级下降。它的使用如此普遍,因为大多数应用程序不处理非常大量的数据,这些数据通常存储在数据库中或序列化为二进制数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 2015-11-08
        • 1970-01-01
        • 2018-08-03
        • 1970-01-01
        • 2013-05-17
        相关资源
        最近更新 更多