Optic 为作为 SQL 和 SPARQL 以及 Optic 基础的 MarkLogic 引擎的功能提供了惯用的语言集成接口。 (Optic 不会生成 SQL 或 SPARQL。)
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)可能是每个团队或项目的决定,而不是每个查询的决定。