BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Olap4j 1.0: OLAPサーバー用Java API

Olap4j 1.0: OLAPサーバー用Java API

ブックマーク

原文(投稿日:2011/06/24)へのリンク

約5年間の開発の後、ビジネス インテリジェンス(BI)ベンダーの Pentahoolap4j 1.0のリリースをアナウンスした。これは、 online analytical processing (OLAP) サーバー用の新しい共通のJavaAPIである。今回のリリースには以下のOLAPサーバーへのサポートを含んでいる。

以前から、標準の Java OLAP APIを提供しようという試みがあった。2000年に、Java Community Processは公式に標準OLAPインターフェースを要求しており、ベンダーを変更する際に実装を変える必要性を最小限にしようとした。JSR 69では、Java OLAP Interface (JOLAP)の意図は、「J2EE環境用の純粋Java APIは、ベンダー非依存なやり方で、OLAPデータやメタデータの生成と維持をサポートする」ものであった。しかし、2004年に承認された後、仕様は固まらずJava開発コミュニティには標準の Java OLAP APIが無いままだった。

InfoQはolap4j のスペックリードであり、 Pentahoにおいて分析のLead Architect であり、Mondrianの設立者である、 Julian Hyde氏にolap4jについて詳しく聞いた。

InfoQ: olap4j 1.0リリースの主要なフィーチャは何ですか?

olap4jはAPIで、Java環境からOLAPデータベースに繋いだり、そのメタデータにクエリしたり、MDXクエリを実行できるようになります。Javaプログラマーが異なったベンダーのOLAPサーバーに繋ぐことができる最初のJava APIです。

ドライバーは2つあります。(SOAPベースの標準)XMLA 用olap4jドライバーは、どのようなXML for Analysis (XMLA) サーバーと話すことができます。例えば、Microsoft SQL Server Analysis Services バージョン 2005 と2008、 Jedox Palo、SAP/BWがその中に入ります。Mondrian用のolap4jドライバーは同じJVM中のMondrianエンジンと話すことができます。Mondrianドライバーはolap4jのリファレンス実装であり、実際数年間にわたって、Mondrianの主要APIです。

olap4j APIと2つのドライバーは、すべて安定しており、数年間、製品で実績があります。

InfoQ: なぜ、開発コミュニティにとって、OLAPサーバーとインターフェースするオープンな標準を持ちことが重要なのでしょうか?

オープンな標準は、開発者、インテグレータ、エンドユーザーに選択肢を与えます。オープンな標準がないと、もしあなたがベンダーXのOLAPサーバーを使いたいとすると、ベンダーXのOLAPクライアントを使わなければならない、という制約があります。もしあなたがアプリケーションを作っているとすると、そのアプリケーションはそのベンダーに縛られることになります。olap4jを使うと、違うサーバーのほうがより良く、安くて、より速い、あるいは単に特定の顧客がそのサーバーのサイトライセンスを持っているという理由で、他のサーバーに切り替えることができます。そして広範囲のOLAPクライアントから選ぶことができます。

InfoQ: olap4jはJSR 69とどう違うのですか?

私の意見では、JSR 69にはいくつかの欠点があります。かなり高レベルのインターフェースで、ユーザーは非常にリッチなメタモデル( Common Warehouse Metamodelに基づいた)とリッチなクエリモデルを理解する必要があります。クエリはAPIを呼ぶことで作られ、SQLやMDXのような言語でテキスト的に指示するのではありません。それは既存の実装を持つベンダーのグループが支援してました。彼らは様々なクエリ作成APIの妥協案を見つけようとしましたが、行き詰ってしまいました。マーケットトップのOLAPサーバーを生み出したMicrosoftは、提案された仕様のコントリビューターではありませんでした。

