oracle coherence...• rest api経由で、さまざまな言語からhttp...
TRANSCRIPT
Oracle Coherence
インメモリ・データグリッドの仕組みと活用
日本オラクル株式会社Fusion Middleware事業統括本部 - ソリューション本部 Application Gridソリューション部シニアセールスコンサルタント 二條智文
Copyright© 2011, Oracle. All rights reserved. 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright© 2011, Oracle. All rights reserved.
Agenda
• インメモリ・データグリッドとは
• Oracle Coherence概要• Coherenceとは
• Partitioned Cache
• In-Place Processing
• データ・アフィニティ
• データストア連携
• イベント
• 適用パターンと事例
• まとめ
3
Copyright© 2011, Oracle. All rights reserved.
Agenda
• インメモリ・データグリッドとは
• Oracle Coherence概要• Coherenceとは
• Partitioned Cache
• In-Place Processing
• データ・アフィニティ
• データストア連携
• イベント
• 適用パターンと事例
• まとめ
4
Copyright© 2011, Oracle. All rights reserved.
データグリッドとは
• 複数マシン上で大量データを分散管理する分散データ管理機能
分散データ管理
• 分散された大量データを効率的に処理するためのデータ処理機能
分散データ処理
• 複数マシンを管理するためのクラスタ機能
クラスタ管理
5
大量データを効率的に扱うためのアーキテクチャ
3つの特長
Copyright© 2011, Oracle. All rights reserved.
Coherenceのインメモリ・データグリッド
• インメモリ分散Key-Value Store(KVS)
• インメモリ・データ可用性
• 拡張・縮退時の自律的なデータ・リバランス
+
• データアフィニティ
• In-Place Processing
• データストア連携
• イベント処理 etc
+
• 専用のクラスタ管理プロトコル(TCMP)• 動的な拡張・縮退
• 自律分散型でSPOF/SPOBなし
• 高速な障害検知
6
分散データ管理
分散データ処理
クラスタ管理
Copyright© 2011, Oracle. All rights reserved. 7
Coherenceインメモリ・
データグリッド> 分散KVS
Copyright© 2011, Oracle. All rights reserved.
Key-Value Store(KVS)とは
• KVS: Key(キー)とValue(値)をセットにしたシンプルなデータ構造をストアする仕組み• 連想配列やMapなどで表現されるデータ型
• KeyとValueは1対1で管理し、Valueに対するアクセスは必ずKeyを指定する
8
Key Value
従業員番号
従業員名前年齢
タイトルetc
java.util.Mappublic Object put(Object key, Object value);public Object get(Object key);public Object remove (Object key);
Mapの例) Javaのjava.util.Mapインタフェース
例) 従業員
Copyright© 2011, Oracle. All rights reserved.
Key-Value Store(KVS)とは
• メリット• Keyを起点にするシンプルなデータアクセスのためデータ分散が
容易 =分散KVS
• スケールアウト型のアーキテクチャと親和性が高い
• デメリット• 一般的にはデータモデルがシンプルなため、RDBが得意とするデ
ータの正規表現や多角的な検索、複雑なトランザクション処理には向いていない
• 一般的なKVSを利用する際の考慮点!KVSに合わせたデータ設計・アプリケーション設計が必要
9
CoherenceにはKVSのこのようなデメリットを払拭するためのデータ処理機能が付属(アフィニティ+In-Place Processing )
Copyright© 2011, Oracle. All rights reserved.
Agenda
• インメモリ・データグリッドとは
• Oracle Coherence概要• Coherenceとは
• Partitioned Cache
• In-Place Processing
• データ・アフィニティ
• データストア連携
• イベント
• 適用パターンと事例
• まとめ
10
Copyright© 2011, Oracle. All rights reserved. 11
Oracle Coherenceとは
• インメモリ・データグリッド製品• 複数サーバに渡る分散KVS
• 分散データの可用性
• 動的な追加・縮退に対する自動リバランス機能
• さまざまなデータ処理機能
• アフィニティ/In-Place Processing/データストア連携/イベント機能 etc
• 高度なクラスタ管理機能
• Javaベース• 実体はJavaクラスライブラリ(100% Pure Java)
• 3rd Partyライブラリなし
• クライアントライブラリはJava/C++/.NET
• REST API経由で、さまざまな言語からHTTPによるアクセスが可能
• JavaScript/Python/Ruby/PHP etc
クライアント(Java, .NET, C++)
イベント通知
WAN
データストア
他サイトのクラスタ
サーバを跨る分散KVS
In-Place
Processing
Coherenceアーキテクチャ
Web
サービスDB
データストア連携
Copyright© 2011, Oracle. All rights reserved. 12
Partitioned Cache• Partitioned Cache
• 複数JVMにデータを分散して配置
• Key単位で論理的なPartitionに紐付けてデータを分散(=分散KVS)
• 透過的なデータアクセス
• 物理的な配置はCoherence内に隠蔽
• 動的なノードの増減
• 自動的なデータをリバランス
• データアクセスとパラレルに実施
• Map(Key-Value)型インタフェース
• Coherenceは他のキャッシュタイプも提供
• Replicated Cache/Near Cache etc
アプリケーション
Coherence
JVM
A
JVM
B
JVM
C
JVM
D
A B C D
NamedCache cache =
CacheFactory.getCache(“orders”);
Order o1 = (Order)cache.get(key1);
cache.put(key2, o2);
位置を意識しない透過的なアクセス
Partitioned Cache
Copyright© 2011, Oracle. All rights reserved.
Partitioned Cacheのデータ分散方式
13
• Coherenceは内部で論理的なパーティションを保持
• パーティションとメンバー(JVM単位)の割り当て表を各メンバーが保持
• パーティション数が均等になるように各メンバーに割り当てられる
• メンバー情報は専用のクラスタ用プロトコル(TCMP)にて整合性を担保
• Keyのハッシュ値からパーティションにマッピング
Key Value Key Value Key Value
0 1 2 3 4 N●●●
5
Member
ID=1
Member
ID=2
Member
ID=3
Member
ID=4
パーティション算出ロジック① Key → パーティションIDKeyのシリアライス化したハッシュ値からパーティションIDを算出
キャッシュデータ
論理的なパーティション(デフォルト257、変更可能)
CoherenceクラスタメンバJVM(メンバIDによって区別される)
② パーティションID → メンバIDパーティション割り当て表から対象のメンバIDを取得
Copyright© 2011, Oracle. All rights reserved. 14
データアクセス時の動作
• Coherence APIがKeyから対象データを持つメンバーを特定• Key → パーティションIDの計算ロジック
• パーティションID → メンバIDのマッピング
• メンバが特定し、P2Pの通信によりデータを取得(1Hopのデータ取得)
• クラスタメンバー数が増えてもレイテンシは一定
• サーバ数が増えるとスループットは向上
Coherence
JVM 1
A
JVM 2
B
JVM 3 JVM 4
D
アプリケーションJVM
Application
Coherence API
アプリケーションJVM
Application
Coherence API
get(A)get(C)
Coherenceクラスタ
C
これにより
Copyright© 2011, Oracle. All rights reserved.
Machine 1
インメモリデータの可用性
• プライマリに対してバックアップを持つことで可用性を担保• パーティション単位で配置を決定
• バックアップは物理的に異なるマシン上に作成される(Machine-Safe)
15
JVM 1
P
B
JVM 2
P
B
1 2
3 5
Machine 2
JVM 3
P
B
JVM 4
P
B
3 4
1 7
Machine 3
JVM 5
P
B
JVM 6
P
B
5 6
2 8
Machine 4
JVM 6
P
B
JVM 8
P
B
7 8
6 4
データ配置イメージ
P: プライマリ
B: バックアップ
Copyright© 2011, Oracle. All rights reserved.
インメモリデータの可用性
• クライアントからのアクセス• Get操作はプライマリに対して実行
• Put操作はプライマリに対して実行→プライマリ・メンバーがバックアップを作成、バックアップ作成まで同期処理
16
Machine 1
JVM 1
P
B
JVM 2
P
B
1 2
3 5
Machine 2
JVM 3
P
B
JVM 4
P
B
3 4
1 7
Machine 3
JVM 5
P
B
JVM 6
P
B
5 6
2 8
Machine 4
JVM 6
P
B
JVM 8
P
B
7 8
6 4
データ配置イメージ
P: プライマリ
B: バックアップ
Client JVM
Coherence
API
Ap
plic
atio
n
get
put
A
B
B
Copyright© 2011, Oracle. All rights reserved.
Machine 1
インメモリデータの可用性
• 障害時はバックアップからデータを復旧させる
• 障害復旧の最小単位はパーティション単位① 無くなったプライマリをバックアップから復旧(インメモリで昇格)
② マシンセーフのためのプライマリの均等化(ネットワーク経由で移動)
③ バックアップの再作成(ネットワーク経由でコピー)
17
JVM 1
P
B
JVM 2
P
B
1 2
3 5
Machine 2
JVM 3
P
B
JVM 4
P
B
3 4
1 7
Machine 3
JVM 5
P
B
JVM 6
P
B
5 6
2 8
Machine 4
JVM 6
P
B
JVM 8
P
B
7 8
6 4
P: プライマリ
B: バックアップ
5
6
2
8
2
6 51
1
2 3
333
1
2
3
Copyright© 2011, Oracle. All rights reserved.
インメモリデータの可用性
• データ復旧時のデータアクセス• 障害に関連しないパーティションに含まれるデータは継続してアクセス
が可能
• 障害対象のデータは、パーティションがバックアップからプライマリに復旧したタイミングでアクセス可能、それまでは待機(アクセス中のリクエストは自動的にフェールオーバーしクライアントにエラーは返らず)
• プライマリの移動/バックアップの再作成中は、そのパーティションに含まれるデータへのアクセスは待機
18
クライアントのデータアクセスへの影響は局所的サーバ台数が多いほど、対象データも尐なくなるため
データ復旧作業は早く終わる
Copyright© 2011, Oracle. All rights reserved.
Coherenceのクラスタ管理
• 独自のクラスタ管理プロトコルを使用• Tangosol Cluster Management Protocol (略してTCMP)
• TCMPの機能• クラスタ内のデータ送受信
• 自律分散的なクラスタの障害検知/メンバシップ管理• 集中管理するマスタを持たないのでSPOF/SPOBがない
• 特長• スケーラビリティを考慮したコネクションレスのUDPを主に使用
• UDPユニキャストをベースとし、以下の機能を付加• 到達保証(ACK/NACK)
• Flow Control
• データの分割/復元
• Packet Bundling
19
Copyright© 2011, Oracle. All rights reserved.
Coherenceのクラスタ管理
• TCMPが使用するトランスポート• データ送受信、P2Pメンバー監視
• UDPユニキャスト
• メンバシップ管理、多数メンバーへの同一データ送信
• UDPマルチキャスト
• プロセスレベル障害検知
• TCP: プロセス間でRing状にコネクションを維持 (TCP Ring)
• マシンネット/ワークレベルの障害検知
• ICMP: マシンレベルのハートビート(IP Monitor)
20
Copyright© 2011, Oracle. All rights reserved.
プロセスレベルの監視
21
•クラスタメンバー(JVMプロセス)間でTCPコネクションをRing上に構築
• TCP Ring接続が切れた場合、障害とみなす
• 障害検出時間はネットワークのラウンドトリップタイムとなる(ミリ秒単位)
TCP Ring
Copyright© 2011, Oracle. All rights reserved.
リモートマシンへの定期的なping(コネクションレス)
連続するpingの失敗をマシンの障害とみなす
デフォルトでタイムアウト5秒×3回 = 15秒
22
IP Monitor
マシン/ネットワークレベルの監視
Copyright© 2011, Oracle. All rights reserved. 23
In-Place Processing
In-Place Processing
• データの存在する場所(JVM)で処理を実行する
• 無駄なデータ送受信を行わない
• Partitioned Cacheではデータの分散に沿ったパラレル処理が可能に
JVM
Logic
①データを取得
② データ操作 ③結果を格納
例:
10万件のデータを一括更新
10万件のデータの集計処理
JVM
①処理のInvoke
②キャッシュサーバのJVMで
データ処理
③結果をリターン
Logic
Copyright© 2011, Oracle. All rights reserved. 24
In-Place Processing
In-Place Processingによるパラレル処理
• Partitioned Cacheでは対象データを持つキャッシュサーバ全体で実行される
• 各JVMでパラレルに実行
• 集計処理などの場合、結果は呼出し側で自動的にマージされる
• パラレル処理の種類
• クエリ(データ検索)
• EntryProcessor(データ操作)
• EntryAggregator(データ集計)
例:
10万件のデータを一括更新
10万件のデータの集計処理
JVM
結果は自動的にマージ
Logic 10万件
JVM
Logic 5万件
JVM
Logic 5万件
Copyright© 2011, Oracle. All rights reserved. 25
サーバ追加による性能の向上
Partitioned Cacheによるスケーラビリティ• Partitioned Cache
• データを分散してキャッシュ
• データの分散によりサーバ間で処理の負荷を分散
• 処理性能の拡張
• サーバ追加により処理可能なリクエスト数を向上
• パラレル実行可能な処理の性能を向上
• メモリ領域の拡張
• サーバ追加により分散キャッシュの容量を拡張
JVM JVM JVM JVM JVM
アプリケーション
パラレル処理
サーバ追加Coherenceデータグリッド
動的拡張
Copyright© 2011, Oracle. All rights reserved.
データアフィニティ
• 関連するデータを同一のパーティションに格納する機能• 同一パーティションに存在=同一Coherenceノード上に存在
• 関連するデータの例• 注文ヘッダと注文明細/顧客と顧客請求データなどの親子関係
• 同一銘柄、通貨ペアなどの取引情報
• データアフィニティのメリット• 関連データを寄せることで、ネットワークをまたいだデータ送受信
をなくしインメモリによる高速なデータ処理が可能
• 実際の利用例)
• 顧客ごとの請求金額の月次計算
• 同一カテゴリデータを最小のネットワーク通信で一括して取得
• 関連データの高速マッチング(FXの同一通貨ペアなど)
26
Copyright© 2011, Oracle. All rights reserved.
データアフィニティの仕組み
• Keyの中に関連を特定するための情報を含めておく
• パーティション化に利用する関連Keyを抽出する(拡張ポイント)
• 関連を抽出するロジックは任意に作成可能
27
Key1-1 Value Key1-2 Value Key2-1 Value
0 1 2 3 4 N●●●
5
Key2-2 Value
論理的なパーティション
Member
ID=1
Member
ID=2
Member
ID=3
Member
ID=4
Key1
関連Key抽出実装例) return key.split(“-”)[0];
Key2
パーティション算出ロジック
実装例)ハイフン区切りのKeyの文字列の前方を関連Keyとして同一パーティションに格納する
Copyright© 2011, Oracle. All rights reserved.
データアフィニティとEntryProcessor
• EntryProcessorを利用すると複数Entryの操作をAtomicに操作することが可能
• データアフィニティにより関連データを同一ノード上に格納し、EntryProcessorを利用して関連データの一括操作をAtomicに実現可能• 関連データであれば、RDBのJoin相当の操作も可能(ただしSQL
による表現は不可)
• 通常はEntry単位の操作のAtomic性を、複数Entry操作のAtomic性に拡張可能
28
関連データを寄せることでKVSのデメリットの払拭が可能に
Copyright© 2011, Oracle. All rights reserved.
データアフィニティとEntryProcessor
• 動作イメージ• 注文ヘッダ、明細
29
Client JVM
Coherence
API
JVM
Partitioned Cache Service
EntryProcessor
public Object process(Entry entry) {
// 注文ヘッダ取得/更新
// 注文明細取得/更新
return 注文
}
注文ヘッダBackingMap
注文明細BackingMap
invoke(注文番号)
注文番号
注文番号-枝番
注文番号-枝番
注文番号-枝番
注文番号でアフィニティ
注文番号
注文番号-枝番
注文番号-枝番
注文番号-枝番
注文番号
注文番号-枝番
注文番号-枝番
注文番号-枝番
注文ヘッダと明細を取得してJoin
注文ヘッダ、明細をJoinした結果として返却
EntryProcessor内はトランザクショナル•複数更新のAtomic操作•暗黙的な排他制御
Copyright© 2011, Oracle. All rights reserved. 30
外部データソースとの連携
データソース連携
• 外部データソースとキャッシュデータの自動的な連携
• キャッシュデータの変更をDBに反映
• キャッシュへの読取時にDBからデータを取得してキャッシュに格納
• CacheStoreの実装クラスを作成してキャッシュに対して設定
• 更新時
• 同期書き込み/非同期書き込み
アプリケーション
put
JVM
A
CacheStore
JVM
CacheStore
JVM
CacheStore
JVM
CacheStore
B D
A C
insert
update
DB
get
select
Object load(Object key)
void store(Object key, Object value)
void erase(Object key)
Copyright© 2011, Oracle. All rights reserved.
Write-Behind
• 外部データソースへの非同期書込み• デフォルトでは同期書込み
• 変更データをキューで管理し、指定した間隔で書出しを行う
• メリット• 同一データに対する複数更新を一括実行
• 発行されるSQLの減尐
• 外部データソースの障害からアプリを隔離
• 書込み失敗 → リキュー → 次回以降のタイミングでリトライ
UserA
age=10, money=100
↓
age=11, money=100
↓
age=11, money=300
例:UserAを2回更新update user
set age = 11, money = 300
where id = „A‟
31
Copyright© 2011, Oracle. All rights reserved. 32
イベントリスナー
イベント• イベントを受け取るためのリスナーを登
録
• データの変更時にリスナーにイベントが通知される
• insert/update/deleteイベントを通知
• イベント受取り時に実行したい処理をリスナーに記述
• フィルタによる条件指定でリスンする対象データの絞込み
• データ操作の種類
• Key/Valueの比較条件
• イベントオブジェクトに格納される情報
• データ操作の種類
• 変更の前後データ
アプリケーション
Coherenceデータグリッド
JVM
A
JVM
B
JVM
C
JVM
D
③ イベント通知① リスナー登録 ② データ変更
Listener Listener
Filter
Event
Event
Event
Copyright© 2011, Oracle. All rights reserved. 33
リスナーの実装
NamedCache cache = CacheFactory.getCache(“stocks”);
cache.addMapListener(new MapListener() {
public void onInsert(MapEvent mapEvent) {
}
public void onUpdate(MapEvent mapEvent) {
}
public void onDelete(MapEvent mapEvent) {
}
}, filter, isLite);
Copyright© 2011, Oracle. All rights reserved.
Agenda
• インメモリ・データグリッドとは
• Oracle Coherence概要• Coherenceとは
• Partitioned Cache
• In-Place Processing
• データ・アフィニティ
• データストア連携
• イベント
• 適用パターンと事例
• まとめ
34
Copyright© 2011, Oracle. All rights reserved.
Coherence適用パターン
35
•DBボトルネックの解消
•メインフレームの負荷軽減
① 性能向上(レスポンス・スループット)
•DB定期メンテナンス/障害中のサービス継続性
② サービスの継続性向上
•バッチ処理のインメモリ・並列化による高速化
③ バッチ処理の高速化
•複数サイト間のセッション共有
•複数システム間の高速データ連携
④ システム間データ連携
•イベントによるリレー型の並列処理
•データ投入時の高速マッチング処理
⑤ イベント駆動処理
Copyright© 2011, Oracle. All rights reserved.
• コンテンツ管理システムのデータソースからサイトに必要なデータを高速収集する機能を実現- 透過的にDBとも連携
• 性能と共に可用性を両立(オープンソースのキャッシュでは実現不可)
• アクセス数が増えてもDBの負荷に直結しない
• パフォーマンス約10倍の速度向上
• 省リソース:従来の半分程度での実現
• 短期実装(3ヶ月弱)
ビジネス側のニーズ• ユーザー・レスポンス改善• リアルタイムに情報を提供したい• 1ページでより多くの情報を提供したい
システム側のニーズ• 高速化のためにキャッシュ機能は必須
→ 膨大なコンテンツを格納できる大容量を実現したい• リクエスト数の増加に依存しない安定したレスポンス性能• 障害時の復旧コストを下げたい
ECサイトのレスポンス劣化 → データグリッドによるレスポンス改善プロジェクト
プロジェクトの背景と目的
オラクル選定理由 オラクル導入範囲
• キャッシュ内に存在しないデータをデータベースから透過的に取得
• ノード追加により、バッファ量を拡張可能⇒将来の商品増加に対応可能
• 最低限の通信回数で多種・大量のデータを取得し、画面を構築
• 障害時にもインメモリ上のデータは自動復旧- データロストしない- アプリ側でエラー制御不要
コンテンツ管理システム
ヨドバシカメラ様 (www.yodobashi.com)
36
① 性能向上(レスポンス・スループット)
Copyright© 2011, Oracle. All rights reserved.
• インメモリグリッドの国内外の豊富な実績
• 単一ボトルネック点のないアーキテクチャ(アクセス増加に対し安定した性能を確保)
• 単なる性能改善だけでなく今後のサービス拡充に活用可能な柔軟性
• 無停止アプリ入れ替え(WebLogicプロダクション再デプロイメント機能)
システム上のニーズ
• バックエンド・ホストへのアクセス負荷を軽減したい。(ホストの増強はもうストップしたい)• メンテナンス時もサービス影響を最小化したい。• 今後のビジネスを支え続けられるシステム基盤を確立したい。
突発的な大量アクセスによるバックエンド負荷対策 → データグリッドによる確実かつ安定したレスポンスの維持
プロジェクトの背景と目的
オラクル選定理由 オラクル導入範囲
ホスト
WebLogic • セッション管理層- 大量アクセスに対処可能なキャパシティ
- セッションの信頼性向上
• 空席情報をホストからロード
• 応答性能約10倍の改善
• ピーク時処理の安定化(バーゲン時の空席照会リクエストに十分に対応)
全日空様 「ANA SKY WEB」 (www.ana.co.jp)
37
① 性能向上(レスポンス・スループット)
Copyright© 2011, Oracle. All rights reserved.
・DBメンテナンス時にも、インメモリをバッファとして使用できる仕組みを簡単に構築できた
・バッファ領域を拡張できるため、停止時間を長く取れる
・インメモリにカート情報を長時間保持していても、障害に対して可用性があるため、データロスとしない
ビジネス側のニーズ• 無停止運用により売上を確保する• システム無停止による顧客の満足度を向上• カート情報の長期間保持により、購入機会を向上
システム側のニーズ• DBの定期メンテナンスが必須であるが、その間もシステムを稼
動させたい• カートへのアクセスをインメモリで高速化しつつ、長期間保持+
障害時にもロストしないようにしたい
データベースの定期メンテナンス時にも、システムを止めず、オンラインの受注を継続して受け付けられる仕組みを構築また、カート情報を長期間保持することで、購入機会を向上
プロジェクトの背景と目的
オラクル選定理由 オラクル導入範囲
注文データの受付
• DBメンテナンス時にも、注文データを継続的に受付可能
• DBへの書き込みデータは、グリッド内のキュー領域に格納
• ノード追加により、バッファ量を拡張可能⇒メンテナンス時間の増加
• 障害時にも、インメモリ上のキューはバックアップから復元しデータロストしない
ショッピングカート
• グリッド上にカート情報を長期間保持、データ容量、可用性向上
38
国内・某ショッピングサイト
② サービス継続性向上
Copyright© 2011, Oracle. All rights reserved.
・インメモリ処理で大幅な高速化が期待できる
・今後の契約数増加に対応しやすく、コスト的にもリーズナブルなアーキテクチャ
・劇的な性能向上を実証- 従来方式の数倍の処理性能向上
(15時間→ 2時間弱)
ビジネス側のニーズ• 1年で契約数が倍増 – 今後も増加が予想されるが、一定時間
で課金のバッチ処理を完了させたい• サービス体系やキャンペーンによる料金構造の変化のスピード
に追従できるメンテナンス性が必要
システム側のニーズ• すでに課金処理の完了が夜間では終わらなくなっている
→ 日中業務にも影響• 契約数増加傾向に合わせた適正なコスト想定が望ましい• 既存のDBにアクセスする他アプリへの負荷影響を抑えたい
ひかりTV契約数が順調に増加 - 100万を超え、月次の課金バッチ処理の時間が課題に今後の契約数増加を見据えた、コスト適正かつスケーラブルな仕組みの検討
プロジェクトの背景と目的
オラクル選定理由 オラクル導入範囲
• 課金処理のためのデータ構造として一括ロード→ DBアクセスを効率化
• 契約数やサービス体系・パターンの増加に対応させてノード増加でリーズナブルにスケール可能
顧客情報
契約情報など
• 処理能力に余力ができた• ロジック記述柔軟性が高い→ これまでは後続の運用で
(人手で)実施していた課金処理も組み込み
→ - 作業コスト削減- 人為ミス削減
• 課金計算に必要な情報を適切にインメモリ保持
• 計算処理およびファイル生成作業をパラレル化
39
NTTぷらら様 – ひかりTV : 課金処理
③ バッチ処理の高速化
Copyright© 2011, Oracle. All rights reserved.
オンラインストア(一般向け)
オンラインストア(廉価品)
オンラインストア(高級層)
• ソリューション適用(異なるAPサーバー間のHTTPセッション共有の実現)が容易だった(Coherence*Webをインストールするだけ)
• ユーザー視点でのオンラインストアの高い可用性を実現できた(バックエンド・システムとの接続が切れてもカート情報を維持可能)
プロジェクトの背景と目的
オラクル選定理由 オラクル導入範囲
ビジネス側のニーズ• ユーザーが商品選択中に接続が切れるとカート情報が
消滅し、再度選択してもらう必要があった→ 顧客満足度低下の要因になっていた
• 各サイトの個別運用になっていて、相乗効果が出せていない
システム側のニーズ• オンラインストアのショッピングカートの信頼性を上げたい• オンラインストアのパフォーマンスも低下していた
→ 改善が必須
大手衣料品企業のオンラインストア : 複数の衣料品ブランドをグローバルに展開それぞれのブランドのサイトのパフォーマンス劣化、ショッピングカートの信頼性が低いことで顧客満足度が低下していた
• 150+ ノードのサーバーにCoherence*Web を導入→ スケーラビリティの確保+ セッションデータの統合
• カートの信頼性の向上• サイトのレスポンス向上
ピーク時 25万同時アクセス
• 異なるブランドのサイトを横断して、チェックアウトせずにカートを共有可能に
個別に構築されたサイトのカート情報をインメモリ共有(グローバル・キャッシュ・クラウド)
40
グローバル衣料品企業のオンラインストア
④ システム間データ連携
Copyright© 2011, Oracle. All rights reserved.
・高い更新性能(0.5ms/件)をリニアに拡張できるスケーラビリティを検証フェーズで実証→ ユーザー数の増加や
市況変化に対して対応計画を描きやすい
・DBやディスクに永続化せずに高可用性を実現
・国内外での稼動実績とコンサルティング実績
・Coherence、WebLogic、JRockit Mission ControlOracle RAC を活用
ビジネス側のニーズ• 顧客サービスの拡充並びに顧客ディーリング収益の追求• 約定性能向上• リスク管理の徹底(ロスカット、値洗処理の短縮)• ポジションの高速集計と敏速なカバー取引の実行
システム側のニーズ• データベースに依存した設計によるボトルネック解消• 大量トランザクションへの対応• 高拡張性と高可用性、システムの安定化を実現• 計算処理の高速化
増加する外国為替取引に追従するシステムの拡張性、IT監査に対応する運用システムモデル
LION FX (ヒロセ通商様のFXサービス) として U-Forex1 を採用
プロジェクトの背景と目的
オラクル選定理由 オラクル導入範囲
イベントリスナー
フロ
ント
処理
バッ
ク処
理
• Coherenceのデータパーティショニングにより注文リクエスト受付を負荷分散→ノード追加でスループット向上
• WebLogic Server を経由して注文を受付(1000TPS)
• マッチング、ポジション更新を高速化、ポジション集計を秒間100回で実行
• データをインメモリ保持して高速性を維持しながら高信頼性も担保- フロント :レート、注文データ- バック :ポジション、注文データ
レート配信2000レート/秒
注文管理
注文管理
RAC
RAC
発注
マッチングエンジン
• Coherenceのイベントリスナーで注文のマッチング処理を呼び出し
ヒロセ通商様「LION FX」 - フラクタルシステムズ株式会社様 「U-Forex1」-
41
⑤ イベント駆動処理
Copyright© 2011, Oracle. All rights reserved.
Agenda
• インメモリ・データグリッドとは
• Oracle Coherence概要• Coherenceとは
• Partitioned Cache
• In-Place Processing
• データ・アフィニティ
• データストア連携
• イベント
• 適用パターンと事例
• まとめ
42
Copyright© 2011, Oracle. All rights reserved.
まとめ
• Coherenceの提供するインメモリ・データグリッドとは
• 単なるキャッシュ用途だけではなくさまざま活用パターンと多数の事例
43
• 分散KVSアーキテクチャによるスケーラビリティのみならず
• データ可用性の担保
• データの自律的な動的再配置
高度な分散データ管理
• 関連データのアフィニティ機能によりKVSのデメリットを払拭
• In-Place Processingによる大量データの効率的な処理
• データソース連携、イベント処理
高度な分散データ処理
• 自律分散的なSPOF/SPOBの存在しないクラスタ管理プロトコルを実装
• プロトコルレベルでスケーラビリティを考慮(UDPベース)
• 高速な障害検知機能
高度なクラスタ管理
Copyright© 2011, Oracle. All rights reserved.
Appendix) Oracle Coherence を試したいなら
• OTN のCoherence製品ページから入手できますhttp://www.oracle.com/technetwork/jp/middleware/coherence/
• まずは製品ドキュメント付属のチュートリアルから
44
ソフトウェアダウンロード
製品ドキュメント
Copyright© 2011, Oracle. All rights reserved.
Appendix) もう一歩進んだ情報は…
• 書籍: 『Oracle Coherence入門』
• トレーニング・コースOracle UniversityOracle Coherence: Share and Manage Data In Clusters
• 3日間の充実コース
• チーム・メンバー全体でのレベル向上にお勧め
45
合わせて、こちらもどうぞ
『Oracle WebLogicServer 構築・運用ガイド』
どちらも Amazon、楽天ブックス はじめ、各書店で予約・購入できます
• キャッシュの設計• ドメイン・オブジェクトの実装• データグリッドの照会• 並行インプレース処理• データグリッド・イベント処理• 永続化層の実装• プラットフォーム間接続とネットワーク境界• .NETからのアクセス• C++からのアクセス• 適切なツールの選択
Copyright© 2011, Oracle. All rights reserved.
Appendix) スペシャル・サイトのご案内
■ アプリケーション・グリッド / Coherence
http://www.oracle.co.jp/appgrid/
■ CIO for Tomorrow
http://www.oracle.co.jp/campaign/cio/
■ Oracle WebLogic Server マニアックス
http://www.oracle.co.jp/weblogic/
- 業種や課題別の解決策のご紹介
- 効果をわかりやすくアニメーションで紹介
- 事例動画(字幕付き)
- その他、関連ライブラリ
- SOA/BPM
- セキュリティ
- コンテンツ管理/ポータル
【3つの迷信】
【クラウド特集】
【製品情報】他
46
Copyright© 2011, Oracle. All rights reserved. 47
http://blogs.oracle.com/oracle4engineer/entry/otn_ondemand_questionnaire
OTNオンデマンド 感想
OTNセミナーオンデマンド
コンテンツに対するご意見・ご感想を是非お寄せください。
上記に簡単なアンケート入力フォームをご用意しております。
セミナー講師/資料作成者にフィードバックし、コンテンツのより一層の改善に役立てさせていただきます。
是非ご協力をよろしくお願いいたします。
Copyright© 2011, Oracle. All rights reserved.
OTNセミナーオンデマンド日本オラクルのエンジニアが作成したセミナー資料・動画ダウンロードサイト
掲載コンテンツカテゴリ(一部抜粋)
Database 基礎
Database 現場テクニック
Database スペシャリストが語る
Java
WebLogic Server/アプリケーション・グリッド
EPM/BI 技術情報
サーバー
ストレージ
例えばこんな使い方• 製品概要を効率的につかむ
• 基礎を体系的に学ぶ/学ばせる
• 時間や場所を選ばず(オンデマンド)に受講
• スマートフォンで通勤中にも受講可能
100以上のコンテンツをログイン不要でダウンロードし放題
データベースからハードウェアまで充実のラインナップ
毎月、旬なトピックの新作コンテンツが続々登場
48
OTNオンデマンド
コンテンツ一覧 はこちらhttp://www.oracle.com/technetwork/jp/ondemand/index.html
新作&おすすめコンテンツ情報 はこちらhttp://oracletech.jp/seminar/recommended/000073.html毎月チェック!
Copyright© 2011, Oracle. All rights reserved.
オラクルエンジニア通信オラクル製品に関わるエンジニアの方のための技術情報サイト
49
オラクルエンジニア通信
技術コラム
アクセスランキング
特集テーマPick UP
技術資料
性能管理やチューニングなど月間テーマを掘り下げて詳細にご説明
インストールガイド・設定チュートリアルetc. 欲しい資料への最短ルート
他のエンジニアは何を見ているのか?人気資料のランキングは毎月更新
SQLスクリプト、索引メンテナンスetc. 当たり前の運用/機能が見違える!?
http://blogs.oracle.com/oracle4engineer/
Copyright© 2011, Oracle. All rights reserved.
oracletech.jpITエンジニアの皆様に向けて旬な情報を楽しくお届け
50
oracletech
Viva!Developer
セミナー
スキルアップ
製品/技術情報
ORACLE MASTER!試験頻出分野の模擬問題と解説を好評連載中
Oracle Databaseっていくら?オプション機能も見積れる簡単ツールが大活躍
基礎から最新技術までお勧めセミナーで自分にあった学習方法が見つかる
全国で活躍しているエンジニアにスポットライト。きらりと輝くスキルと視点を盗もう
http://oracletech.jp/
Copyright© 2011, Oracle. All rights reserved. 51
あなたにいちばん近いオラクル
Oracle Directまずはお問合せください
Web問い合わせフォーム フリーダイヤル
0120-155-096
※月曜~金曜9:00~12:00、13:00~18:00(祝日および年末年始除く)
専用お問い合わせフォームにてご相談内容を承ります。http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=28
※フォームの入力にはログインが必要となります。※こちらから詳細確認のお電話を差し上げる場合がありますので
ご登録の連絡先が最新のものになっているかご確認下さい。
システムの検討・構築から運用まで、ITプロジェクト全般の相談窓口としてご支援いたします。ステム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。
Oracle Direct
Copyright© 2011, Oracle. All rights reserved.
Copyright© 2011, Oracle. All rights reserved. 53