snuffkinの遊び場

IT関係、スポーツ、数学等に関することを、気が向いたときに書いてます。

Javaデータグリッド仕様「JSR-347」のリンク集

この記事は Java Advent Calendar 2012 の12日目です! 11日目は@kokuzawaさんでした。13日目は@zephiransasさんです。

そういえば、今日は12年12月12日ですね。皆さんは、12時12分12秒に何をしていましたか? 私はというと、、、普通に定食屋でお昼を食べてました。。。

早速ですが、JSR-347ってご存知ですか?数字で言われても、分かる訳ないですよね?
JSR-347は「Data Grids for the Java Platform」というJSRのことです。。。って名前を聞いても、普通は何を言っているのか分かりませんよね?

まず、Data Gridとは何なのか、JSR-347とは何なのか、簡単に説明します。

Javaデータグリッド仕様「JSR-347」って何?

そもそも、JSR-347以前にはJSR-107「JCACHE - Java Temporary Caching API」というものがあり、JavaキャッシュAPIが議論されていました。ここでは、keyやvalueにJavaオブジェクトを指定して保持できるキャッシュについて議論されていました。

世の中的にはビッグデータの流れもあり、単なるキャッシュではなく、分散実行等の機能を持ったものを「Data Grid」と呼び、JavaのData Gridの仕様を決めよう。。。というのが、JSR-347です。単刀直入に言うと、メモリに乗るデータは、分散環境でメモリに乗せて実行すれば高速に処理できるよね!ということ。

さて、実際にJSR-347のGitHubにあるProposed featuresを見てみると、以下のようなものが挙げられています(もっと具体的な内容については、このポストの最後にリンク集を付けたので、そこにあるスライドをご参照ください)。

  • Async API (Future based)
  • Distributed code execution
  • Group API
  • CDI (Contexts and Dependency Injection) integration
  • Transactions (JTA) integration
  • Operation Mode
  • Eventually Consistent API
  • Configuration
  • Drop-In Replacement for JSR-107 Compliant Caches

そして、これらを実際に実装しているOSSが、RedHat社を中心に開発しているInfinispanです。
InfinispanはJava(とScala)で実装されており、超簡単に言うと、In-Memoryでクラスタ環境で動作するKVS(KVSというと狭すぎますが)です。keyとvalueにはJavaオブジェクトを利用することができます。商用製品ですと、Oracle社のCoherenceが同様の機能を持っています。

そんな訳で、JavaのData Grid仕様に関する情報や、その実装であるInfinispanの情報をまとめてみました。興味が湧いた方は是非この先のリンクをご覧ください。

JSR-347関連リンク

Infinispan関連リンク