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

时间:2017-05-08 17:37:56

标签: marklogic

Optic API的目的与xdmp:sql有一些重叠。何时应该使用Optic与SQL?

1 个答案:

答案 0 :(得分:3)

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

MarkLogic惯用操作的示例包括

  • 加入文件
  • 汇总序列
  • 在使用MarkLogic内置函数(如fn.reverse()
  • )的列上组合表达式

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

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

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

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

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

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