最佳答案
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/