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

标签 marklogic

Optic API的目的与 xdmp:sql 有一些重叠。对于何时应该使用 Optic 和 SQL,是否有任何指导原则?

最佳答案

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

MarkLogic 惯用操作的示例包括

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

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

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

您可以通过链接操作来更自然地工作,这些操作以预期的操作顺序表达您需要执行的计划(与 SQL 语法的命令式句子约束相反)。 Jooq 领导有一篇关于这个问题的有趣的博客文章:

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

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

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

关于marklogic - 我什么时候应该使用 MarkLogic 9 的 Optic API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43853926/

相关文章:

gradle - java.lang.IllegalStateException:不支持替换其他插件可能已经使用的现有任务

rest - 有没有一种简单的方法使用 REST 来获取附加到 MarkLogic 数据库的森林列表

marklogic - 使用 MarkLogic 的补丁功能替换文本内容和属性

xml - 如何在xpath marklogic中传递变量中的元素名称?

xquery - 避免 XDMP-EXPNTREECACHEFULL 和加载文档

xml - 如何使用 XQuery 在 xml 文档中查找重复数据?

node.js - MarkLogic Node.js 按 "last-modified"排序

node.js - MarkLogic node.js api - 按计数分组和排序

java - Marklogic 中的语义三重存储

XQuery 基于 xml 结构创建 where 子句作为一种动态 where 子句