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