capとbaseとeventually consistent

64
CAPBASEEventually Consistent 2009-04-17 Yokomaha.pm 山本陽平(id:yohei)

Upload: yohei

Post on 05-Dec-2014

20.411 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: CAPとBASEとEventually Consistent

CAPとBASEとEventually Consistent

2009-04-17 Yokomaha.pm

山本陽平(id:yohei)

Page 2: CAPとBASEとEventually Consistent

遅刻してすんません

Page 3: CAPとBASEとEventually Consistent

微妙なアウェイ感の中偽TAKESAKO

メソッドでお送りします

Page 4: CAPとBASEとEventually Consistent

自己紹介

Page 5: CAPとBASEとEventually Consistent

氏名: 山本陽平(id:yohei)

職業: RESTエバンジェリスト(bogusne.ws 認定)

Page 6: CAPとBASEとEventually Consistent

今日の話題

Page 7: CAPとBASEとEventually Consistent

1 私とPerl

2 CAPと(ry

Page 8: CAPとBASEとEventually Consistent

私とPerl

Page 9: CAPとBASEとEventually Consistent

出会い

Page 10: CAPとBASEとEventually Consistent

1995年SunOS 4 にて(たぶん) jperl

Page 11: CAPとBASEとEventually Consistent

CGIで訪問者リストとか

Page 12: CAPとBASEとEventually Consistent

初めて買ったオライリーの本

Page 13: CAPとBASEとEventually Consistent

赤ラクダ本

Page 14: CAPとBASEとEventually Consistent

もちろんプログラミングPerl

も買った

Page 15: CAPとBASEとEventually Consistent

言語遍歴

Page 16: CAPとBASEとEventually Consistent

N8x BASIC→C→

Perl → C++ → Java

→XSLT→C++→C/

Perl→Java→Java

ME→Ruby(いまここ)

Page 17: CAPとBASEとEventually Consistent

最近のPerlはよく知りません

Page 18: CAPとBASEとEventually Consistent

場違いでごめんなさい

Page 19: CAPとBASEとEventually Consistent

でもPerlプロダクトにはいつもお世話になってます

とくに MogileFS とPerlbal ありがとう

Page 20: CAPとBASEとEventually Consistent

第一部

Page 21: CAPとBASEとEventually Consistent

第二部

Page 22: CAPとBASEとEventually Consistent

アンケート

Page 23: CAPとBASEとEventually Consistent

複数のサーバ上に分散したデータを扱っている人?

Page 24: CAPとBASEとEventually Consistent

(予想)ほぼ全員

Page 25: CAPとBASEとEventually Consistent

PCは高性能だしディスクは安いし1台のサーバでもある程度までは

運用できる

Page 26: CAPとBASEとEventually Consistent

でも

Page 27: CAPとBASEとEventually Consistent

冗長化を考えると複数サーバが必須

Page 28: CAPとBASEとEventually Consistent

データ量も結局大きくなる

Page 29: CAPとBASEとEventually Consistent

分散重要

Page 30: CAPとBASEとEventually Consistent

でも分散は難しい

Page 31: CAPとBASEとEventually Consistent

データを冗長化させると複製の遅延で性能が落ちるし、かといって全体の可用性は落としたくないけど、データの整合性はある程度守らないとプログラムを作るのが大変だ

Page 32: CAPとBASEとEventually Consistent

このジレンマのことを

CAP 定理といいます

Page 33: CAPとBASEとEventually Consistent

CAP定理

Page 34: CAPとBASEとEventually Consistent

Consistency

Availability

Partition tolerance

Page 35: CAPとBASEとEventually Consistent

みっつ全ては同時に満たせない

Page 36: CAPとBASEとEventually Consistent

Consistency

誰かがデータを更新したら、その後は必ず更新後のデータが返る

Page 37: CAPとBASEとEventually Consistent

Availability

クライアントは必ずデータにアクセスできる

Page 38: CAPとBASEとEventually Consistent

Partition

Tolerance

データを複数サーバに分散して保管できる

Page 39: CAPとBASEとEventually Consistent

みっつ全ては同時に満たせない

(CAP定理)

Page 40: CAPとBASEとEventually Consistent

イマドキのWebサービスなら

AとPは必須

Page 41: CAPとBASEとEventually Consistent

Consistency

で妥協が必要

Page 42: CAPとBASEとEventually Consistent

どう妥協するかが肝要

Page 43: CAPとBASEとEventually Consistent

Consistency

にもいろいろ種類がある

Page 44: CAPとBASEとEventually Consistent

大きく分けると二つ

Page 45: CAPとBASEとEventually Consistent

Strong Consistency

誰かがデータを更新したら、次アクセスする人は必ず新しいデータにアクセスできる

Page 46: CAPとBASEとEventually Consistent

Weak Consistency

誰かがデータを更新したら、次アクセスする人は必ず新しいデータにアクセスできるとは限らない

Page 47: CAPとBASEとEventually Consistent

いつになったら更新されたデータが取得できるのか

Page 48: CAPとBASEとEventually Consistent

Eventual Consistency

誰かがデータを更新しそのデータが複製されるのに十分な時間が過ぎ、その後更新が加えられていなかったら、必ず新しいにアクセスできる

Page 49: CAPとBASEとEventually Consistent

詳細は「結果整合性」

で検索

Page 50: CAPとBASEとEventually Consistent

古典的な例

Page 51: CAPとBASEとEventually Consistent

MySQL のレプリケーション

Page 52: CAPとBASEとEventually Consistent

Client Master Slave

UPDATE

binlog

SELECT

SELECT

古いデータ

新しいデータ

SQL

実行

Inconsistency

Window

Page 53: CAPとBASEとEventually Consistent

最近の話題

Page 54: CAPとBASEとEventually Consistent

構造化オーバレイConsistent Hashing

Key-value-store

遅延最適なアーキテクチャメッセージキューキャッシュ局所的な状態整合などなど

Page 55: CAPとBASEとEventually Consistent

DBMS由来の技術とP2P由来の技術と

分散システム由来の技術

Page 56: CAPとBASEとEventually Consistent

最後に注意

Page 57: CAPとBASEとEventually Consistent

ACIDはダメこれからはBASE

Page 58: CAPとBASEとEventually Consistent

とか

Page 59: CAPとBASEとEventually Consistent

CAP知らなくていいのは小学生まで

Page 60: CAPとBASEとEventually Consistent

とかはFUDなので無視しよう

Page 61: CAPとBASEとEventually Consistent

問題に合わせて最適な整合性モデルを採用するのが重要

Page 62: CAPとBASEとEventually Consistent

私も勉強中

Page 63: CAPとBASEとEventually Consistent

続きはWebで

http://yohei-y.blogspot.com

Page 64: CAPとBASEとEventually Consistent

おしまい