同じ頃、Microsoftは自分達のOLAP標準を作りました、OLE DB for OLAP(CとC++環境用)、 ADO MD(C# や VBのような.NET言語用)、XMLA (SOAPの一種でSaaS向け)。これらの標準はより単純で、クエリ言語(MDX)をベースにしているので、リレーショナル データベース(ODBC, JDBC)と話すには、開発者が馴染んでいるAPI以上のものでした。これらの標準はそれぞれの環境で普及しましたが、もちろんMicrosoftはJava用の標準を作ることには、過去も現在も興味がありません。

olap4jは、JDBCで馴染んでいるパラダイムを採用することによって、直ぐにJava開発者が使えることを目指しました。例えば、接続を作成し、命令を用意し、実行するコードは、olap4jとJDBCとで大変似ています。差はクエリ言語がMDXで、SQLではないこと、そして、結果が多次元のCellSetであり、行と列から成るResultSetではない、ということです。

olap4jが文字通りJDBCの拡張である、という事実は、JDBCコネクションと同様にolap4jコネクション用のコネクションプールやディレクトリサービスのようなインフラを使うことができる、ということです。

InfoQ:そのMDXクエリはどのように生成されるのですか?

SQLは一般にJDBCアプリケーション中にハードコードされますが、OLAPの目的は、インタラクティブなデータ探索なので、クエリは動的に形成される必要があります。olap4jはクエリを段階的に作成し、それからクエリをMDXに変換するクエリモデルを提供しています。olap4jとJSR 69や Oracleの OLAP API のようなクエリモデル中心のAPIの一番の違いは、olap4jでは、クエリモデルはオプションだ、ということです。もしあなたがアプリケーション開発者で、あなたのアプリケーションがいつも同じチャートやデータテーブルを示す必要があるなら、あなたはMDXクエリをハンドで書くことができます。もしあなたがOLAPツール開発者ならolap4jのクエリモデルを使うことができ、あるいは自分自身のクエリモデルを作成することだってできます。バージョン1に到達しましたが、olap4jのクエリモデルはまだ開発中です。良いニュースは、それはAPIのコア部分ではない、そしてAPIの他の部分を壊さずに進化できる、ということです。

その結果、olap4jは、完成するはずだったJSR 69やOracleのOLAP APIよりも小さく、単純です。このことはAPIを学習しているアプリケーション開発者や実装しようとしているサーバーやドライバー開発者にもいい話です。

InfoQ: 今までJOLAPは、主に他の活動の基盤の役を果たしてきました。例えば、 HyperionのXMLAの実装は、JOLAP仕様に基づいたJava APIを使っています。しかし、仕様自体はこれまでこのような標準には、実際になりませんでした。JOLAP仕様自身を復活させたいと思っていますか?

いいえ、これまでの話を分かってください。olap4jは意図的に最も重要な現在のOLAP仕様、XMLAに非常によく従っています。両方のAPIからのメタデータは非常に似ており、クエリ言語、MDXは全く同じです。主な違いは、Java環境では、olap4jの方がXMLAよりもずっと使いやすいことです。そして多くの場合、XMLAよりもずっと効率的です。ドライバーがキャッシュを使ったり、XMLオーバーHTTPよりも効率のよいプロトコルを使うことができるからです。

InfoQ: JCPに仕様を提出するつもりですか?あるいはスタンドアローンな仕様とプロセスのままにしておくつもりですか?

我々は、olap4jをJDBCのようにJavaランタイムライブラリの標準の一部と考えて欲しいと思います。しかし、現時点で、JCPに提出する計画はありません。JSR 69の失敗が教えてくれたことの1つが、JCPから何がでてくるかよりも、市場のほうが重要だ、ということです。我々が望んでいるのは、olap4jドライバーがもっともっと多くのサーバーに追加されて、olap4jが市場で勢力と成ることです。サーバーベンダーがolap4jの優位性を理解すれば、願わくば、彼らは、JCP内でolap4jの提案において、我々を支持してくれるでしょう。

InfoQ: olap4jと他のJava OLAPインターフェース例えば、Oracle OLAP Java APIとの大きな違いは何ですか?

まず、OracleのAPIを含んでほかのAPIは、MDXクエリ言語を基にしていません。そうでなく、クエリはプログラムで作られています。そして、クエリ作成のAPIはベンダー毎に違う傾向にあります。

次に他のAPIはユーザーを1つのベンダーにロックします。

全てではないにしても殆どのOLAPサーバーは、XMLAを実装してます。そのため2つの重要な結果をもたらしました。1つは、これらのサーバー用のolap4jドライバーを作成するのは簡単で、XMLA用のオープンソースolap4jドライバーを出発点として使えばいいのです。2つ目は、これらのサーバーがXMLAを実装しているという事実は、MDX言語を実装している、ということです。なので、これらのサーバー用にネイティブolap4jドライバーを実装することは可能ですし、そうすればXMLAベースのドライバーよりもずっと効率的です。

InfoQ: olap4jの将来のリリースでは、他のOLAPサーバーをサポートする追加のドライバーの計画はありますか?

我々は特定のサーバーをサポートすることはコミットしませんが、オープンソース プロジェクトとして、コミュニティから価値のある貢献を受けたいと願っています。過去、他の人達がSAP/BW と Palo ドライバーを実装しています。2,3ヶ月後に Oracle/Essbase用のドライバーをリリースされるのを期待しています。

InfoQ: 他に開発コミュニティがolap4jについて知っておくべきことがありますか?

Olap4j 1.0で仕様になったコアAPIは安定しています。将来APIが進化しても後方互換性を維持することは約束しています。しかし olap4j 1.0で止まるわけではありません。互換性を維持しながらコアAPIを改善していきます。将来のバージョンで、APIに追加したいことがいくつかあります。

クエリモデルを拡張し、改善したいです。クエリモデルはMDXを生成するクライアント側のライブラリであることを思い出してください。なのでメタデータのクエリやクエリの実行用のAPIのコア部分を変えずに、クエリモデルを変更するのは簡単です。

セル-ライトバック用の実験的な機能があります。これによって、「仮説」のシナリオやアプリケーション計画ができます。これはいつもolap4jでオプションのフィーチャとなりますが、少なくと Palo とMondrianはそれを実装します。

別の実験的な機能として、サーバー上でデータが変わったら直ぐに、 'push' 通知を受けとる、というのがあります。あなたの目の前でセルの値が変わり、その変化を警告するために、一瞬色を変えるようなwebクライアントを想像してください。

olap4jは、オープンソース プロセスを使って、様々なプロジェクトや会社からのコントリビューターによって書かれていますので、仕様の将来のバージョンでは、もっと素晴らしいアイデアが現れることを期待しています

Olap4jは 会社とオープンソース プロジェクトの合同 で開発された。オープンな仕様で、(EPL) Eclipse Public Licenseの下でライセンスされている。

この記事に星をつける

おすすめ度
スタイル

BT