Zorba不仅仅是一个文件系统



是否可以使用Zorba(和xquery/jsoniq)来查询存储在文件系统之外的文档?我看到了一个28毫秒的幻灯片,其他人暗示他们已经做到了,但我不确定是怎么做到的。我不知道他们是否使用了第三方代码或其他什么。

我试过并喜欢Basex,但它不支持JSONiq,我相信它不会扩展。

Zorba不仅可以查询本地文件系统,还可以查询以通过REST API访问的方式存储的任何文档。

首先,Zorba提供了一些内置模块来连接Couchbase、SQL数据库等

http://www.zorba.io/documentation/latest/modules/connectors

其次,可以使用REST模块实现对更多商店的支持:

http://www.zorba.io/documentation/latest/modules/zorba/io/http-client

对于要支持的每个新文档存储,通常创建一个新的用户定义模块,该模块将REST调用封装到模仿文档存储的JSONiq模块API中,以自然映射到底层REST API的方式(例如,connect、get、put、update、delete…)。该模块函数的参数可以是JSON对象或XML文档,与实际作为内容/主体传递给REST API的参数几乎相同(例如,通过示例查询)。

有了模块语法的知识,这通常需要大约1000行代码和几天的时间,如果适用,可以很容易地与其他用户共享,例如在GitHub上,因为它主要是一个单一的模块文件。一些这样的模块可以在线获得。

还应该指出的是,Zorba也支持标准化的EXPath HTTP客户端(与另一个类似,但使用XML格式而不是JSON格式传递的通用参数)。这意味着,任何设计用于查询基于XML的文档存储的模块甚至应该与Zorba之外的XQuery/JSONiq引擎互操作。

也可以支持不支持REST的文档存储,但这需要C++编码,而且涉及的内容要多得多。

既然您提到了扩展,我还应该提到Sparksoniq,它可以扩展以查询存储在HDFS上的JSON数据(测试了多达几十亿个对象)。

我希望这能进一步帮助你。

最新更新