Zorba 不仅仅是一个文件系统

Zorba with more than just a filesystem

是否可以使用 Zorba(和 xquery/jsoniq)查询存储在非文件系统中的文档?我看到 28msec 和其他人的幻灯片表明他们已经这样做了,但我不确定是如何做到的。我不知道他们是否使用了第 3 方代码或其他东西。

我尝试过并喜欢 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 的方式(例如,连接、获取、放置、更新、删除……)。该模块函数的参数可以是 JSON 对象或 XML 文档,与实际作为 content/body 传递给 REST API 的那些几乎相同(例如,通过示例查询)。

有了 module syntax 的知识,这通常需要大约 1000 行代码和几天时间才能完成,如果适用,可以很容易地与其他用户共享,例如在 GitHub 上,因为它主要是单个模块文件。某些此类模块可能在线提供。

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

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

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

我希望这对你有进一步的帮助。