Contenu connexe
Similaire à インメモリーデータグリッドの選択肢 (20)
Plus de Masaki Yamakawa (10)
インメモリーデータグリッドの選択肢
- 1. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
Apache GEODE Meetup Tokyo #3
インメモリーデータグリッドの選択肢
2017/2/16
ウルシステムズ株式会社
http://www.ulsystems.co.jp
mailto:info@ulsystems.co.jp
Tel: 03-6220-1420 Fax: 03-6220-1402
- 2. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 1
About Me
山河 征紀
Business
Private
• GEODE歴:9年(Since 2008)
• GEODEバグ報告数:nnn 件
• マラソン
• 横浜マラソン2016:4h17m
• 目標は2017年度中のサブ4
• 登山
• 目標はココ
- 3. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 2
おしらせ
Apache Geodeのハンズオンやります!
3/14(火)19:00~
六本木ヒルズ森タワー20F
Pivotal Japan
• 一緒に運営していただける方
• スピーカーをお願いできる方
大募集中
- 4. ULS 3
Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
インメモリーデータグリッドの選択肢
- 5. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 4
2007年
2017年
データグリッドの昔と今
(ex-GemFire)
(ex-GridGain)
- 6. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 5
たくさんあるのはありがたい
でも・・・
どれを使えば
いいんだろう?
- 7. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 6
今日、お話したいこと
In-Memory DataGrid
- 8. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 7
おことわり
本日、お話する内容は、あくまで個人の見解
です
ただし、Geode Meetupだからといって
Apache Geodeに有利になるような見方はし
ておりません
- 9. ULS 8
Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
インメモリーデータグリッドの選択肢
- 10. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 9
サーバ
サーバ
サーバ
アプリケーションのスケールアウトは容易になったが、RDB
がボトルネックに
マイクロサービス時代では、ここがスケールしないときつい
良くあるシステムの課題
JVM
JVM
JVM
アプリケーション
アプリケーション
アプリケーション
RDB
スループット
だけでなくレ
イテンシーも
重要
- 11. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 10
そんなときに…
インメモリー
データグリッド
- 12. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 11
インメモリーデータグリッドに必要な3大要素+1
複数ノードのメモリーに
データを分散して保持していること
メモリー中のデータと
外部データストアとの連携が
シームレスにできること
メモリー中のデータへ
トランザクション処理ができること
①
②
③
メモリー中のデータに関するイベントが
容易にハンドリングできること
- 13. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 12
ということで…
3つの観点で、どれが良いのかを比較してみます!
- 14. ULS 13
Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
ラウンド1
データの分散
- 16. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 15
データ分散とは…
クラスター全体を論理的に1つのまとまりとして見たとき、
データをどのノードのメモリーにもつか、ということ
データの特性によって分散スタイルを選ぶ必要があるため、
この選択肢が充足していることは重要
パーティションレプリケーション
すべてのマシンで同一のデータ
を保持する
何れかのマシンにデータが存在
する
- 17. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 16
データの分散:比較結果(1)
呼び方は違えど、主要な分散スタイルに差はない
レプリケーション パーティション
Geode ○ Replicated ○ Partitioned
Ignite ○ REPLICATED ○ PARTITIONED
Hazelcast ○ ReplicatedMap ○ Map
Infinispan ○ Replicated-cache ○ Distributed-cache
Coherence ○ Replicated Cache ○ Partitioned Cache
- 18. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 17
データの分散:比較結果(2)
細かい部分では特色がある
ただし、これらは「あったら嬉しい」というレベルのもの
その他の分散スタイル 補足
Geode
Local
Preloaded
Distributed non-replicated
レプリケーションでは、書き込み
時のオプションが選べる
(distributed-ack,distributed-
no-ack,global)
Ignite
LOCAL
Near Cache
パーティションのバックアップを
全ノードで保持したものがレプリ
ケーション、というコンセプト
Hazelcast Near Cache
レプリケーションでの書き込みは
結果整合性
KeyValue以外のデータ構造も選択
できる
Infinispan
Local mode cache
Near Caching
機能やAPIは非常に多い
Coherence
Local Cache
Near Cache
Optimistic Cache
各種Schemeを組み合わせて
キャッシュを構成できる
- 19. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 18
パーティションのデータ分散(1)
パーティションに関しては、こんな風にデータを保持したい
時もある(カスタムパーティショニング)
ノード#1
Order-1 User-A
Order-3 User-B
Order-5 User-A
Order-7 User-A
ノード#2
Order-2 User-B
Order-4 User-A
Order-6 User-A
Key Value
Key Value
ノード#1
Order-1 User-A
Order-5 User-A
Order-7 User-A
ノード#2
Order-2 User-B
Order-4 User-A
Order-6 User-A
Key Value
Key Value
Order-3 User-B
データは均等
に分散しいて
いるが…
処理内容によっては
User毎にまとまって
いた方がノード間通
信がなく、都合が良
い場合もある
- 20. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 19
加えて、異なるデータの種類も同一ノードに配置したい時も
ある(コロケーション)
OrderUser
パーティションのデータ分散(2)
ノード#1
Order-1 User-A
Order-4 User-A
User-B User-B属性
Key Value
OrderUser
ノード#2
Order-2 User-B
Order-3 User-B
User-A User-A属性
Key Value
OrderUser
ノード#1
Order-1 User-A
Order-4 User-A
User-A User-A属性
Key Value
OrderUser
ノード#2
Order-2 User-B
Order-3 User-B
User-B User-B属性
Key Value
User-Aの
データがな
いのでノー
ド#2にとり
にいかない
といけない
…
ノードを跨
いでデータ
を取得しな
くて良い
- 21. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 20
パーティションのデータ分散:比較結果
こちらも差はなし
カスタム
パーティショニング
コロケーション
Geode ○ Partition
Resolver ○ Co-Location
Ignite ○ Affinity
Collocation ○ Affinity
Collocation
Hazelcast ○ Partition
AwareKey ○ Partition
AwareKey
Infinispan ○ Grouping API
KeyAffinityService ○ Grouping API
KeyAffinityService
Coherence ○ KeyPartitioning
Strategy ○ Key
Association
- 22. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 21
ラウンド1:データの分散対決 結果発表
過去バージョンではできないものがあったが、現時点では大
きな差なし
- 23. ULS 22
Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
ラウンド2
シームレスな外部データストア連携
- 24. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 23
シームレスな外部データストア連携とは…
全てのデータはメモリーにのりきらない
のりきらないデータは外部データストアとの連携が必要
外部データストア
との自動連携
データ
グリッド
RDB等
APPが意識するのは
メモリー上のデータ
だけ
メモリー中のデータを参照して、データが
存在しない場合(キャッシュミス)は自動
的にメモリー上に読み込んでほしい
メモリー中のデータを追加・変更した場合
は、自動的にデータストアに書き込んでほ
しい
- 25. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 24
キャッシュミスが発生した場合は、データストアよりデータ
を読み取りメモリーに保持する
リードスルー
RDB等
データグリッド
データグリッド
参照
(Read A)
リード
スル―
リード
スル―
A B
C D
D
D
A
A
B
B
参照
(Read B)
APP
APP
- 26. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 25
メモリー上のデータを更新した場合は、自動的にデータスト
アに書き込む
ライトスルー/ライトビハインド
RDB等
データグリッド
データグリッド
追加
(Write A)
ライトスルー
ライトビハインド
(Insert)
A B
D
D
D
A
A
B
B
更新
(Write B)
ライトスルー
ライトビハインド
(Update)
APP
APP
- 27. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 26
外部データストア連携:比較結果
出来ないものはなし
リードスルー ライトスルー ライトビハインド
Geode ○ Cache
Loader ○ Cache
Writer ○
Async
Event
Listener
Ignite ○ Cache
Store ○ Cache
Store ○ Cache
Store
Hazelcast ○ Cache
Loader ○ Map
Store ○ Map
Store
Infinispan ○ Cache
Loader ○ Cache
Store ○ Cache
Store
Coherence ○ Cache
Loader ○ Cache
Store ○ Cache
Store
- 28. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 27
これも、過去バージョンではできないものがあったが、現時
点では大きな差なし
あえていうなら、各種データストア用のデフォルト実装が揃っているInfinispan
が使いやすいかもしれない
ラウンド2:外部データストア連携対決 結果発表
- 29. ULS 28
Copyright © 2011-2013 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
ラウンド3
トランザクション
- 30. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 29
トランザクション
インメモリーデータグリッドを採用する場合、更新処理の高
速性、スケーラビリティを求めて採用するケースがある
ベースは、トランザクション不要なように設計すべきである
が、少なからずトランザクション処理が必要となるケースが
ある
- 31. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 30
トランザクション:比較結果
Ignite、Infinispanが出来ることは多い
トランザクション対象
分離レベル
ロック
方式レプリケー
ション
パーティ
ション
MIX
Geode ○ △ △ READ_COMMITED 楽観
Ignite ○ ○ ○
READ_COMMITED
REPEATABLE_READ
SERIALIZABLE
楽観
悲観
Hazelcast ○ ○ ○ READ_COMMITED 楽観
Infinispan ○ ○ ○ READ_COMMITTED
REPEATABLE_READ
楽観
悲観
Coherence ○ ○ ○ READ_COMMITED 楽観
- 32. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 31
トランザクション機能で選ぶなら、Ignite、Infinispanが出
来ることは多い
高速性を目指すときに必要かどうかは微妙なとこではあるが
ラウンド3:トランザクション対決 結果発表
- 33. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 32
まとめ
インメモリーデータグリッド機能対決 結果
–RDBと同じようなトランザクション機能が必要ならIgnite
やInfinispanを選んだ方が良い
–GeodeとCoherenceは10年前から出来ないことがわかって
いるが対応していないので、おそらく今後も対応されない
–それ以外は以前は差があったが、現時点では大差なし
ラウンド 結果
1. データ分散 DRAW(差なし)
2. 外部データストア連携 DRAW(差なし)
3. トランザクション
1. Apache Ignite
2. Infinispan
- 34. ULS
Copyright © 2011-2017 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 33
最後に
今回は、残念ながらGeodeだけ「出来ない」
がでちゃいました!
それでも、今後もGeodeを使い続けます!
別の観点の比較はまた別の機会にでも…