ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
Apache GEODE Meetup Tokyo #1
超高速処理とスケーラビリティを両立するApache GEODE
2016/6/9
ウルシステムズ株式会社
http://www.ulsystems.co.jp
mailto:info@ulsystems.co.jp
Tel: 03-6220-1420 Fax: 03-6220-1402
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 1
About Me
山河 征紀
Business
Private
• GEODE歴:9年(Since 2008)
• GEODEバグ報告数:nnn 件
• ランナー
• 横浜マラソン2016:4h17m
• 目標は今年中のサブ4
• アルピニスト
• 目標はココ
ULS 2
Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
超高速処理とスケーラビリティを
両立するApache GEODE
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 3
Apache GEODEとは
ざっくりいうとインメモリーの分散KVS
–データを各マシンのメモリーに分散配置
–大量トランザクションに対する高速処理
–動的なスケーラビリティ
–ミッションクリティカルでの利用
採用実績
–欧米の金融機関
–政府、防衛
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 4
近年様々なデータストアが誕生
選択肢は多種多様に
NoSQL
In-Memory DataGrid
In-Memory Cache
Traditional Database
Columnar Database
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 5
日本はRDB命
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 6
サーバ
サーバ
サーバ
アプリケーションのスケールアウトは容易だが、RDBがボト
ルネックに
良くあるシステムの課題
JVM
JVM
JVM
アプリケーション
アプリケーション
アプリケーション
RDB
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 7
RDBボトルネック対策
スケールアップ 水平分割
NoSQL キャッシュの利用
×ネットワークを跨いでいる
時点で遅い
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 8
アプリケーションと同じメモリー上にデータを保持すること
で超高速化
Apache GEODEを使用した超高速処理システム
サーバ
サーバ
サーバ
JVM
JVM
JVM
アプリケーション
アプリケーション
アプリケーション
・・・
無限のスケーラビリティ
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 9
メモリーアクセス vs RDBアクセス
ディスクアクセスしようものなら最悪・・・
Event Latency
CPUキャッシュアクセス(L2) 3 ns
メモリーアクセス 120 ns
SSDディスク I/O 150,000 ns
同一データセンター内通信 500,000 ns
ディスク I/O 10,000,000 ns
メモリーアクセスのみ通信+メモリーアクセス・・・
Memory
SSD
Disk
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 10
メモリー内のデータをどのように分散するか?
 アプリケーションが扱うデータは大きく分けて「マスターデ
ータ」と「トランザクションデータ」に分類できる
マスターデータ
トランザクション
データ
• 割と固定的
• データ数が急激に増えないもの
• 更新が少なく参照が多い
• データの一部が変動する
• 更新処理が多い
• 日毎にデータが増加するもの
特性
顧客情報、商品情報等
取引情報、予約情報等
レプリケーション
パーティション
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 11
レプリケーションとパーティション
データの特性によってレプリケーションとパーティションを
使い分ける
パーティションレプリケーション
すべてのマシンで同一のデータ
を保持する
何れかのマシンにデータが存在
する
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 14
 全てのサーバに、全てのデータが存在するため高速なデータ
取得が可能
レプリケーションデータの読み込み
Full
Replication
クライアントA
クライアントC
クライアントB
クライアントD
A B
C
A B
D
A
C D
B
C D
Read A
Read C
Read A
Read C
Read B
Read D
Read B
Read D
D C
B A
凡例
A データ
メモリ空間
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 15
 全てのマシンのデータを更新した後、呼び出し元へ応答する
 マシン数が多いほど、書き込み性能が劣化する可能性がある
Full
Replication
クライアント
A B
C
A B
D
A
C D
B
C D
Write A
D C
B A
②更新
①更新
②更新
②更新
③確認
③確認
③確認
Reply
④応答
レプリケーションデータの書き込み
凡例
A データ
メモリ空間
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 16
 接続先のマシンのデータを更新した後、呼び出し元へ応答する
 その他のデータ更新は非同期で行われる
(更新処理性能は安定するが、一貫性は緩い)
Full
Replication
クライアント
A B
C
A B
D
A
C D
B
C D
Write A
D C
B A
②更新
①更新
②更新
②更新
Reply
②応答
レプリケーションデータの書き込み(非同期)
凡例
A データ
メモリ空間
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 17
 全マシンが同時にダウンしない限りデータの消失はない
 クライアントとの接続については、自動的に切り替わる
Full
Replication
クライアント
A B
C
A B
D
A
C D
B
C D
Read A
D C
B A
レプリケーションのフェイルオーバ
凡例
A データ
メモリ空間
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 18
 データを分割して保持することで、メモリーを節約すること
