写点什么

Olap4j 1.0:用于在线分析处理(OLAP)服务器的 Java API

  • 2011-07-03
  • 本文字数:3132 字

    阅读完需:约 10 分钟

经过近五年的工作,商业智能厂商 Pentaho 发布了 olap4j 1.0,olap4j 1.0 是一个全新、通用的 Java API,适用于所有在线分析处理( OLAP )服务器。当前版本支持以下几款 OLAP 服务器:

以前业界曾有过提供标准 Java OLAP API 的尝试。Java Community Process 在 2000 年的时候正式提出要有一个标准的 OLAP 接口,以便在替换供应商的时候少更改实现。 JSR 69 ——Java OLAP Interface(JOLAP)当初打算要为能创建、维护 OLAP 数据和元数据的 J2EE 环境提供厂商无关的纯 Java API。但这个规范在 2004 年获批后并没有完成,导致 Java 开发社区仍然没有标准的 Java OLAP API。

InfoQ 有幸采访了 olap4j 规范的领导者、Pentaho 分析的首席架构师和 Mondrian 的创始人 Julian Hyde,以了解 olap4j 的更多内容。

InfoQ:olap4j 1.0 版本的主要功能有哪些?

Olap4j 是一个允许你从 Java 环境里连接 OLAP 数据库、查询元数据、执行 MDX 查询的 API。它是第一个让 Java 程序员连接不同厂商 OLAP 服务器的 Java API。

有两种 olap4j 驱动。一种用于基于 SOAP 的标准 XMLA (XML for Analysis),这个驱动可以和任何 XMLA 服务器通讯,包括 Microsoft SQL Server 分析服务 2005 和 2008 版本、Jedox Palo、SAP/BW。用于 Mondrian 的 olap4j 驱动可以在同一个 JVM 内和 Mondrian 引擎通讯,Mondrian 驱动是 olap4j 的参考实现,而且几年前就已经成为 Mondrian 的主要 API 了。

olap4j API 和两种驱动这几年在生产环境里证明都是很稳定的。

InfoQ:对开发社区来说,有一个用来和 OLAP 服务器交互的开放标准为什么很重要?

开放的标准能为开发人员、集成商和最终用户提供一种选择。没有开放标准的话,如果你想使用供应商 X 的 OLAP 服务器,你就会受到限制,必须使用供应商 X 的 OLAP 客户端。你要是正在构建应用,应用也会受限于供应商 X。使用 olap4j 的话,如果有一款 OLAP 服务器更好、更便宜、更快,或者只是因为某个特定客户已经有该服务器的站点许可了,那你就可以切换到这个服务器上去。而且 OLAP 客户端也会有多种选择。

InfoQ:olap4j 和 JSR 69 有何不同?

在我看来,JSR 69 有很多不足之处。它是一个相当高层次的接口,要求用户理解非常多的元模型(基于公共仓库元模型)和大量的查询模型。查询需要调用 API,而不是在 SQL 或 MDX 之类的语言里用文本的方式去指定。发起 JSR 69 的那些厂商都有既有的实现,我觉得他们要在各种查询构建 API 里找到一种调和的方案,结果却僵持不下。最终,领军 OLAP 服务器市场的 Microsoft 并没有成为规范的贡献者。

大约在同一时间,Microsoft 提出了自己的 OLAP 标准:在 C 和 C++ 环境下用于 OLAP 的 OLE DB,用于 C#和 VB 等.NET 语言的 ADO MD,还有用于 SaaS 的 XMLA(一种 SOAP 方言)。这些标准更加简单,而且由于基于查询语言 MDX,它们更像开发人员用来和关系型数据库交互的 API(ODBC、JDBC)。这些标准已经在各自的环境里得到了普遍的应用,Microsoft 当然没有兴趣去创建一个 Java 标准。

olap4j 为了让 Java 开发人员立即上手,采用了 Java 开发人员所熟悉的 JDBC 模式。比如说,olap4j 里创建连接、准备和执行语句的代码看起来和 JDBC 里的非常像。所不同的是,查询语言是 MDX 而非 SQL,而且结果是个多维的 CellSet,而不是由行和列组成的 ResultSet。

olap4j 差不多可以说是 JDBC 的扩展,实际上这意味着你可以为 olap4j 连接使用连接池、目录服务等基础设施,就像供 JDBC 连接使用的一样。

InfoQ:这些 MDX 查询是如何生成的?

