MongoDB 是 NoSQL 数据库的典型代表,支持文档结构的存储方式数据存储和使用更为便捷,数据存取效率也很高,但计算能力较弱,实际使用中涉及 MongoDB 的计算尤其是复杂计算会很麻烦,这就需要具备强计算能力的数据处理引擎与其配合。
开源集算器 SPL 是一款专业结构化数据计算引擎,拥有丰富的计算类库和完备、不依赖数据库的计算能力。SPL 提供了独立的过程计算语法,尤其擅长复杂计算,可以增强 MongoDB 的计算能力,完成分组汇总、关联计算、子查询等通通不在话下。
常规查询
MongoDB 不容易搞定的连接 JOIN 运算,用 SPL 很容易搞定:
单表多次参与运算,复用计算结果:
IN 计算:
外键对象化,外键指针不仅方便,效率也高:
APPLY 算法的简单实现:
集合运算,合并交差:
在序列中查找成员序号:
多成员集合的交集:
复杂计算
TOPN 运算:
嵌套结构的聚合:
合并多属性子文档:
嵌套 List 子文档的查询:
交叉汇总:
分段分组:
分类分组:
数据写入
导出成 CSV:
更新数据库(MongoDB 到 MySQL):
更新数据库(MySQL 到 MongoDB):
混合计算
借助 SPL 还很容易实现 MongoDB 与其他数据源进行混合计算:
SQL支持
SPL 除了原生语法,还提供了相当于 SQL92 标准的 SQL 支持,可以使用 SQL 查询 MongoDB 了,比如前面的关联计算:
应用集成
不仅如此,SPL 提供了标准 JDBC/ODBC 等应用程序接口,集成调用很方便。如 JDBC 的使用:
…
Class.forName("com.esproc.jdbc.InternalDriver");
Connection conn = DriverManager.getConnection("jdbc:esproc:local://");
PrepareStatement st=con.prepareStatement("call splScript(?)"); // splScript为spl脚本文件名
st.setObject(1,"California");
st.execute();
ResultSet rs = st.getResultSet();
…
有了这些功能,增强 MongoDB 的计算能力可不是说说而已,要不要下载试试?