我什么时候应该使用 MarkLogic 9 的 Optic API?

When should I use MarkLogic 9's Optic API?

Optic API has some overlap with xdmp:sql的目的。是否有关于何时应使用 Optic 与 SQL 的指南?

Optic 为作为 SQL 和 SPARQL 以及 Optic 基础的 MarkLogic 引擎的功能提供了一个惯用的、语言集成的接口。 (Optic 不生成 SQL 或 SPARQL。)

MarkLogic 惯用操作示例包括

  • 加入文件
  • 聚合序列
  • 在使用 MarkLogic 内置函数的列上编写表达式,例如 fn.reverse()

语言集成方面类似于 SQLAlchemy 或 JOOQ。在 SQL 中,除了参数化文字外,程序员还必须通过字符串连接来工作。除了字符串连接的不便外,开发人员还需要格外小心以防止注入攻击。

相比之下,在 Optic 中,您可以在变量中捕获构建计划的中间阶段,将计划传递给添加操作的函数和 returns 修改后的计划,等等。

你可以通过链接操作来更自然地工作,这些操作表达了你需要按照预期的操作顺序执行的计划(与 SQL 语法的命令句约束形成对比)。 Jooq 负责人在该问题上有一篇有趣的博客 post:

https://blog.jooq.org/2016/12/09/a-beginners-guide-to-the-true-order-of-sql-operations/

也就是说,如果一个团队精通 SQL 并且不需要惯用功能或看不到 Optic 提供的语言集成的价值,他们应该毫不犹豫地使用 SQL .

换句话说,选择使用哪个接口(SQL 或 Optic)很可能是每个团队或项目的决定,而不是每个查询的决定。