在 JDBC 应用里 SQL 通常是硬编码的,相反,OLAP 的目的是进行交互式的数据探索,所以查询需要动态生成。Olap4j 提供了一个查询模型,可以一步一步构建查询,然后转换成 MDX。olap4j 和以查询模型为中心的 API(比如 JSR-69 和 Oracle 的 OLAP API)相比,最关键的区别在于 olap4j 里查询模型是可选的。如果你是应用开发人员,你的应用总需要展示同样的图表或数据表格,那你可以手工编写 MDX 查询;如果你是 OLAP 工具开发人员,你就可以使用 olap4j 的查询模型或是构建自己的查询模型。虽然我们已经到了 1.0 版本,但 olap4j 的查询模型仍然在继续进行。好消息是它并不是 API 的核心部分,而且它的演进不会破坏 API 的其他部分。

这样做的结果是 olap4j 要比 JSR-69 和 Oracle 的 OLAP API 更小、更简单。对学习 API 的应用开发人员,以及试图实现 API 的服务器和驱动的开发人员来说,这可是个好消息。

InfoQ:到目前为止,JOLAP 已经成为很多其他工作的基础了。比如 Hyperion 的 XMLA 实现就使用了基于 JOLAP 规范的 Java API。但规范本身并没有真正成为这样的标准。你打算去复兴 JOLAP 规范本身吗?

我们不打算那么做,原因上面已经说过了。不过 olap4j 采用了 XMLA 的很多内容,XMLA 是目前最重要的 OLAP 规范。两个 API 的元数据非常像,查询语言 MDX 则完全相同。主要区别是,在 Java 环境里 olap4j 要比 XMLA 好用的多。而且 olap4j 在很多情况下都比 XMLA 有效率,因为驱动能使用缓存,或是使用比 XML over HTTP 更有效的协议。

InfoQ:你打算把规范提交给 JCP 么?还是想让它继续作为独立的规范和流程发展下去?

我们希望 olap4j 能像 JDBC 那样被看作是 Java 运行时库的标准部分。但我们现在还不打算把它提交到 JCP。JSR-69 的失败有一个教训,就是市场要比 JCP 的结果更为重要。我们希望越来越多的服务器能添加 olap4j 驱动,olap4j 也能随之成为市场的生力军。服务器厂商看到 olap4j 的好处之后,希望他们会支持我们在 JCP 里提议 olap4j。

InfoQ:olap4j 和其他 Java OLAP 接口的主要区别有哪些?像 Oracle 的 OLAP Java API。

首先,包括 Oracle API 在内的其他 API 都不是基于 MDX 查询语言的。相反,查询都是通过编程方式创建的,而且构建查询的 API 往往因厂商的不同而不同。

其次,其他 API 会让你受限于特定的厂商。

大多数 OLAP 服务器近来都实现了 XMLA。这需要继续做两件重要的事情。首先就是以用于 XMLA 的开源 olap4j 驱动为起点,创建用于这些服务器的 olap4j 驱动。第二,这些服务器实现 XMLA 实际上意味着他们要实现 MDX 语言。所以,为这些服务器实现原生的 olap4j 驱动应该是有可能的,这要比基于 XMLA 的驱动更有效率。

InfoQ:有计划在 olap4j 以后的版本里对其他 OLAP 服务器提供驱动支持么?

我们不能保证支持所有特定的服务器,但作为开源项目,我们希望社区能做出有价值的贡献。在过去的一年里,其他人已经实现了 SAP/BW 和 Palo 的驱动;我希望在接下来的几个月里能有 Oracle/Essbase 的驱动。

InfoQ:关于 olap4j,开发社区还有应该知道的信息么?

olap4j 1.0 里的核心 API 是稳定的。我们保证 API 以后演进的时候能向后兼容。但我们不会止步于 olap4j 1.0。我们将以兼容的方式增强核心 API,在以后的版本里我们还会添加很多内容。

我们想扩展、改进查询模型。前面已经说过,查询模型是一个生成 MDX 的客户端库,所以修改起来非常容易,也不会修改 API 里查询元数据、执行查询的核心部分。

有一个单元格回写的实验工具。它允许“假设”场景和应用的规划。它在 olap4j 里只是一个可选的功能,但我们希望 Palo 和 Mondrian 至少要实现它。

还有一个实验工具,在服务器上的数据发生变化时能立即接收“推”过来的通知。想象一下,Web 客户端上单元格的值在你眼前发生变化,还会简单地改变颜色以提醒你有变更。