が出来る
 データが存在しない場合は、データが配置されたマシンに自
動的に問い合わせが行われる
クライアント
A
C
B
Read A
D
Read B
B
C
A
D
パーティションデータの読み込み
凡例
A
A
データ
データのバックアップ
メモリ空間
Read D
B
D
問い合わせ
問い合わせ
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 19
 データ更新処理はプライマリデータとそのバックアップコピ
ーに対してのみ行なわれる
 多数のマシンが存在した場合でも一定した処理速度となる
クライアント
AWrite A
②更新
A
①更新
③確認
Reply
④応答
B
C
D
D
B
C
パーティションデータの書き込み
凡例
A
A
データ
データのバックアップ
メモリ空間
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 20
 ダウンしたマシンのデータは他のマシンに引き継がれる
 クライアントとの接続については、自動的に切り替わる
クライアント
D
A B
C
Read A
C
B
DA
A
Primary
Primary
Primary
Primary
Primary
A
パーティションのフェイルオーバ
凡例
A
A
データ
データのバックアップ
メモリ空間
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 21
レプリケーション/パーティション サマリー
マスターデータ
トランザクション
データ
レプリケーション
パーティション
顧客情報
商品情報等
取引情報
予約情報等
→データ参照時の性能を最速に
→データ更新、データ参照時の性能を安定させる
→データを分散配置することでメモリ使用量を抑える
Read ○ データ量 ◎
Write ◎
同時
接続数
◎
Read ◎ データ量 △
Write △
同時
接続数
◎
性能 拡張性
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 22
データは、Javaのヒープメモリ上にJavaのオブジェクトと
して管理される
GEODEにおけるデータ管理
JVM
Cache
Region
Key Value
ABC
GGG
XYG
Region
…
Region
…
• インメモリデータへのエントリポイント
• アプリケーションはキャッシュを介して、データへの一連の操作を行う
• 任意のリージョンにより構成
• 論理的なデータのグループ(RDBにおけるテーブルのイメージ)
• Key-Value形式でのデータ管理
• 任意のオブジェクトに対して、一意のKeyを指定
• スキーマの概念はなく、任意のオブジェクトを格納
Cache
Region
public class Employee {
private int employeeNo;
private String firstName;
private String lastName;
private String deptCode;
・・・
・・・
}
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 23
Region定義方法
XMLでRegionを定義
<cache>
<region name=“replicateRegion">
<region-attributes refid=“REPLICATE“ />
</region>
<region name=“partitionRegion">
<region-attributes refid=“PARTITION“ />
</region>
</cache>
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 24
データへの接続形態は2つ
クラスター・トポロジー
• キャッシュへの管理責任が生じる
• プロセス間で必要に応じてデータをやり取りする
• クライアントAPI(Java、C++、.NET、REST)を使用して接続
することが出来る
• 取得したデータは、それぞれの開発言語のオブジェクトとなる
Peer to Peer接続
Client-Server接続
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 25
 リージョンデータへアクセスする際は、以下の何れかのAPI
