SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
CAPとBASEと
Eventually Consistent



2009-04-17 Yokomaha.pm
    山本陽平(id:yohei)
遅刻して
すんません
微妙なアウェイ感の中
 偽TAKESAKO
  メソッドで
  お送りします
自己紹介
氏名: 山本陽平(id:yohei)
職業: RESTエバンジェリスト
    (bogusne.ws 認定)
今日の話題
1 私とPerl
2 CAPと(ry
私とPerl
出会い
1995年
SunOS 4 にて
(たぶん) jperl
CGIで訪問者リストとか
初めて買った
オライリーの本
赤ラクダ本
もちろん
プログラミングPerl
   も買った
言語遍歴
N8x BASIC→C→
Perl → C++ → Java
→ XSLT → C++ → C/
Perl→Java→Java
ME → Ruby( い ま こ
こ)
最近のPerlは
よく知りません
場違いで
ごめんなさい
でもPerlプロダクトには
いつもお世話になってます


 とくに MogileFS と
 Perlbal ありがとう
第一部

完
第二部
アンケート
複数のサーバ上に
分散したデータを
扱っている人?
(予想)ほぼ全員
PCは高性能だし
ディスクは安いし
1台のサーバでも
ある程度までは
  運用できる
でも
冗長化を考えると
複数サーバが必須
データ量も
結局大きくなる
分散重要
でも分散は難しい
データを冗長化させると
複製の遅延で性能が落ち
るし、かといって全体の
可用性は落としたくない
けど、データの整合性は
ある程度守らないとプロ
グラムを作るのが大変だ
このジレンマのことを

CAP 定理
  といいます
CAP定理
Consistency
Availability
Partition tolerance
みっつ全ては
同時に満たせない
Consistency
誰かがデータを更
新したら、その後
は必ず更新後の
データが返る
Availability
クライアントは
必ずデータに
アクセスできる
Partition
Tolerance
データを複数
サーバに分散して
保管できる
みっつ全ては
同時に満たせない
 (CAP定理)
イマドキの
Webサービスなら
  AとPは必須
Consistency
で妥協が必要
どう妥協するか
  が肝要
Consistency
にもいろいろ
 種類がある
大きく分けると
  二つ
Strong Consistency

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

誰かがデータを更新し
たら、次アクセスする
人は必ず新しいデータ
にアクセスできる
いつになったら
 更新された
 データが取得
 できるのか
Eventual Consistency

誰かがデータを更新し
そのデータが複製される
のに十分な時間が過ぎ、
その後更新が加えられて
いなかったら、必ず
新しいにアクセスできる
詳細は
「結果整合性」
  で検索
古典的な例
MySQL の
レプリケーション
Master
    Client                 Slave

         UPDATE
                      binlog
                                   Inconsistenc
                               SQL Window
         SELECT
古いデータ                          実行


         SELECT
新しいデータ
最近の話題
構造化オーバレイ
Consistent Hashing
Key-value-store
遅延最適なアーキテクチャ
メッセージキュー
キャッシュ
局所的な状態整合
などなど
DBMS由来の技術と
  P2P由来の技術と
分散システム由来の技術
最後に
 注意
ACIDはダメ
これからはBASE
とか
CAP知らなくて
  いいのは
 小学生まで
とかは
FUDなので
無視しよう
問題に合わせて
最適な整合性モデル
を採用するのが重要
私も勉強中
続きはWebで

http://yohei-y.blogspot.com
おしまい

Contenu connexe

Tendances

Windows Mobile de Hello World
Windows Mobile de Hello World Windows Mobile de Hello World
Windows Mobile de Hello World Kenji Wada
 
マイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろうマイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろう奈良先端大 情報科学研究科
 
Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Narihiro Nakamura
 
090501Homework 구글
090501Homework 구글090501Homework 구글
090501Homework 구글parkpaul
 
20090513 Cmsnight
20090513 Cmsnight20090513 Cmsnight
20090513 CmsnightYusuke Ando
 
Candycane overview
Candycane overviewCandycane overview
Candycane overviewYusuke Ando
 
97th Kernel code reading party, TOMOYO Linux Night
97th Kernel code reading party, TOMOYO Linux Night97th Kernel code reading party, TOMOYO Linux Night
97th Kernel code reading party, TOMOYO Linux NightHiro Yoshioka
 
WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介Yuki Kimoto
 
Calendar
CalendarCalendar
Calendarkumee
 
Solutions@ Web Slides (Chinese)
Solutions@ Web Slides (Chinese)Solutions@ Web Slides (Chinese)
Solutions@ Web Slides (Chinese)webbssolutionsasia
 
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発Yuichi Tanaka
 
Ppt Pdf
Ppt PdfPpt Pdf
Ppt Pdfkumee
 
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏loftwork
 
FOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript ProgrammingFOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript Programminggyuque
 
Bado2 Sa 026
Bado2 Sa 026Bado2 Sa 026
Bado2 Sa 026HungYu Su
 
Error.pmの簡単な紹介
Error.pmの簡単な紹介Error.pmの簡単な紹介
Error.pmの簡単な紹介bingo_nakanishi
 
Developers[Media]Summit 2009
Developers[Media]Summit 2009Developers[Media]Summit 2009
Developers[Media]Summit 2009Akiko Iwakiri
 

Tendances (20)

1000speakers-sendai
1000speakers-sendai1000speakers-sendai
1000speakers-sendai
 
Windows Mobile de Hello World
Windows Mobile de Hello World Windows Mobile de Hello World
Windows Mobile de Hello World
 
マイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろうマイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろう
 
Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会
 
090501Homework 구글
090501Homework 구글090501Homework 구글
090501Homework 구글
 
20090513 Cmsnight
20090513 Cmsnight20090513 Cmsnight
20090513 Cmsnight
 
Candycane overview
Candycane overviewCandycane overview
Candycane overview
 
97th Kernel code reading party, TOMOYO Linux Night
97th Kernel code reading party, TOMOYO Linux Night97th Kernel code reading party, TOMOYO Linux Night
97th Kernel code reading party, TOMOYO Linux Night
 
WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介
 
Calendar
CalendarCalendar
Calendar
 
Mac玩家特區X目錄
Mac玩家特區X目錄Mac玩家特區X目錄
Mac玩家特區X目錄
 
Solutions@ Web Slides (Chinese)
Solutions@ Web Slides (Chinese)Solutions@ Web Slides (Chinese)
Solutions@ Web Slides (Chinese)
 
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
 
Ppt Pdf
Ppt PdfPpt Pdf
Ppt Pdf
 
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
NECビッグローブ/ビジネス事業部 グループマネージャー 山本氏
 
Pilot
PilotPilot
Pilot
 
FOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript ProgrammingFOSS4G LT - Invitation to ActionScript Programming
FOSS4G LT - Invitation to ActionScript Programming
 
Bado2 Sa 026
Bado2 Sa 026Bado2 Sa 026
Bado2 Sa 026
 
Error.pmの簡単な紹介
Error.pmの簡単な紹介Error.pmの簡単な紹介
Error.pmの簡単な紹介
 
Developers[Media]Summit 2009
Developers[Media]Summit 2009Developers[Media]Summit 2009
Developers[Media]Summit 2009
 

En vedette

CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛Kazuki Aranami
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRecruit Technologies
 
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlYutuki r
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかIchito Nagata
 
OpenTypeカラーフォントと関連技術の動向
OpenTypeカラーフォントと関連技術の動向OpenTypeカラーフォントと関連技術の動向
OpenTypeカラーフォントと関連技術の動向Jun Fujisawa
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 
MSYS2使いはじめました
MSYS2使いはじめましたMSYS2使いはじめました
MSYS2使いはじめましたHiro H.
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向Kentaro Ebisawa
 
DataRobot活用状況@リクルートテクノロジーズ
DataRobot活用状況@リクルートテクノロジーズDataRobot活用状況@リクルートテクノロジーズ
DataRobot活用状況@リクルートテクノロジーズRecruit Technologies
 
Amazon dynamo db、cloudant、blockchainの紹介 20160706
Amazon dynamo db、cloudant、blockchainの紹介 20160706Amazon dynamo db、cloudant、blockchainの紹介 20160706
Amazon dynamo db、cloudant、blockchainの紹介 20160706Tsuyoshi Hirayama
 
JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターン
JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターンJAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターン
JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターンTakekazu Omi
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkVolker Hirsch
 
Schema Agnostic Indexing with Azure DocumentDB
Schema Agnostic Indexing with Azure DocumentDBSchema Agnostic Indexing with Azure DocumentDB
Schema Agnostic Indexing with Azure DocumentDBDharma Shukla
 
AWSマイスターシリーズ Instance Store(Ephemeral Disk) & Elastic Block Store
AWSマイスターシリーズ Instance Store(Ephemeral Disk) & Elastic Block StoreAWSマイスターシリーズ Instance Store(Ephemeral Disk) & Elastic Block Store
AWSマイスターシリーズ Instance Store(Ephemeral Disk) & Elastic Block StoreAmazon Web Services Japan
 
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~kishimotosc
 
Monitoring with Fluentd with fluent-plugin-notifier
Monitoring with Fluentd with fluent-plugin-notifierMonitoring with Fluentd with fluent-plugin-notifier
Monitoring with Fluentd with fluent-plugin-notifierSATOSHI TAGOMORI
 
RDBからの脱却: 新ERP"HUE"におけるCassandra
RDBからの脱却: 新ERP"HUE"におけるCassandraRDBからの脱却: 新ERP"HUE"におけるCassandra
RDBからの脱却: 新ERP"HUE"におけるCassandra2t3
 

En vedette (20)

CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛
 
Paxos
PaxosPaxos
Paxos
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sql
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
 
OpenTypeカラーフォントと関連技術の動向
OpenTypeカラーフォントと関連技術の動向OpenTypeカラーフォントと関連技術の動向
OpenTypeカラーフォントと関連技術の動向
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
3 Dセンサーの活用
3 Dセンサーの活用3 Dセンサーの活用
3 Dセンサーの活用
 
MSYS2使いはじめました
MSYS2使いはじめましたMSYS2使いはじめました
MSYS2使いはじめました
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向
 
DataRobot活用状況@リクルートテクノロジーズ
DataRobot活用状況@リクルートテクノロジーズDataRobot活用状況@リクルートテクノロジーズ
DataRobot活用状況@リクルートテクノロジーズ
 
Amazon dynamo db、cloudant、blockchainの紹介 20160706
Amazon dynamo db、cloudant、blockchainの紹介 20160706Amazon dynamo db、cloudant、blockchainの紹介 20160706
Amazon dynamo db、cloudant、blockchainの紹介 20160706
 
JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターン
JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターンJAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターン
JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターン
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of Work
 
Schema Agnostic Indexing with Azure DocumentDB
Schema Agnostic Indexing with Azure DocumentDBSchema Agnostic Indexing with Azure DocumentDB
Schema Agnostic Indexing with Azure DocumentDB
 
AWSマイスターシリーズ Instance Store(Ephemeral Disk) & Elastic Block Store
AWSマイスターシリーズ Instance Store(Ephemeral Disk) & Elastic Block StoreAWSマイスターシリーズ Instance Store(Ephemeral Disk) & Elastic Block Store
AWSマイスターシリーズ Instance Store(Ephemeral Disk) & Elastic Block Store
 
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
 
Monitoring with Fluentd with fluent-plugin-notifier
Monitoring with Fluentd with fluent-plugin-notifierMonitoring with Fluentd with fluent-plugin-notifier
Monitoring with Fluentd with fluent-plugin-notifier
 
RDBからの脱却: 新ERP"HUE"におけるCassandra
RDBからの脱却: 新ERP"HUE"におけるCassandraRDBからの脱却: 新ERP"HUE"におけるCassandra
RDBからの脱却: 新ERP"HUE"におけるCassandra
 

Plus de Yohei Yamamoto

WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれからYohei Yamamoto
 
リコーUCSの開発をリーンスタートアップ的視点でふりかえる
リコーUCSの開発をリーンスタートアップ的視点でふりかえるリコーUCSの開発をリーンスタートアップ的視点でふりかえる
リコーUCSの開発をリーンスタートアップ的視点でふりかえるYohei Yamamoto
 
私の考えるドキュメント指向
私の考えるドキュメント指向私の考えるドキュメント指向
私の考えるドキュメント指向Yohei Yamamoto
 
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と RailsRubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と RailsYohei Yamamoto
 
良い Xml の見分け方 2007
良い Xml の見分け方 2007良い Xml の見分け方 2007
良い Xml の見分け方 2007Yohei Yamamoto
 

Plus de Yohei Yamamoto (8)

WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれから
 
リコーUCSの開発をリーンスタートアップ的視点でふりかえる
リコーUCSの開発をリーンスタートアップ的視点でふりかえるリコーUCSの開発をリーンスタートアップ的視点でふりかえる
リコーUCSの開発をリーンスタートアップ的視点でふりかえる
 
私の考えるドキュメント指向
私の考えるドキュメント指向私の考えるドキュメント指向
私の考えるドキュメント指向
 
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と RailsRubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
 
良い Xml の見分け方 2007
良い Xml の見分け方 2007良い Xml の見分け方 2007
良い Xml の見分け方 2007
 
Rest 勝利宣言
Rest 勝利宣言Rest 勝利宣言
Rest 勝利宣言
 
イントロ
イントロイントロ
イントロ
 
REST 入門
REST 入門REST 入門
REST 入門
 

CAPとBASEとEventually Consistent