【问题标题】:Save saxon tiny tree to database将撒克逊小树保存到数据库
【发布时间】:2022-12-10 00:34:40
【问题描述】:

我们的产品目前处理文档,使用 Saxon 在其上运行 xquery/xpath 表达式。为了获得更好的性能,我们希望转而使用 TinyTree 而不是 DOM。

我们有很多涉及将文档保存到数据库的操作,所以想知道将 Saxons Tiny Tree 保存到数据库的最佳方法是什么?这里的用例是将小树从进程的一个实例保存到数据库,并将其加载到另一台机器上运行的另一个实例中。

我们试图找到一种序列化/反序列化小树的方法,但除了 https://saxonica.plan.io/boards/3/topics/4630 上发布的 xml 序列化之外,找不到任何可以跨不同流程实例工作的方法。

还有其他可以节省空间的建议吗?

【问题讨论】:

    标签: database dom xml-serialization saxon


    【解决方案1】:

    好吧,这取决于数据库。这是 XML 数据库还是关系数据库?通常,您必须将文档序列化为词法 XML,除非所讨论的数据库产品提供了一些其他接口(例如,SAX 或 DOM 或 StAX),在这种情况下,Saxon 具有提供该格式的 TinyTree 的 API。

    如果您试图将 XML 从一台机器获取到另一台机器,那么通常序列化和重新解析是执行此操作的方法。我不确定数据库是从哪里来的。

    请注意,您引用的论坛帖子已有 17 年历史,而且情况有所改变……不过,架构并没有太大变化。

    如果空间是您主要关心的问题,您可能会查看 EXI(或其他二进制 XML 表示)。它们总是提供 SAX 到二进制和二进制到 SAX 的接口,因此它们很容易与 Saxon 集成。

    要将 XML 从 TinyTree 中提取到提供 SAX ContentHandler 接口的东西中,请使用 Processor.writeXdmValue(node, destination),其中 node 是包装 TinyTree 的 XdmNodedestination 是包装提供的 @ 的 SAXDestination 987654327@。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-25
      • 2010-10-02
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多