- 浏览: 3507032 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
Shashank Tiwari 在本文中对 JOLAP 进行了简要介绍,它是一种标准规范,支持在 Java™ 企业平台上创建和操纵 On Line Analytical Processing (OLAP) 数据和元数据。<!-- START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --> <!-- END RESERVED FOR FUTURE USE INCLUDE FILES-->
在过去几 年,OLAP 逐渐成为处理数据仓库和商业智能使用的多维数据的流行方法。OLAP 服务器和应用程序随处可见,并且很多存储模式、查询机制和访问策略也已经被开发出来,以满足复杂分析查询的业务需求。JDBC API 一直被用作在 Java 平台上访问和操纵维度数据的一种代理机制,但是,使用 JDBC 会折损维度模式本身的优点。通常的做法是将 JDBC 与一个专用扩展结合使用,以弥补这一点。然而,这意味着只能局限于特定的实现。
本文的目的是向熟悉 OLAP 的 Java 开发人员介绍 Java OLAP (JOLAP) API。本文描述了它的核心组件和相关的包,并提供 JOLAP 查询和检索操作的一个例子。本文还简要地讨论 JOLAP 与 JDBC 之间的相似之处,以及 JOLAP 与用于多维数据的 XMLA 查询语言 mdXML 之间的关系。请从 参考资料 小节下载 JOLAP API 规范。
|
Java Community Process JSR 69 计划为 OLAP 服务和应用程序创建了一种简化的同时又非常全面的统一 API。JOLAP 规范的目的是部署在 Java 企业平台中或者与之进行交互,它充分利用 Common Warehouse Metamodel (CWM),CWM 是以独立于供应商的方式定义逻辑 OLAP 结构的一个 OMG 标准。它还利用 Meta Object Facility (MOF)、XML Metadata Interchange (XMI) 和 Java Metadata Interface (JSR 40)。(请参阅 参考资料 ,以了解关于支持 JOLAP 的这些技术和其它技术的更多信息。)
JOLAP API 从概念上分为 4 个部分:
-
元数据接口和 XML
:JOLAP 元数据接口是 CWM 的一个子集,包括针对特定于 JOLAP 需求的扩展。
JSR 40,即 Java Metadata Interface,简化了 OMG MOF 的 Java 语言映射,并被用于根据模型生成 JOLAP 接口。
-
Reflective 服务
:JMI Reflective 服务使 JOLAP 可以进行自身检查并发现可用的元数据。当实现模型驱动的架构时,这些功能是最密切相关的。
-
查询接口
:查询接口由两个模型组成。JOLAP 的查询模型处理 OLAP 查询管理,它的源模型方便了特定于供应商的 OLAP 原语扩展的实现。按照规范的定义,源模型是 JOLAP 的一个可选功能。
- 游标接口 :JOLAP 的游标接口定义用于管理 OLAP 查询返回的多维结果集的功能。
下面的小节将深入讨论这些组件。
|
JOLAP 模型是由一些相关子模型组成的一个 UML 模型。而包组成了模型的逻辑分组,从这一角度来讲,JOLAP 分为 6 个组:
-
核心元数据
由 CWM 元数据定义改编而来,后者以独立于供应商的方式定义 OLAP 元数据。
-
资源模型
定义连接和连接工厂,它们是基于 Java Connector
Architecture Common Client Interface (JCA CCI) 的原则。资源模型不同于标准的 JCA 实现,因为它包括了 OLAP 风格的交互。
-
查询模型
定义维度选择、边界、立方体视图以及维度数据的聚合与操纵等概念。模型还包含了不对称和事务型特性。
-
游标模型
定义如何查看查询返回的维度结果集。
- 源模型和服务器端元数据模型 被定义为可选包。源模型提供对原语查询操作的支持;服务器端元数据模型定义面向部署的类使用的其他元数据。
|
|
根据 JOLAP API 规范,可以使用该 API resource 包中的类连接到支持 JOLAP 的服务,例如商业智能服务器和数据集市。这些类提供了 JCA CCI 的 InteractionSpec 架构以外的功能。
Connection
和 ConnectionFactory
是资源包中两个主要的类定义。ConnectionFactory
类用于获得一个 Connection
。创建连接时,可以传递参数,也可以不传递参数。对于容器管理的登录场景,可以创建一个不需传递参数的默认连接。对于组件管理的登录场景,则必需使用参数来创建连接,这种情况下可使用 ConnectionSpec
创建连接。
Connection
表示到支持 JOLAP 的资源的一个活动连接,它包括的帮助器方法可以简化 OLAP 风格的交互。可以使用 Connection
执行元数据查找和查询操作。下面给出了两组功能以及定义:
-
查询模式和相关对象
:获得可用模式,设置默认模式,获得默认模式,以及访问与某个模式相关的维和立方体。
-
创建查询对象
:创建
CubeView
、EdgeView
和DimensionView
对象。
Abortable
、ResourceAdapterMetadata
和 ConnectionMetadata
类也被包括在资源包中:
-
Abortable
只有一个方法
abort()
,该方法可用于取消一个长时间运行的操作。这种中断机制不是强制性的,不是所有的 JOLAP 提供程序都支持。
-
ResourceAdapterMetadata
提供用于获得与适配器名称、适配器供应商、适配器版本、规范名称、规范供应商、遵从性级别以及规范版本相关的数据的 getter 方法。JOLAP 规范定义了两种遵从性级别,它们的差别在于一个具有最基础的核心功能,另一个是具有可选功能的核心功能。
- ConnectionMetadata 定义用于获得 EIS 产品名称、EIS 供应商和 EIS 用户名的 getter 方法。
|
JOLAP 的核心元数据模型基于 OMG Common Warehouse Metamodel。 CWM 清楚地区分客户端元数据与服务器端元数据,客户机需要前者来查询 OLAP 资源,而 OLAP 服务器需要后者来处理客户机请求。JOLAP 规范采纳相同的区分方法,也提供了客户端元数据和服务器端元数据,客户机端元数据形成 OLAP 元数据的核心,而服务器端元数据为那些欲将实现建立在 CWM 模型基础上或者以 CWM 和 XMI 格式交换数据提供便利。现在,让我们将目光投向客户端元数据,这种元数据用一些附加扩展映射 CWM 客户端模型。本文在后面将简要地讨论服务器端元数据。
Schema
、 Dimension
、
和 Cube
是三个最重要的元数据定义:
-
Schema
是 OLAP 模型的逻辑表示。它还被用作模型中所有元素的容器。
-
Dimension
是多维结构的一个纵坐标。它表示具有相同意义的一组惟一的成员或值。
-
Cube
是具有若干相同维的一组度量。一个立方体的每个数据点或单元是它的维成员的笛卡尔乘积。
核心元数据包中的其它类方便了维、立方体和模式之间的相互关联;帮助它们以结构化的方式组织起来;或者提供操纵这些对象所使用的 Member
等元素的机制。
可以使用各种帮助器类,以分层的方式组织维。LevelBasedHierarchy
用于仅根据级别或者同时根据级别和链接节点定义层次。ValueBasedHierarchy
用于根据拓扑结构定义层次。基于值的层次不考虑级别,因而可用于仅根据链接节点创建层次。
HierarchyLevelAssociation
用于建模 Dimension
的不同级别与它的 LevelBasedHierarchy
之间的交点。CubeDimensionAssociation
用于将一个立方体与它的维度相关联。
Member
、MemberValue
、MemberList
、CurrentMember
、MemberQuatifierType
和 MemberObjectFactories
用于存储、操纵、访问和创建存储在特定维中的惟一值的实例。其中像 Member
和 MemberValue
等既可以作为数据,又可以作为元数据,具有双重继承。
这些客户端元模型元素是从 CWM 元模型继承的。
|
|
JOLAP 规范非常全面,它涵盖了查询模型、查询需求、格式良好性和查询事务模型。本文只对 JOLAP 查询模型作一个高度概括。请参阅 参考资料 ,了解完整的规范细节。
JOLAP 的查询需求和模型简化三种常见 OLAP 查询的创建和执行,即多维查询、边界查询和数据查询。
-
维度查询
是对单维度成员操作的成员选择。维度查询在 OLAP 的
Dimension
、Hierarchy
、HierarchyLevelAssociations
和Level
属性级别上进行查询、过滤和排序。
-
边界查询
由一组单维度或多维度查询组成,从总体上描述结果集的坐标系统。
- 数据查询 表示立方体中的数据选择。
DimensionView
、EdgeView
和 CubeView
是 JOLAP 查询模型中最重要的三个定义。可以组合这些表示维、边界和数据查询的基本查询类型,以建模更复杂的情况。
查询模型中其他重要的子模型与过滤和排序、计算成员、派生属性以及不对称选择有关。
可以根据简单或复杂的过滤器选择维度成员的子集。基于过滤器的中间选择具有相关的
setAction
操作。Initial
将选择的集合看作成员的初始集合。Append
将成员添加到列表的尾端。
Prepend
将成员添加到列表的开头。
Insert
和 Difference
根据 dimensionInsetOffset
属性添加成员,或者添加前一个集合中存在而当前集合中不存在的成员。另外,DataBasedMemberFilter
可用于根据数据表示的条件过滤维度成员。
JOLAP 包括三种类型的排序定义:基于成员属性的排序、基于成员层次的排序以及基于立方体数据值的排序。
计算成员是派生成员,它不在某一个维度上,而是从已有数据派生而来。聚合、组合之类操作的操作符可以是以成员、属性或常量作为输入的操作符。类似地,派生属性是临时的用户定义属性,是根据其他值得到的。
清单 1 显示了一个简单的调用,可以连接到 JOLAP 资源、查询该资源并检索数据:
.... env.put( Context.INITIAL_CONTEXT_FACTORY, "com.company.javax.olap.resource.ConnectionFactoryImpl" ); .... // Get the ConnectionFactory from JNDI javax.olap.resource.ConnectionFactory connFactory = (javax.olap.resource.ConnectionFactory)initCtx.lookup("MyJOLAPServer" ); // Create a connection spec javax.olap.resource.ConnectionSpec connSpec = (javax.olap.resource.ConnectionSpec)connFactory.createConnectionSpec(); connSpec.setName( "some userId" ); connSpec.setPassword( "some password" ); // Connect to the JOLAP resource javax.olap.resource.Connection conn = (javax.olap.resource.Connection)connFactory.getConnection(connSpec); // Get list of Dimensions // and do something .... List dimensionList = conn.getDimensions() Iterator dimensionIter = dimensionList.iterator(); while ( dimensionIter.hasNext() ) { javax.olap.metadata.Dimension myDimension = (javax.olap.metadata.Dimension)dimensionIter.next(); .... .... } // Close the JOLAP connection conn.close(); } .... |
|
|
游标模型 API 与 JDBC ResultSet
API 非常类似。游标模型天生就具备专用于维度结构的概念,而在关系场景中意义不大。实际上,维游标类似于 SQL 结果集,只是多了一些附加功能。RowDataAccessor
和 RowDataNavigation
接口定义 CubeCursor
、DimensionCursor
和 EdgeCursor
类的大部分功能。
游标模型提供导航和管理 JOLAP 查询返回的结果集所需的类,例如清单 1 展示的类。它能提供对 OLAP 非常关键的多维透视图。 游标模型考虑了不对称和大型结果集的情况。对于大型结果集,考虑使用增量结果集访问。
|
|
如前所述,服务器端元模型表示 CWM OLAP 元模型的面向部署部分。某些客户端定义也与部署相关。
Cube
、Schema
、HierarchyLevelAssociation
和 ValueBasedHierarchy
之类的客户端定义都被用于部署的服务器端类子类化。服务器端子类还引用与客户端类无关的实体。例如,服务器端子类 Schema
与 DeploymentGroup
之间存在关联,后者并不在客户端。
所有服务器端元模型定义都在 javax.olap.serversidemetadata
包中。
源
模型是基于源对象 MetadataObject
的低级模型,具有根据 type
、inputs
和 outputs
定义的特定结构。输入和输出本身可以作为源。源元素是具有标识符(一个惟一值)的一条记录和一组输出记录。当元素表示关系表中的一行或多维立方体中的一个单元时,源元素的定义就变得更加复杂。
源模型中还包括一组健壮的方法和模板。
join
方法可能是所有可用方法中最为重要的。模板是高级模型与低级模型之间的桥梁,当模板本身管理源时,可以修改立方体、边界和维度选择等高级对象。模板是有状态的,可以在任何时候修改。因此,当使用原语方法创建源时,源可以是动态的,而不是静态的。
|
|
本文介绍了 JOLAP API 规范,并描述了它的核心组件。本文还介绍了它的相关包,并演示了一个简单的 JOLAP 查询和检索操作。请参阅 参考资料 ,了解关于 JOLAP API 和文中讨论的其它技术的更多信息。
学习
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文
。
-
JSR 69: Java OLAP Interface (JOLAP)
:访问 JCP 主页,查看 JOLAP API 规范的最终草案和该计划的相关信息。
-
The Data Warehousing, CWM, and MOF
Resource Page
:这里有很多与 Common Warehouse Metamodel 和 Meta-Object Facility 相关的文档。
-
OMG's MetaObject Facility 主页
:了解关于 MOF 规范及其使用的更多信息。
-
JMI 主页
:了解关于 Java Metadata Interface 和 JMI Reflective Services 的更多信息。
-
XMLA 主页
:了解关于 XML for Analysis 标准的更多信息。
-
developerWorks Java 技术专区
:这里有数百篇关于 Java 编程方方面面的文章。
获得产品和技术
-
下载 JOLAP API
:Java 平台上处理维度数据的最终草案。
讨论
- 通过参与 developerWorks blogs 加入 developerWorks 社区 。
Shashank Tiwari 是 Saven Technologies 公司的首席架构师。多年以来,他参与了使用多种技术的高性能分布式应用程序的设计和开发。他的工作还包括为公司提供构建健壮测试、数据密集、可伸缩软件应 用程序方面的咨询。他定期为技术杂志撰写文章,出席研讨会,并指导其他开发人员和架构师。 |
发表评论
-
说明SOA监管(SOA Governance)实例(收录备查)
2012-12-19 11:35 1758SOA 已经不是单纯技术问 ... -
Injecting Spring Beans into Java Servlets
2012-11-01 10:21 1942If you are working in a Java ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3764原文出处:http://blog.chenlb.com/200 ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:17 3888When I try to install the And ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:13 1994When I try to install the And ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14844大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1714charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22656Java Native Access 项目 在 ... -
使用IntrospectorCleanupListener 解决quartz引起的内存泄漏
2011-04-20 11:59 13380"在服务器运行过程中,Spring不停的运行的计划任 ... -
DBCP代码研读以及就数据库连接失效的解决
2011-03-31 11:03 3772问题 网上很多评论说DBCP有很多BUG,但是都没有指明是什 ... -
ContextLoaderListener
2010-12-06 15:58 8473(1) org.springframework.web.c ... -
Servlet3.0新功能: 异步处理
2010-12-06 15:22 3189J2EE 6和Glassfish 3V正式发 ... -
Servlet3.0引入的新特性
2010-12-06 15:20 3063Servlet3.0规范的新特性主要是为了3个目的: ... -
100個節點上運行群集亞馬遜EC2上Hazelcast
2010-12-03 23:59 3322本文的目的,適是给妳湮示的細節集群的100個節點。此湮示記錄, ... -
Spring Properties Reloaded
2010-12-02 14:54 4378Spring Properties Reloaded Som ... -
为spring2.5中的jpetstore增加perf4j监控
2010-09-02 13:51 2654perf4j是一款类似于log4j的性能检测工具. 它 ... -
语义网的学习资源大汇集(备忘)
2010-06-23 22:48 1761网上资源 http:/ ... -
HTML5 Canvas for Internet Explorer
2010-06-04 21:16 1859Canvascape http://www.benjoff ... -
大型网站架构演变和知识体系
2010-06-01 23:47 1985架构演变第一步:物 ... -
Ejb Con Spring
2010-05-20 17:46 2215Contenido [ocultar] 1 ...
相关推荐
JOLAP的主要目标是使得开发者能够方便地构建分析应用,实现对多维数据的快速查询和深度分析。 **设计原则与思想** 1. **标准化接口**:JOLAP的核心是提供一套标准的API,使得不同供应商的OLAP服务器可以被Java应用...
Mondrian实现了MDX(多维表达式)语言,这是一种专门用于OLAP操作的语言,可以处理复杂的查询和分析任务。它还支持XML解析和JOLAP(Java OLAP)规范,允许与各种数据源进行交互,包括SQL数据库。 Mondrian的工作...
总结,Mondrian 作为一个强大的 OLAP 服务器,通过其精心设计的架构和源码实现,能够高效地处理复杂的多维数据查询,支持多种数据库平台,并且提供了灵活的接口供开发者使用。其源码分析对于理解 OLAP 服务的工作...
- **自定义MDX查询接口**: Mondrian实现了自己的MDX查询接口,以便更灵活地支持各种查询需求。 - **使用XML作为数据交换格式**: 为了确保跨平台兼容性和灵活性,Mondrian使用XML格式进行数据交换。 - **支持SOAP查询...
### MDX详解与Mondrian应用 #### 一、引言 ...通过Mondrian这样的OLAP服务器,用户可以轻松地实现对大量复杂数据的有效管理和分析。对于那些需要深入进行数据分析的企业来说,学习和掌握MDX是非常必要的。
Mondrian 是一个 OpenSource 的基于关系数据库的分析服务器,遵循MDX、XML/A 和 JOLAP 标准。 Mondrian 的架构可以分为四个层次:表现层、计算层、聚合层、存储层。 1. 表现层:指最终呈现在用户显示器上的以及与...
它实现了xmla和jolap规范,而且自定义了一种使用mdx语言的客户端接口。Mondrian是olap服务器,而不是数据仓库服务器,因此Mondrian的元数据主要包括olap建模的元数据,不包括从外部数据源到数据库转换的元数据。也...
Mondrian是一个开源的ROLAP(关系型在线分析处理)服务器,主要由Java编写,它遵循XMLA和JOLAP规范,并提供了一种基于MDX(多维表达式)的客户端接口。Mondrian并不专注于数据仓库的构建,而是专注于OLAP服务,其元...
它实现了 MDX语言、XML解析、JOLAP规范。它从SQL 和其它数据源读取数据并把数据聚集在内存缓存中,然后经过Java API用多维的方式对结果进行展示,同时可以不写 SQL就能分析存储于 SQL 数据库的庞大数据集,可以封装...
它实现了 MDX语言、XML解析、JOLAP规范。它从SQL 和其它数据源读取数据并把数据聚集在内存缓存中,然后经过Java API用多维的方式对结果进行展示,同时可以不写 SQL就能分析存储于 SQL 数据库的庞大数据集,可以封装...
4、Oracle Olap API虽与JOlap不兼容,但是两者的概念非常类似,他们与其他API最大的不同之 <br>处是非常强调元数据与数据的区别,这一点从两者的文档中可以直观的看到:直接的对象体系及操作是 <br>没有...
它实现了 MDX语言、XML解析、JOLAP规范。它从SQL 和其它数据源读取数据并把数据聚集在内存缓存中,然后经过Java API用多维的方式对结果进行展示,同时可以不写 SQL就能分析存储于 SQL 数据库的庞大数据集,可以封装...
它实现了 MDX语言、XML解析、JOLAP规范。它从SQL 和其它数据源读取数据并把数据聚集在内存缓存中,然后经过Java API用多维的方式对结果进行展示,同时可以不写 SQL就能分析存储于 SQL 数据库的庞大数据集,可以封装...