を使用する
データアクセスAPI
取得方法 説明
追加/更新/
削除
参照
Mapインター
フェースAPI
put,get,remove等の
java.util.Mapインターフェ
ースを使用したデータアク
セス
○ ○
OQL
(Object Query
Language)
SQLライクなクエリを使用
したデータアクセス
× ○
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 26
MapインターフェースAPI
Java.util.Map感覚でKeyを指定してデータへアクセス
// XMLを指定してCacheを取得
Cache cache = new CacheFactory()
.set("cache-xml-file", “cache.xml").create();
// CacheよりexampleRegionを取得
Region<Integer, String> region = cache.getRegion(“exampleRegion");
Integer key = 1;
// データ登録
region.put(key, message);
// データ取得
String value = region.get(key, message);
// データ削除
region.remove(key);
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 27
OQL(Object Query Language)
Key以外でのデータアクセス
select *
from /Employee emp
where emp.deptCode = '12B'
public class Employee {
private int employeeNo;
private String firstName;
private String lastName;
private String deptCode;
・・・
・・・
}
パーティションリージョンのOQL処理レプリケーションリージョンのOQL処理
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 28
OQLの実装
OQL専用のクラスを使用してクエリー実行
// XMLを指定してCacheを取得
Cache cache = new CacheFactory().set("cache-xml-file", “cache.xml").create();
// CacheよりQueryService取得
QueryService queryService = cache.getQueryService();
// Query作成
Query query = queryService
.newQuery("select * from /Employee emp where emp.deptCode='12B'");
// Query実行
SelectResults result = query.execute();
Collection<?> collection = ((SelectResults<?>)result).asList();
for (Object e: collection) {
System.out.println(e);
}
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 29
イベント処理
イベント通知を受けたいデータの条件を予め登録しておくこ
とで、Push型イベント通知を受けることが出来る
A B
C D
クライアン
ト 更新
サーバ
クライアント
クライアント
登録したクライアントのみが更新前
後のデータをイベントとして取得
Create データの追加
Update データの更新
Destroy データの削除
Invalidate データ無効化
イベント種別
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 30
 イベント通知の方法は2つ
イベント通知方法
方法 説明 特徴
Interest
Registration
イベントとして取得したい
リージョンのKeyを指定
(正規表現指定可能)
• ContinuousQueryより
高速
Continuous
Query
SQLライクなクエリにより
イベントの条件を指定
• Key以外でイベントを取
得出来る
• InterestRegistrationよ
りサーバへの負荷が高い
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 31
イベント処理の実装
XMLでイベント処理を行うクラスを設定
<cache>
<region name=“exampleRegion">
<region-attributes refid=“PARTITION“ />
<cache-listener>
<class-name>example.MyCacheListener</class-name>
</cache-listener>
</region>
</cache>
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 32
イベント処理の実装
イベント処理では、イベント種別に応じたCacheListenerの
コールバックメソッドが呼ばれる
public class MyCacheListener
implements CacheListener<String, String>, Declarable {
@Override
public void afterCreate(EntryEvent<String, String> event) {
// KeyとValueを標準出力へ出力します
System.out.println(event.getKey() + "> " + event.getNewValue());
}
@Override
public void afterUpdate(EntryEvent<String, String> event) {
・・・・
}
@Override
public void afterDestroy(EntryEvent<String, String> event) {
・・・・
}
}
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 33
今後のテーマ
ユースケース/事例GEODEハンズオン
GEODE
その他機能
正式リリースに向けた
追加機能
他の分散処理製品
との違い
GEODEの
インテグレーション

超高速処理とスケーラビリティを両立するApache GEODE

  • 1.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by Apache GEODE Meetup Tokyo #1 超高速処理とスケーラビリティを両立するApache GEODE 2016/6/9 ウルシステムズ株式会社 http://www.ulsystems.co.jp mailto:info@ulsystems.co.jp Tel: 03-6220-1420 Fax: 03-6220-1402
  • 2.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 1 About Me 山河 征紀 Business Private • GEODE歴:9年(Since 2008) • GEODEバグ報告数:nnn 件 • ランナー • 横浜マラソン2016:4h17m • 目標は今年中のサブ4 • アルピニスト • 目標はココ
  • 3.
    ULS 2 Copyright ©2011-2013 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 超高速処理とスケーラビリティを 両立するApache GEODE
  • 4.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 3 Apache GEODEとは ざっくりいうとインメモリーの分散KVS –データを各マシンのメモリーに分散配置 –大量トランザクションに対する高速処理 –動的なスケーラビリティ –ミッションクリティカルでの利用 採用実績 –欧米の金融機関 –政府、防衛
  • 5.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 4 近年様々なデータストアが誕生 選択肢は多種多様に NoSQL In-Memory DataGrid In-Memory Cache Traditional Database Columnar Database
  • 6.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 5 日本はRDB命
  • 7.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 6 サーバ サーバ サーバ アプリケーションのスケールアウトは容易だが、RDBがボト ルネックに 良くあるシステムの課題 JVM JVM JVM アプリケーション アプリケーション アプリケーション RDB
  • 8.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 7 RDBボトルネック対策 スケールアップ 水平分割 NoSQL キャッシュの利用 ×ネットワークを跨いでいる 時点で遅い
  • 9.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 8 アプリケーションと同じメモリー上にデータを保持すること で超高速化 Apache GEODEを使用した超高速処理システム サーバ サーバ サーバ JVM JVM JVM アプリケーション アプリケーション アプリケーション ・・・ 無限のスケーラビリティ
  • 10.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 9 メモリーアクセス vs RDBアクセス ディスクアクセスしようものなら最悪・・・ Event Latency CPUキャッシュアクセス(L2) 3 ns メモリーアクセス 120 ns SSDディスク I/O 150,000 ns 同一データセンター内通信 500,000 ns ディスク I/O 10,000,000 ns メモリーアクセスのみ通信+メモリーアクセス・・・ Memory SSD Disk
  • 11.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 10 メモリー内のデータをどのように分散するか?  アプリケーションが扱うデータは大きく分けて「マスターデ ータ」と「トランザクションデータ」に分類できる マスターデータ トランザクション データ • 割と固定的 • データ数が急激に増えないもの • 更新が少なく参照が多い • データの一部が変動する • 更新処理が多い • 日毎にデータが増加するもの 特性 顧客情報、商品情報等 取引情報、予約情報等 レプリケーション パーティション
  • 12.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 11 レプリケーションとパーティション データの特性によってレプリケーションとパーティションを 使い分ける パーティションレプリケーション すべてのマシンで同一のデータ を保持する 何れかのマシンにデータが存在 する
  • 13.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 14  全てのサーバに、全てのデータが存在するため高速なデータ 取得が可能 レプリケーションデータの読み込み Full Replication クライアントA クライアントC クライアントB クライアントD A B C A B D A C D B C D Read A Read C Read A Read C Read B Read D Read B Read D D C B A 凡例 A データ メモリ空間
  • 14.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 15  全てのマシンのデータを更新した後、呼び出し元へ応答する  マシン数が多いほど、書き込み性能が劣化する可能性がある Full Replication クライアント A B C A B D A C D B C D Write A D C B A ②更新 ①更新 ②更新 ②更新 ③確認 ③確認 ③確認 Reply ④応答 レプリケーションデータの書き込み 凡例 A データ メモリ空間
  • 15.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 16  接続先のマシンのデータを更新した後、呼び出し元へ応答する  その他のデータ更新は非同期で行われる (更新処理性能は安定するが、一貫性は緩い) Full Replication クライアント A B C A B D A C D B C D Write A D C B A ②更新 ①更新 ②更新 ②更新 Reply ②応答 レプリケーションデータの書き込み(非同期) 凡例 A データ メモリ空間
  • 16.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 17  全マシンが同時にダウンしない限りデータの消失はない  クライアントとの接続については、自動的に切り替わる Full Replication クライアント A B C A B D A C D B C D Read A D C B A レプリケーションのフェイルオーバ 凡例 A データ メモリ空間
  • 17.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 18  データを分割して保持することで、メモリーを節約すること が出来る  データが存在しない場合は、データが配置されたマシンに自 動的に問い合わせが行われる クライアント A C B Read A D Read B B C A D パーティションデータの読み込み 凡例 A A データ データのバックアップ メモリ空間 Read D B D 問い合わせ 問い合わせ
  • 18.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 19  データ更新処理はプライマリデータとそのバックアップコピ ーに対してのみ行なわれる  多数のマシンが存在した場合でも一定した処理速度となる クライアント AWrite A ②更新 A ①更新 ③確認 Reply ④応答 B C D D B C パーティションデータの書き込み 凡例 A A データ データのバックアップ メモリ空間
  • 19.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 20  ダウンしたマシンのデータは他のマシンに引き継がれる  クライアントとの接続については、自動的に切り替わる クライアント D A B C Read A C B DA A Primary Primary Primary Primary Primary A パーティションのフェイルオーバ 凡例 A A データ データのバックアップ メモリ空間
  • 20.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 21 レプリケーション/パーティション サマリー マスターデータ トランザクション データ レプリケーション パーティション 顧客情報 商品情報等 取引情報 予約情報等 →データ参照時の性能を最速に →データ更新、データ参照時の性能を安定させる →データを分散配置することでメモリ使用量を抑える Read ○ データ量 ◎ Write ◎ 同時 接続数 ◎ Read ◎ データ量 △ Write △ 同時 接続数 ◎ 性能 拡張性
  • 21.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 22 データは、Javaのヒープメモリ上にJavaのオブジェクトと して管理される GEODEにおけるデータ管理 JVM Cache Region Key Value ABC GGG XYG Region … Region … • インメモリデータへのエントリポイント • アプリケーションはキャッシュを介して、データへの一連の操作を行う • 任意のリージョンにより構成 • 論理的なデータのグループ(RDBにおけるテーブルのイメージ) • Key-Value形式でのデータ管理 • 任意のオブジェクトに対して、一意のKeyを指定 • スキーマの概念はなく、任意のオブジェクトを格納 Cache Region public class Employee { private int employeeNo; private String firstName; private String lastName; private String deptCode; ・・・ ・・・ }
  • 22.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 23 Region定義方法 XMLでRegionを定義 <cache> <region name=“replicateRegion"> <region-attributes refid=“REPLICATE“ /> </region> <region name=“partitionRegion"> <region-attributes refid=“PARTITION“ /> </region> </cache>
  • 23.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 24 データへの接続形態は2つ クラスター・トポロジー • キャッシュへの管理責任が生じる • プロセス間で必要に応じてデータをやり取りする • クライアントAPI(Java、C++、.NET、REST)を使用して接続 することが出来る • 取得したデータは、それぞれの開発言語のオブジェクトとなる Peer to Peer接続 Client-Server接続
  • 24.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 25  リージョンデータへアクセスする際は、以下の何れかのAPI を使用する データアクセスAPI 取得方法 説明 追加/更新/ 削除 参照 Mapインター フェースAPI put,get,remove等の java.util.Mapインターフェ ースを使用したデータアク セス ○ ○ OQL (Object Query Language) SQLライクなクエリを使用 したデータアクセス × ○
  • 25.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 26 MapインターフェースAPI Java.util.Map感覚でKeyを指定してデータへアクセス // XMLを指定してCacheを取得 Cache cache = new CacheFactory() .set("cache-xml-file", “cache.xml").create(); // CacheよりexampleRegionを取得 Region<Integer, String> region = cache.getRegion(“exampleRegion"); Integer key = 1; // データ登録 region.put(key, message); // データ取得 String value = region.get(key, message); // データ削除 region.remove(key);
  • 26.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 27 OQL(Object Query Language) Key以外でのデータアクセス select * from /Employee emp where emp.deptCode = '12B' public class Employee { private int employeeNo; private String firstName; private String lastName; private String deptCode; ・・・ ・・・ } パーティションリージョンのOQL処理レプリケーションリージョンのOQL処理
  • 27.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 28 OQLの実装 OQL専用のクラスを使用してクエリー実行 // XMLを指定してCacheを取得 Cache cache = new CacheFactory().set("cache-xml-file", “cache.xml").create(); // CacheよりQueryService取得 QueryService queryService = cache.getQueryService(); // Query作成 Query query = queryService .newQuery("select * from /Employee emp where emp.deptCode='12B'"); // Query実行 SelectResults result = query.execute(); Collection<?> collection = ((SelectResults<?>)result).asList(); for (Object e: collection) { System.out.println(e); }
  • 28.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 29 イベント処理 イベント通知を受けたいデータの条件を予め登録しておくこ とで、Push型イベント通知を受けることが出来る A B C D クライアン ト 更新 サーバ クライアント クライアント 登録したクライアントのみが更新前 後のデータをイベントとして取得 Create データの追加 Update データの更新 Destroy データの削除 Invalidate データ無効化 イベント種別
  • 29.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 30  イベント通知の方法は2つ イベント通知方法 方法 説明 特徴 Interest Registration イベントとして取得したい リージョンのKeyを指定 (正規表現指定可能) • ContinuousQueryより 高速 Continuous Query SQLライクなクエリにより イベントの条件を指定 • Key以外でイベントを取 得出来る • InterestRegistrationよ りサーバへの負荷が高い
  • 30.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 31 イベント処理の実装 XMLでイベント処理を行うクラスを設定 <cache> <region name=“exampleRegion"> <region-attributes refid=“PARTITION“ /> <cache-listener> <class-name>example.MyCacheListener</class-name> </cache-listener> </region> </cache>
  • 31.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 32 イベント処理の実装 イベント処理では、イベント種別に応じたCacheListenerの コールバックメソッドが呼ばれる public class MyCacheListener implements CacheListener<String, String>, Declarable { @Override public void afterCreate(EntryEvent<String, String> event) { // KeyとValueを標準出力へ出力します System.out.println(event.getKey() + "> " + event.getNewValue()); } @Override public void afterUpdate(EntryEvent<String, String> event) { ・・・・ } @Override public void afterDestroy(EntryEvent<String, String> event) { ・・・・ } }
  • 32.
    ULS Copyright © 2011-2016UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 33 今後のテーマ ユースケース/事例GEODEハンズオン GEODE その他機能 正式リリースに向けた 追加機能 他の分散処理製品 との違い GEODEの インテグレーション

Editor's Notes

  • #5 【概念的な背景】 データが増える Txが増える → パフォーマンス求められる スケールアウトが重要
  • #8 ・DBの方もキャッシュぐらいかいとく ・キャッシュや分散DBでもN/W超えるよね ・O/Rマッピングの処理都下も無駄。必要なのはObject。DB依存の処理をしている
  • #10 ・DBは使うけど、ログとか過去データとか