公司里的数据常散落在不同系统:有些只能通过厂商的 Java SDK、SOAP 接口或定制登录访问。过去,即使 Java 程序已经拿到这些数据,想让 DuckDB 直接查询它们,仍要编写并发布 C++ 扩展。如今,DuckDB 的 Java 客户端可以注册纯 Java 表函数——一种返回多行多列、能在 SQL 中当作表使用的函数。
这意味着,Java 能访问的数据源可以直接进入 DuckDB 的查询面,与本地 Parquet、CSV 等数据一起筛选和连接。代码作为普通 Maven 依赖运行在 JVM(Java 程序的运行环境)里,不再需要 C++ 工具链,也减少了原生代码崩溃拖垮整个 JVM 的风险;Kotlin、Scala 和 Clojure 等 JVM 语言同样可以使用这套接口。
DuckDB 博文用 mongo_query() 演示了做法,但明确说明它只是极简示例,并非生产级 MongoDB 连接器,MongoDB 本身已有 ODBC 和社区扩展。真正值得注意的是这套通用接口:企业现成且已通过安全审查的 Java 客户端,如今可以更自然地接进 SQL。