由于 olap4j 是按照开放流程进行开发的,贡献者来自不同的项目和公司,所以我们可以期待在规范的后续版本里能出现更多的好点子。

Olap4j 是由公司和开源项目联合开发的。它是一个开放的规范,遵循Eclipse 公共许可( EPL )。

查看英文原文: Olap4j 1.0: a Java API for OLAP Servers

2011-07-03 02:518125
用户头像

发布了 151 篇内容, 共 67.6 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

KaiwuDB 邀你共赴 DTCC2025 数据库盛会

KaiwuDB

数据库 DTCC

移动端即时通讯源码/IM聊天源码RainbowChat,纯原生体验丝滑、全源码易二开

JackJiang

网络编程 IM 即时通信

IoT 小程序:如何破解设备互联的碎片化困局?

Byte_Me

小程序 App IOT Platform IoT

云电脑 vs 传统PC:ToDesk、青椒云等3A游戏与AI训练的成本与性能对比

鸽芷咕

人工智能 AI 云电脑 AIGC ToDesk

小度 X Atwell筑格酒店,共创高端智能化酒店新体验

科技大数据

内网聊天工具私有化IM选择指南,BeeWorks可能适合你

BeeWorks

即时通讯 IM 私有化部署

向量索引的混合查询方法,你选对了吗?

老纪的技术唠嗑局

索引 OceanBase 社区版 向量化

海外红人营销中最常见的五个误区

Wolink

海外推广 达人营销

高校数字化转型实战:破解数据孤岛、构建智能指标体系与AI落地路径

袋鼠云数栈

解决方案 智慧校园 高校 智慧校园解决方案 数字化转型‘’

如何通过Python SDK描述Collection

DashVector

人工智能 数据库 向量检索 大模型 向量检索数据库

当你的库房物料损耗难管控时,真该看看这家企业怎么做到「零异常流失」

斯科信息

智能称重系统 斯科信息 RFID技术

从编码工到低代码架构师的新生路

秃头小帅oi

Intel 14A,关键在于如何推进,而非是否推进

科技热闻

AD域组策略管理

运维有小邓

AD域 AD域管理

聚焦制造业智能化转型 中国科学技术大学依托昇腾突破知识增强大模型关键技术

极客天地

实战揭秘|魔搭社区 + 阿里云边缘云 ENS,快速部署大模型的落地实践

阿里云CloudImagine

云计算 边缘计算 大模型 ens 大模型落地

备受关注的“操作系统开源与 AI 进化”分论坛来了 | 2025 云栖大会

OpenAnolis小助手

操作系统 云栖大会 龙蜥社区 OpenAnolis

龙蜥社区第 35 次运营委员会会议圆满结束

OpenAnolis小助手

操作系统 龙蜥社区 OpenAnolis

Word可以转PPT吗,如何进行?4个AI工具大盘点

职场工具箱

人工智能 PPT 办公软件 AIGC AI生成PPT

CST如何理解和设置频域F-solver频点

思茂信息

cst CST软件 CST Studio Suite

第一!百度智能云领跑视觉大模型赛道

百度Geek说

2025年PC怎么买?认准这一点,性能/能效/AI/静音各种体验全都要!

科技热闻

快手发布Klear-Reasoner:90.5%准确率登顶8B模型榜首,GPPO算法破解RL训练裁剪难题

快手技术

Discord x Pulsar: 使用Pulsar、Flink和Iceburg搭建流式机器学习平台

AscentStream

机器学习 flink pulsar Discord

即时通讯|BeeWorks企业im系统,生态互连重塑企业协同办公

BeeWorks

即时通讯 IM 私有化部署

全球社交媒体监控未来趋势:从监测走向预测与引导

沃观Wovision

淘宝首位程序员离职,竟投身AI新公司做这事!

王磊

PAIFuser:面向图像视频的训练推理加速框架

阿里云大数据AI技术

AI 视频生成 PAI

道路表面缺陷数据集(裂缝/井盖/坑洼)(6000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】

申公豹

人工智能

“你好BOE”五周年盛典北京站盛大启幕 携手生态伙伴打造“科技+生活”新场景

科技热闻

构建全面 GRC 策略的三大关键能力|ADManager Plus 助您实现合规与安全并重

运维有小邓

Olap4j 1.0:用于在线分析处理(OLAP)服务器的Java API_Java_Charles Humble_InfoQ精选文章