Contenu connexe Similaire à Cyber-Physical Systems とは何か? (20) Cyber-Physical Systems とは何か?2. Agenda
Cyber-Physical Systemとは、何か?
Cyber-Physical Systemsの歴史での重要な
出来事
Cyber-Physical Systemsが挑戦している課題
Cyber-Physical Systemsとして情報システム
を捉え直す
自律分散というアプローチ
これから考えるべきこと
5. “That ‘Internet of Things’ Thing”
by Kevin Ashton 初出
“Internet of Things” というフレーズは、私が
1999年にProcter & Gamble (P&G) 社で
行ったプレゼンのタイトルとして、初めて世に出た。
P&G社のサプライチェインの新しいアイデアとし
てのRFIDを、当時、最もホットなトピックであった
インターネットに結びつけたことは、経営幹部の
強い注意を引きつけるに十分だった。
すべてのモノにIDを持たせるというアイデア
“That 'Internet of Things' Thing” by Kevin Ashton
http://bit.ly/1bt4GBP
6. 今日の情報技術は、人間によって生み出される
情報にあまりに依存していて、我々のコンピュー
タは、モノについてより、人間の考えについての
方をよく知っている。
もし、我々の助けなしに自分で集めたデータを
使って、モノについて知りうる全てのことを知って
いるコンピュータがあったとすれば、我々は、すべ
てのモノを追跡しその数を数えることが出来、無
駄や損失やコストを多いに削減することが出来る
だろう。
人が生み出す情報ではなく、モノについての情報
“That 'Internet of Things' Thing” by Kevin Ashton
http://bit.ly/1bt4GBP
7. 日本への影響「ユビキタス」
情報通信白書特集テーマの変遷
2004年「世界に拡がるユビキタスネットワーク社
会の構築」
2005年「u-Japanの胎動」
2006年「ユビキタスエコノミー」
2007年「ユビキタスエコノミーの進展とグローバ
ル展開」
2008年「活力あるユビキタスネット社会の実現」
2009「日本復活になぜ情報通信が必要なのか」
http://bit.ly/1n66E07
8. 日本への影響「ユビキタス」
ITの世界で何が起きていたか?
2004年「世界に拡がるユビキタスネットワーク社
会の構築」Google上場
2005年「u-Japanの胎動」CPS
2006年「ユビキタスエコノミー」Amazon EC2/S3
2007年「ユビキタスエコノミーの進展とグローバ
ル展開」iPhone
2008年「活力あるユビキタスネット社会の実現」
Microsoft Azure
Android
2009「日本復活になぜ情報通信が必要なのか」
http://bit.ly/1n66E07
9. 丸山の「ユビキタス論」へのコメント
2010年4月マルレク「日本のクラウド」
それは、平面上にアモルファスに広がる構造を欠
いたネットワーク。そして、それは、ネットワークや
デバイスやチップの遍在でしかない。
クラウドとモバイルデバイスは、ネットワークに、
ネットワークの背骨ともいうべき、明確な垂直構造
をもたらす。そうした視点を欠く。
我々にとって重要なのはネットワーク自身の遍在
ではなく経済活動と人間のコミュニケーションと情
報共有の担い手としてのネットワークの遍在であ
る。Human Centric Sensor Network
http://bit.ly/1n66E07
12. Cyber-Physical Systemsとは何か?
Cyber-Physical Systems(CPS)とは、コン
ピュータの計算能力と物理的なシステムの能力
が結びつけられて両者がしっかりと協調するシス
テムである。
組込み系を中心としたリアルタイムの処理技術と、
機械の制御を中心とするディジタル・アナログの
ハイブリッド技術の二つが合流して生まれた。
2006年にアメリカのNSFが大学や研究機関に
Cyber-Physical Systems研究に大規模な資
金提供を始めて、全世界にこのコンセプトは広
まった。
13. CyberとPhysicalの違い
Cyber-Physical Systemsのコンセプトで重要
なことは、コンピュータやネットワークのプログラ
ムを中心とするCyberな世界と、現実の機械を中
心とするPhysicalな世界が、まったく異なる原理
でドライブされているという認識である。
Cyberの世界は、論理的・数学的な「正しさ」が基
本原理。その意味では、その原理は抽象的なも
の。一方、Physicalな世界を動かしているのは、
最終的には、物理法則。それは、具体的で現実
的なもの。Cyber-Physical Systemsは、この
異なる二つの世界が結びついたシステム。
16. CPSとIoP
CSPとIoTのコンセプトは、共通部分を持つ。ただ、
この二つのコンセプトには、違いも存在する。
IoTは、今日では、「多数のデバイスやセンサー
が、(インター)ネットにつながること」と理解される
ことが多く、また、そこから発生するビッグデータ
の処理にも関心が向けられる。
CSPでは、関心は、コンピュータによる物理系の
リアルタイムの制御にも置かれる。インターネット
接続を必ずしも前提としない自律型のロボットや、
3Dプリンターは、CPSの一つの例。
17. ビッグデータ論の特徴
— PhysicalからCyberへ
IoTでは、無数のセンサーから沸き出す巨大な情
報「ビッグデータ」の処理が中心的な課題になると
いう議論がよくある。そうした処理が必要な場合
が存在し、それが技術的にチャレンジングな課題
であるのは、確かである。
ただ、物理的な世界から発した情報が、全て一カ
所にまとめられ、情報として処理されるというイ
メージは、少し狭いとも思う。なぜなら、そこでは、
PhysicalからCyberへと、情報が一方的に流れ
るだけだけからである。
19. 3Dプリンターとロボット
— CyberからPhysicalへ
CyberからPhysicalの情報の流れを代表する例
は、何になるのだろう?
現実を変えるという意味では、我々が用いる道具
や機械は、全て、そうした役割を持つ。ただ、多く
の道具や機械は、人間が直接にコントロールして
いる。
人間ではなくコンピュータによって制御される機械
が、CyberからPhysicalの情報の流れの担い手
になるというのなら、すぐに思いつくのは、3Dプリ
ンターやロボットである。
21. PhysicalとCyberの相互作用の
発展段階を考える
IoTの最初期には、Thingsは単なるモノ(に付け
られたRFIDタグ)だったので、CPの作用は望
むべきも無かった。ThingsがSensorsになって
も、こうした事情はさして変わらない。
このレベルでは、センサー・レベルのIoTと3Dプリ
ンター/ロボットは、情報の流れに関して言えば、
「相補的」な関係にある。
Things(こうした言い方が妥当なものか議論の余
地がある)が、センサーを備えたアクティブ・デバ
イスになったとき、Cyber-Physical Systemsの
重要性が、もっと明らかになる。
24. NSF Workshop On Cyber-
Physical Systems
2006/10/16-17
「Cyber-physical systemsは、インターネッ
トが、我々人間が互いに関係しあうスタイルを
変化させたのと、丁度同じように、我々と物理
的世界との関係を変化させて行くだろう。」
http://varma.ece.cmu.edu/CPS/
30. Synopsis of Program:
Cyber-Physical Systemsという術語は、コン
ピュータ上のリソースと物理的なリソースの間の
強い結合と協調をさしている。
我々は、未来のCyber-Physical Systemsは、
今日、我々が、適合性、自律性、効率性、機能性、
信頼性、安全性、可用性といった言葉で表すもの
を、はるかに超えて進むだろうと展望している。
31. Cyber-Physical Systemsでの研究の前進は、我々の
世界を次のようなシステムを持つものに変えることを約束
している。
より高速に反応するシステム(自律的な衝突回避シス
テム等)
より精密な動作を行うシステム(ロボットによる外科手
術、ナノ・スケールの工作機械等)
危険で近づけない環境での作業システム(捜索と救出、
消火作業と探索)
大規模で分散したものの協調を行うシステム(交通制
御の自動化等)、高度に効率的で(正味のエネルギー
を消費しないビル等)
人間の能力を増大し社会福祉を拡大するシステム(介
護支援技術、いつでもどこでも、健康状態のモニタリン
グと医療サービスの提供を可能とするシステム)
34. 2011年AMP立ち上げ
2011年6月、オバマ大統領は、”Advanced
Manufacturing Partnership (AMP)”を
立ち上げる。
AMP Steering Commiteeの構成
工学系トップの大学(MIT, UC Berkeley,
Stanford, CMU, Michigan, GIT)の学長
アメリカのトップ企業(Caterpillar, Corning,
Dow Chemical, Ford, Honeywell, Intel,
Johnson & Johnson, Northrop Grumman,
Procter & Gamble, United Technologies)
のCEO
35. オバマ演説
「アメリカで発明しアメリカで製造する」
“本日、私は、我々の全て-- 私的企業・大学・政
府機関-– に、アメリカ製造業のルネッサンスを
スパークさせ、我が国の製造業が世界のいかな
る国とも競争するために必要な最先端のツール
を開発するのを助ける為に、一緒になるよう呼び
かける。...
これらの重要な投資によって、我々は、合衆国が
「ここで発明し、ここで製造する」国にとどまり、ア
メリカの労働者に、高品質・高賃金の仕事を作り
出すことを保証する事が出来る”
http://www.whitehouse.gov/the-press-office/2011/06/24/
president-obama-launches-advanced-manufacturing-partnership
36. 2012年NNMIIの設立
2012年7月、AMPは16の勧告をレポートする。
その中には、”National Network of
Manufacturing Innovation Institutes
(NNMII)” の設立が含まれていた。
NNMIIは、官民連携組織で、アメリカの企業の国
際的競争力を高め、アメリカの製造施設への投
資を増加させる為に、「優れた製造技術の地域の
ハブ」になる事が期待された。
37. オバマ演説
“Made in America”
“我々は、地域を助ける為に、その地域を、世界
の先端技術の仕事のセンターに変える事を助け
る為に、進んで一緒にパートナーを組もうとする
企業と大学を求めている。
というのも、我々は、製造業の次の革命が、
「Made in America」になる事を望んでいるから
だ。"
-- President Obama, May 9, 2013
http://manufacturing.gov/nnmi_overview.html
38. 2013年度予算では、advanced
manufacturingに対する研究開発予算は、
19%増えて22億ドル(2,200億円)に。
この予算で、National Institute of
Standards and Technology (NIST)は、
国内の製造業に研究施設とノウハウを提供する
施策に1億ドル(100億円)を支出。
NISTは、またAdvanced Manufacturing
Portal を運営している。これは、AMIの勧告に
基づいたもの。
39. “Recommendations for implementing the
strategic initiative INDUSTRIE 4.0”
2013年4月
http://www.plattform-i40.
de/sites/default/files/Report_Industrie%2
04.0_engl_1.pdf
40. ”INDUSTRIE 4.0” のビジョン
Cyber-Physicalへ
第一次産業革命: 機械
18世紀末の蒸気機関の導入
第二次産業革命: 電気
20世紀に始まる電気を動力とする大規模工場生産
第三次産業革命: IT
1970年代に始まり今日まで続いている、電子技術・
ITを利用した生産の自動化
第四次産業革命: Cyber-Physical
ネットワークのサイバー空間と物理的な生産の世界が
結びつく
41. Cyber-Physicalシステム:製造環境と
Internet of Things and Services
ThingsとServicesのインターネットの製造環境
への導入が、第四次産業革命への道を開く。
将来、ビジネスは、Cyber-Physicalシステムの
形で、機械と倉庫と製造機能を一つに合体させる
グローバルなネットワークを確立するだろう。
Cyber-Physicalシステムは、スマートマシンとス
トレージと、自律的に情報を交換しそれぞれが独
立に動作を起動しコントロールする能力を持った
生産施設から構成される。
43. Smart Factory : CPSの中核
スマート自動車スマート流通
Smart Factory
スマートグリッドスマートビルディング
スマートプロダクト
CPS
44. Cyber-Physical Systemと
二重のネットワーク・システム
Cyber-Physicalシステムに組み込まれた製造
システムは、工場と企業のビジネス・プロセスに
垂直方向にネットワークで接続され、水平方向に
は、注文がなされた時からロジスティックに送り出
されるまさにその時まで、リアルタイムに管理可
能な多様なバリュー・ネットワークに接続される。
それに加えて、水平・垂直双方のネットワークは、
ともに、バリュー・チェイン全体を横断した、end-to-
end のエンジニアリングを可能にし、また、そ
れを要求する。
49. Project Ara
-- CPS開発ツールの無償提供
2014/04/15-16
Project Araは、自己をCyber-Physical
System(CPS) と規定している。重要な事
は、Project Araの中心的な柱として、CPS
開発の為のツール群Metamorphosysが
オープンソースの形で無償提供されている事
である。
http://www.projectara.com/
50. Project Ara Conference 2014/04/15-16
Day 2 “Metamorphosys design tools ”
http://www.projectara.com/ara-developers-conference/
52. 自分のモデルと
その結果をどの
ように組織する
か?
回路をどう設計するか?
Araのモジュールに収まる?
「関心の分離」は、必ずしもうまく機能しない
電波の干渉は起きないか?
ソフトはうまく動くか?
動作のスピードは?
発熱しないか?
Ara:
Cyber-Physical システム
デザインの挑戦
54. Project Araのエコシステムの基礎
モジュール開発ツールの共有
誰もが「ものづくり」のツールを持つことが出来る:
オープンソースでの無償提供。
誰もが容易に使える:これらのツールは、ハード
ウェア設計の専門家でなくても、Araのモジュール
をデザインする事を助ける事が出来る。
誰もが簡単にデータを交換・共有出来る:グロー
バルでオープンな「ものづくり」コミュニティとデー
タのネットワーク・マーケットの拡大。
誰もが簡単に「ものづくり」出来る:データを3Dプ
リンターにいれれば、その場で、ものが出来る。
部品の輸送コストは大幅に削減出来る。
57. Cyber-Physical Systemsが
挑戦している課題
ここでは、Edward Leeのプレゼンに基づい
て、Cyber-Physical Systemsが、どのよう
な課題に挑戦しようとしているかを見てみよう。
CyberとPhysicalの統合では、「時間」の問
題が、重要な問題であることが分かる。
71. 重要な挑戦
タイミングは、ソフトウェアのセマンティックスの一部ではない
C, C#, Java, Haskel, OCaml 等でのプログラムの正しい
実行は、何を計算するにしても、それがどれくらい時間がかか
るかということとは、何の関係も無い。ほとんど全ての計算と
ネットワークの抽象は、この前提の上に立っている。
プログラマーは、タイミングの振る舞いを
特定する為には、プログラミングの抽象の
外に踏み出さなければならない。
プログラマーは、依拠すべき
地図を持っていない!
94. Spanner: Google’s
Globally-Distributed Database
Wilson Hsieh
representing a host of authors
OSDI 2012
http://static.googleusercontent.com/external_content/untrusted_dlcp/
research.google.com/ja//archive/spanner-osdi2012.pdf
http://research.google.com/archive/spanner.html
Video:
https://www.usenix.org/conference/osdi12/elmo-building-globally-distributed-
highly-available-database
95. Spannerでの正確な「時計」の利用
Spannerのアプローチのポイントは、「正確なタ
イムスタンプ」をグローバルな規模に広がった分
散データベースのトランザクションのコントロール
に使うこと。その為に、主要にはGPSを使って(場
合によっては原子時計で)、全てのマシンの「時
計」を合わせる。
グローバルな規模の分散データベースに「実時
間」の時計の時間合わせを導入するというのは、
データベースが単なるCyber空間上のシステム
ではなく、Cyber-Physical Systemsとしての性
格を持つようになってきたということ
96. 大規模分散データベースとしての
Spannerの特徴
第一に、データの複製の設定は、アプリによって細
かい粒度でコントロール出来る。
どのデータセンターがどのデータを持つのか
データはユーザーからどのくらい離れているか(読み込み
の遅延をコントロールする)
レプリカはお互いにどれくらい離れているか(書き込みの
遅延をコントロールする)
どのくらいの数のレプリカが維持されているか(耐久性・
可用性・読み込みのパフォーマンスをコントロールする)
データは、データセンター間のリソースの利用のバランス
をとるシステムによって、動的かつ透過的にデータセン
ター間を移動出来る。
97. 大規模分散データベースとしての
Spannerの特徴
第二に、Spannerは、分散データベースでは実
装するのが難しい二つの特徴を持つ。
読み書きについての外的整合性
ある時点での、データベースをまたいだグローバルに
整合的な読み込み
こうした特徴は、グローバルなスケールで、たとえ
実行中のトランザクションがあったとしても、整合
的なバックアップ、整合的なMapReduceの実行、
アトミックなスキーマの更新を、Spannerに可能
とする。
99. 正確なコミット・タイムスタンプの利用
このタイムスタンプは、シリアル化された順序を反
映している。それに加えて、シリアル化された順
序は、外的整合性(あるいは、それと等価だが、
線形化可能性)を満たしている。すなわち、あるト
ランザクションT1が、別のトランザクションT2が始
まる前にコミットするなら、T1のコミット・タイムスタ
ンプは、T2のそれよりも小さい。
Spannerは、グローバルなスケールで、こうした
保証を与えた最初のシステムである。
101. Start-Timestamp
Snapshot Isolationでは、それぞれのトランザ
クションは、Start-Timestampと呼ばれる、トラ
ンザクションを開始した時刻のデータのスナップ
ショット(コミットされた)からデータを読み込む。こ
の時刻は、トランザクションの最初の読み込みの
時刻の前の時刻になる。
トランザクションのStart-Timestamp以降にア
クティブになった他のトランザクションによる更新
は、このトランザクションからは見えない。
102. ReadとWrite
Snapshot Isolationの中のトランザクションは、
そのStart-Timestampからのスナップショットの
データが維持可能である限り、読み込みがブロッ
クされることはない。
トランザクションでの書き込み(updates,
inserts, deletes)もまた、このスナップショットに
反映される。もしトランザクションが、このデータに
二度目のアクセス(reads あるいはupdates)を
するなら、ふたたび、読み出される。
103. Commit-Timestamp
トランザクションT1が、コミットの準備ができた時、
それはCommit-Timestampを取得するのだが、
それは、既に存在するStart-Timestampあるい
はCommit-Timestampより、大きな値を持つ。
トランザクションは、T1の実行間隔
[StartTimestamp, Commit-Timestamp]
内にCommit-Timestampを持つ他のトランザ
クションT2が、T1が書き出したデータと同じデー
タを書き出していない場合に限り、コミットに成功
する。
106. Incrementally Indexing the
Web with Percolator
2010年10月4日
Frank Dabek and Daniel Peng
at OSDI, 2010
https://docs.google.com/presentation/d/1gKD4FbaUIGtoi
mP6-ZB0iiW8V0KZt8fVET-Cfu5KiG8/present#slide=id.i0
108. c:data データ自身を格納
c:lock コミットされていないトランザクションは、
このCellに書き込む。PrimaryLock
の場所を含んでいる。
c:write コミットされた現在のデータ。
データのタイムスタンプを格納。
c:notify ヒント: observerが走る必要がある
かもしれない
c:ack O Observer “O”が走った。最後に
成功した実行のタイムスタンプを格納。
112. トランザクションは、コミットのポイントに到達する。
primaryロックを消して、それをコミットタイムスタンプと呼
ばれる新しいタイムスタンプ8の下で、新しい書き込みレ
コードと置き換える。この書き込みレコードは、データが格
納されているタイムスタンプへのポインターを含んでいる。
これ以降、”Bob”行の”bal”カラムを読むものは、値3ド
ルを見ることになる。
114. Webスケールの分散トランザクション
の「存在証明」
Googleは、この技術を「Webスケールの分散ト
ランザクションの「存在証明」」と呼んでいる。
"Incrementally Indexing the Web with
Percolator"
https://docs.google.com/presentation/d/
1gKD4FbaUIGtoimP6-
ZB0iiW8V0KZt8fVET-Cfu5KiG8/
present#slide=id.i0
116. Paxos
Leslie Lamport
"The Part-Time Parliament"
http://research.microsoft.com/en-us/
um/people/lamport/pubs/lamport-paxos.pdf
"Paxos Made Simple"
http://research.microsoft.com/en-us/
um/people/lamport/pubs/paxos-simple.pdf
118. Spannerの階層構造
Universe – Zone - Spanserver
ユニバースは、Spannerのシステム全体である。
Spannerのユニバースは、一群のゾーンで組織されてい
る。それぞれのZoneは、大まかにいって、BigTableの
サーバーに相当するものである。
ゾーンは、一つのゾーン・マスターと、百から数千の間の
スパンサーバーを持っている。前者は、スパンサーバーに
データを割り当てる。後者は、データをクライアントにサー
ビスする。
ユーザーのデータに割り当てられたスパンサーバーの場
所を特定する為に、そのゾーンのロケーション・プロキ
シーが利用される。
122. レプリカ群がPaxosグループを形成
一群のレプリカが、Paxos グループを形成する。
Paxos状態マシンは、マッピングのバッグ
(key:string, timestamp:int64) → string
のレプリカを整合的に実装するのに利用されてい
る。それぞれの複製のキー・バリュー・マッピング
の状態は、対応するタブレットに格納される。
書き出しは、リーダーのPaxosプロトコルから開
始されなければならない。読み出しのアクセスの
状態は、十分更新されたどのレプリカの下にある
タブレットからでも直接に取得出来る。
123. SpanserverのLock Table
リーダーである全てのレプリカのスパンサーバー
は、コンカレンシーのコントロールを実装する為の
ロック・テーブルを実装している。
ロック・テーブルは、ツー・フェーズ・ロッキングの
為の状態を含んでいる。それは、一連のキーを
ロック状態にマップする。
ロック・テーブルを効率的に管理する上で、長い
期間、生き続けるリーダーを持つことは、本質的
に重要であることに注意。Spannerのサーバー
のリースは、10秒と長い
124. Txn managerのスキップ
もしトランザクションが、一つのPaxosグループを
含んでいるだけなら(大部分のトランザクションの
場合)、それは、トランザクション・マネージャをバ
イパス出来る。というのは、ロック・テーブルと
Paxosが一緒になって、トランザクションの保証を
提供するからである。
125. Paxos Groupをまたいだ調整
もしトランザクションが一つ以上のPaxosグルー
プを含んでいたら、これらのグループ・リーダーが
ツー・フェーズ・コミットの調整役を演ずる。
参加グループの一つが、調整役に選ばれる。そ
のグループの参加者のリーダーは、調整役リー
ダーと呼ばれ、グループのスレーブは、調整役ス
レーブと呼ばれる。
それぞれのトランザクション・マネージャの状態は。
直下のPaxosグループに格納される。(それ故、
複製される。)
126. 大規模自律分散というアプローチ
「Spannerは、もっとも高い抽象のレベルでは、
全世界に広がっているデータセンター内の沢山の
Paxos状態マシン群をまたいで、データを分割し
たデータベースである。」
Spannerは、単なる「大規模分散システム」では
なく、それぞれが自律的な耐障害性を備えた「大
規模自律分散システム」なのである。それによっ
て、次のことが可能となった。
「Spannerは、数百のデータセンターをまたいだ
数百万のマシンと、数兆行のデータベースにス
ケールアップするように設計されている。」
128. 「ギルダーの予想」
「ネットワークがコンピュータの内部バスと
同じぐらい早くなれば、マシンは、特定の目
的を持ったデバイスのあつまりへとネット
ワーク上で分解するだろう。」
ただ、このように、ローカルとリモートの区別が、
ネットワークのスピード・アップによってなくなるだ
ろうという考え方には、強い異論がある。
129. ローカルとリモートを峻別する立場
今から20年前にこうした問題は、はっきりと提起
されていた。彼らの認識は、ネットワーク管理をし
ている人なら誰でも知っている、Leaseの導入と
して、結実する。Jim Waldoは、“A Note on
Distributed Computing”
http://www.eecs.harvard.edu/~waldo/R
eadings/waldo-94.pdf で、次のように述べる。
130. “A Note on Distributed Computing”
Jim Waldo et al.
http://www.sunlabs.com/techrep/1994/sml
i_tr-94-29.pdf
ローカルなプログラミングとリモートなプログラ
ミングを、はっきりと区別すべきだという立場
135. クラウド技術の特徴
ScalabilityとAvailability
コモディティ化したマシンを集積するスケールアウ
トの手法に基づくクラウド技術は、Scalabilityと
Availability両方の担保を中核とする。
そこでの技術的飛躍のポイントは、「マシンは、例
外的に、あり得ない不運がかさなってクラッシュす
るのではなく、いつでも、例外なしに壊れるもの
だ。」という認識にある。
かつて、GoogleのPlatforms ArchitectのBen
Jaiは、次のように語ったことがある。
136. 「信頼性の高いハードは、ソフトウェア
技術者を怠け者にする。」
「3-year MTBFだとしても, 1000台のうち一台
は、毎日だめになるという計算になる。最小の
Googleのアプリケーションでも、2000台のマシ
ンを必要とする。こうした障害をソフトでどう対応
するかデータの多重化と冗長化は、この規模では
どうしても必要となる。」
「だから、なぜ、高価な信頼性の高いハードのこと
で思い悩むのか? 信頼性の高いハードは、ソフト
ウェア技術者を怠け者にする。障害に強いソフト
ウェアが、安いハードを役に立つものに変えるの
だ。」
139. Simulating Physics with
Computers
1982年Richard P. Feynman
http://www.cs.berkeley.edu/~christo
s/classics/Feynman.pdf
141. 量子論的システムは、古典的なコン
ピューターでシミュレートされるか?
量子論的なシステムは、古典的な万能計算機で、
確率論的にシミュレートされるだろうか? 別の言
い方をすれば、コンピューターは、量子論的なシ
ステムが行うのと、同じ確率を与えるだろうか?
コンピューターを今まで述べてきたような古典的
なものだとすれば(前節で述べたような量子論的
なものではないとすれば)、また法則はすべて変
更されないままで、ごまかしもないとすれば、答え
は明らかにノーである。
142. 量子コンピュータ
-- 万能量子シミュレーター
それは、新しいタイプのコンピューター、量子コン
ピューター?で可能になるだろう。
私が理解する限りでは、それは量子論的なシステ
ムによって、量子コンピューターの要素によって、
シミュレート出来るようになることは、いまや、明ら
かになった。それはチューリング・マシンではない。
別のタイプのマシンである。
143. Quantum theory, the Church-
Turing principle and the
universal quantum computer
1985年David Deutsch
http://www.cs.berkeley.edu/~christo
s/classics/Deutsch_quantum_theory.
pdf
144. Church-Turing-Deutche Thesis
Church-Turingの仮説の基礎には、暗黙の物
理学的主張があることが考察される。
この物理学的主張は、次のような物理学的原理
として、明確に表現することが出来る。
「有限な方法で実現可能な物理システムは、有限
な手段によって操作される万能計算機械のモデ
ルで完全にシミュレート可能である。」
古典物理学と万能チューリング・マシンは、前者
は連続的で後者は離散的であるので、この原理
には従っていない。
145. 万能量子コンピューター
チューリング・マシンのクラスの量子論的一般化
である計算機械のクラスが記述され、量子論と、
この「万能量子コンピューター」が、先の原理と両
立可能であることが示される。
この万能量子コンピューターをまねた計算機械は、
原理的には、構築可能である。そしてそれは、い
かなるチューリング・マシンによっても再生不可能
な、多くの目覚ましい特徴を持つであろう。
147. Cyber-Physical Systemsと
自律型のシステム
多くの電気機器は、電力さえ供給されれば、一定
の役割を果たすことが出来る。
情報システムであっても、ネットワーク接続が必
須ではないものがある。インターネット普及以前
の「パソコン」「ワープロ」がその一例だ。
ロボットも、全てが外部からコントロールされて動
作するのでは、操り人形と大差ない。ロボットで重
要なのは、自律的に判断し動作する能力である。
IoTのコンセプトには、こうした自律型のシステム
は含まれないが、Cyber-Physical Systemsは、
これらを含んでいる。
148. 自律分散システム
自律分散システムというのは、相対的な自律性を
持つ部分システムがネットワークで結ばれて、シ
ステム全体が協調動作を行うシステムである。
情報の流れで言えば、すべての情報を一カ所に
まとめるのではなく、システムの構成要素の階層
的な「役割」の分担に基づいて、局所的に処理出
来る情報は全てローカルに処理する「自律性」を
それぞれの構成要素に与え、ローカルな範囲で
は処理が閉じない種類の情報のみを、上位階層
に伝えるというモデルである。
149. 自律性は、相対的なものである
「自律分散」の考え方は、ある種のデータの一カ
所への集中を排除しない。Amazonの倉庫ロ
ボットkivaでは、どこに何があり、どこで何をすべ
きかは、おそらく中央のコピュータが制御している。
ただロボットの動きの多くは、ロボットが自律的に
制御している。
https://www.youtube.com/watch?v=lWs
MdN7HMuA
150. データの集約・集中処理と
自律分散
もっとも、検索のように、データ集約型でしか処理
出来ないものもある。ただ、この点では、Google
のCaffeine / Percolator でのBigTableのトラ
ンザクション機能の強化から、Spannerへの「進
化」は、興味深いものである。
「Spannerは、もっとも高い抽象のレベルでは、
全世界に広がっているデータセンター内の沢山の
Paxos状態マシン群をまたいで、データを分割し
たデータベースである。」
151. データの集約・集中処理と
自律分散
こうした定式化は、データ集約型のシステムにお
いても、システムの拡大にともなってシステムの
整合性を維持する為には、自律分散の考えに基
づいたシステム設計が、重要であることを示唆し
ている。
153. 自律分散のモデル– 生命・知能
すべての細胞にはDNAのフルセットが含まれて
いるのだが、細胞は、その情報の一部のみを利
用して特定の機能を持つ細胞に分化する。分化
した細胞は、器官を構成し、それが他の器官と協
調しつつ自律的な役割を果たすことで、全体とし
ての生命活動が維持される。
人間の脳もそうだ。脳内には無数の脳細胞があ
るのだが、それには特定のタイプがあり、特定の
役割を担っている。それが特定のパターンで結び
つくことによって、認識・感情・知覚・行動が生ま
れる。
154. 自律分散のモデル– 社会的昆虫
蟻や蜂のような、社会的な昆虫の「社会」も、自律
分散のモデルと言える。
女王蜂は、働き蜂がどこにいて何をしていてなに
を見ているかを把握する必要はない。女王蜂も働
き蜂も「本能」に基づいて自律的に行動する。そ
れでも、蜂の社会システムはうまく機能している。
それは、女王蜂・働き蜂の「本能」の実体である、
それぞれに埋め込まれた遺伝子情報が、そのよ
うにプログラムされているからである。
155. 自律分散のモデル– 人間の社会
人間の社会も、自律分散のシステムと言える。特
に、市場を通じた経済活動は、基本的には、自由
意志を持つとされる個人・法人の自律的な活動に
基づいている。
生産・流通・消費の過程が、経済のネットワークを
構成する。
Industrie 4.0の「水平方向のCyber-Physical
Systems」は、自律分散型のシステムになる。
156. 自律分散のメリット
データ集約型のモデルは、まさにその点において、
システムの脆弱性が生まれる可能性がある。そ
れに対して、自律分散型のモデルは、Single
Point of Failure を持たないので、より頑健なシ
ステムを構築することが出来る。
データ集約型のモデルでは、情報の爆発的増大
が起こりえる。自律分散型のシステムでは、無用
な情報の爆発を防ぐことが出来る。
158. 新しいネットワーク・メディアの成立
コミュニケーションと情報共有、自由時間の享受
への欲求は、現代のIT技術の普及をドライブする
最大のものである。
クラウドとクラウド・デバイスを骨組みとする、新し
いネットワーク・メディアは、こうした欲求にドライ
ブされて、来る10年の間には、世界人口のほと
んど全てを包摂するものへと発展するだろう。
同時に、新しいネットワーク・メディア上のCyber
空間だけに、我々の生活やITの可能性が閉じる
ことは無いという展望も重要なものだ。
159. CyberとPhysical
情報だけのCyberな世界に閉じること無く、また、
道具や単純な機械だけのPhysicalな世界でもな
く、CyberとPhysicalが相互作用するCyber-
Physical の世界に、ITの世界は広がって行くだ
ろう。
IoT / Big Data は、Physical Cyber の情
報の流れを、Robot / 3D Printerは、Cyber
Physical な現実世界を変える働きの代表例であ
る。
160. 新しい経済のネットワーク
Cyber-Physical Systemsが新たな役割を果た
すことを期待される、もっとも広大な開拓地は、現
実世界の経済が有力な候補である。製造・流通・
消費の全過程を包摂する、効率的で持続可能な、
新しい経済のネットワークが模索されるだろう。
とりわけ、ロボットや3Dプリンターの導入による、
製造の現場と労働の変化が、新しい経済のネット
ワークの形成に、おおきなインパクトを与えるだろ
う。
161. 集中と分散
新しいネットワーク・メディアと新しい経済のネット
ワークの形成の中で、データと処理の集中は、さ
らに進むだろう。必ずしも、Big Brotherのような
ディストピアを想像する必要は無いかもしれない。
それは処理コストを低減し、利便性を高める側面
を持つ。それらは、適切に管理されさえすれば、
低料金の社会インフラ化して行く可能性は高い。
同時に、ハードウェアの進化と低価格化により、
処理の自律分散化も、さらに進むだろう。それは、
システムを全体として、頑健なものに変える。
162. 未来展望-- 生産の自律分散化
おそらく、21世紀の最大の課題は、新しいネット
ワーク・メディアと、新しい経済のネットワークのも
とで、生産のスタイルを、持続可能な成長を保証
し、環境にインパクトを与えない自律分散型のモ
デルに変革出来るのかというところにある。
明確なのは、それを推進する最も大きな力は、IT
とその更なるイノベーションだということである。
163. マルゼミ予告「Cyber-Physical
Systemsと自律分散システム」
来月8月1日開催のマルゼミは、今回のマルレ
クを受けて、3Dプリンターとロボットを取り上
げます。是非、ご参加ください。
日時: 8月1日(金) 19:00~
場所: 秋葉原カスペルスキー社会議室
登壇者:
丸山不二夫マルレクふりかえり
大迫幸一「3Dプリンタの未来」
中川友紀子「ロボットのいる生活とIT」
166. MS Azureのデータノードの多重化
データの読み込みは
Primaryノードからの
読み込みで完了する
データの書き出しは
Secondaryノードにコ
ピーされる。この際、多
数決原理(quorum)に
従う。
P
Ack Ack
S
S
S
S
Write Write
Write Write
Ack
Ack
Read
Value
Write
Ack
167. MS Azureのデータノードの再構成
再構成のいくつかのタイプ
Primary が故障する
故障したSecondaryを除く
修復したreplicaの追加
新しいSecondaryの準備
前提
故障の検出
リーダーの選挙
こけた!
X
P
B S
P S
S
XS
死んだ!
これらの故障が重複して起き
ても安全なように設計する
174. ビッグデータ論の特徴
— PhysicalからCyberへ
IoTでは、無数のセンサーから沸き出す巨大な情
報「ビッグデータ」の処理が中心的な課題になると
いう議論がよくある。そうした処理が必要な場合
が存在し、それが技術的にチャレンジングな課題
であるのは、確かである。
ただ、物理的な世界から発した情報が、全て一カ
所にまとめられ、情報として処理されるというイ
メージは、少し狭いとも思う。なぜなら、そこでは、
PhysicalからCyberへと、情報が一方的に流れ
るだけだけからである。
175. ビッグデータ論の特徴
— PhysicalからCyberへ
それは、世界で起きていることを、全て知りうる「全
智」の存在を考えることに似ている。ただ、世界の
全てを観照的に知るだけなら、彼は、「全能」とはい
えない。世界に働きかけ、世界を変えてゆく「手足」
を持ってはじめて、知り得たことが役に立つ。
Physical からCyberに情報が流れるだけでなく、
CyberからPhysicalへの情報の流れが、現実を変
えてゆく力を持つCyber-Physical Systemsの方
が、強力なのは確かだと思う。もっとも、両方の能力
を持つシステムは、人間以外には、まだ存在しない
ようにも見える。
177. ビッグデータ集約の二つの目的
「ビッグデータ」技術というのは、一方では、検索
やBIシステムが典型的にそうなのだが、ビッグ
データから、人間が利用可能な、スモールデータ
を抽出する技術である。
「ビッグデータ」技術は、他方では、金融の世界で
のhigh-frequency tradingや、広告の世界で
のreal-time biddingのように、人間の介在なし
に、機械が人間に代わって「意思決定」を行う技
術である。
178. 3Dプリンターとロボット
— CyberからPhysicalへ
センサー・ネットワーク+ビッグデータ処理が、
PhysicalからCyberへという情報の流れの代表
的な例だとすると、CyberからPhysicalの情報の
流れを代表する例は、何になるのだろう?
現実を変えるという意味では、我々が用いる道具
や機械は、全て、そうした役割を持つ。自動車
だって、我々の物理的な位置を変えることで、現
実を変える。ただ、多くの道具や機械は、人間が
直接にコントロールしている。
183. Introduction to Embedded
Systems - A Cyber-Physical
Systems Approach
2011年
E. A. Lee and S. A. Seshia,
http://leeseshia.org/releases/LeeSeshia_DigitalV1_08.pdf
184. 1 Introduction
I Modeling Dynamic Behaviors
2 Continuous Dynamics
3 Discrete Dynamics
4 Hybrid Systems
5 Composition of State Machines
6 Concurrent Models of Computation
II Design of Embedded Systems
7 Embedded Processors
8 Memory Architectures
9 Input and Output
10 Multitasking
11 Scheduling
185. III Analysis and Verification
12 Invariants and Temporal Logic
13 Equivalence and Refinement
14 Reachability Analysis and Model Checking
15 Quantitative Analysis
IV Appendices
A Sets and Functions
B Complexity and Computability
194. Spanner: Google’s
Globally-Distributed Database
Wilson Hsieh
representing a host of authors
OSDI 2012
http://static.googleusercontent.com/external_content/untrusted_dlcp/
research.google.com/ja//archive/spanner-osdi2012.pdf
http://research.google.com/archive/spanner.html
Video:
https://www.usenix.org/conference/osdi12/elmo-building-globally-distributed-
highly-available-database
195. Spannerとは何か?
Spannerは、スケーラブルで、マルチ・バージョン、
グローバルに分散し、レプリカの同期を行う、
Googleのデータベースである。それは、グロー
バルなスケールでのデータの分散と外的整合的
な分散トランザクションをサポートした、初めての
システムである。
もっとも高い抽象のレベルでは、それは、全世界
に広がっているデータセンター内の沢山のPaxos
状態マシン群をまたいで、データを分割したデー
タベースである。
196. Spannerとは何か?
Spannerは、データの量やサーバーの数が変化
するに応じて、マシン間でデータを再分割する。そ
れは、マシン間で(データセンター間でさえ)、自動
的にデータを移動して、負荷のバランスを取り、マ
シンの失敗に対応する。
Spannerは、数百のデータセンターをまたいだ数
百万のマシンと、数兆行のデータベースにスケー
ルアップするように設計されている。
197. Spannerと時間同期
こうした特徴は、たとえトランザクションが分散して
いたとしても、Spannerがトランザクションにグ
ローバルに意味のあるコミット・タイムスタンプを
割り当てるという事実によって可能になった。この
タイムスタンプは、シリアル化された順序を反映し
ている。それに加えて、シリアル化された順序は、
外的整合性(あるいは、それと等価だが、線形化
可能性)を満たしている。
199. True Time
こうした性質を可能にした重要なものは、
TrueTime API とその実装である。このAPIは、
直接に、時計の不確実さを、あらわに示すもので
ある。そして、Spannerのタイムスタンプは、実装
が提供する不確実さの範囲にディペンドしている。
もし、不確実さが大きければ、Spannerは、この
不確実さを待つ為に、スピードを落とす。
この実装は、複数の現代的な時計(GPSと原子
時計)への参照を利用することで、不確実性を小
さなもの(一般的には、10ms以下)にとどめよう
とする。
200. IoP CPS
初出1999年
Kevin Ashton
2006年
NSF
構成Internet+Things Cyber+Physical
当初のターゲットThingsの情報Physical Systemsのコント
ロール
現在インターネット接続の拡大と
デバイスの普及
当初の担い手情報系(GoFを除く) 組込・制御・ロボット系
問題意識ナイーブな「インターネットの
拡大」
物理系の特質の重視。
二つの異なるモデル
ネットワークの特性ベスト・エフォート正確なタイミング
同期・同時性の重要性
自律型システム? 自律型システムを含む
適用領域Everything Social Value Chain
今後の展望第四次産業革命
201. “A Note on Distributed Computing”
Jim Waldo et al.
http://www.sunlabs.com/techrep/1994/sml
i_tr-94-29.pdf
ローカルなプログラミングとリモートなプログラ
ミングを、はっきりと区別すべきだという立場
204. Google File Systemの
Availability
Google File SystemのAvailabilityは、基本
的には、データを蓄える役割を果たすChunk
Serverを多重化(通常は三重化)することによっ
て支えられている。
207. MS Azureのデータノードの多重化
データの読み込みは
Primaryノードからの
読み込みで完了する
データの書き出しは
Secondaryノードにコ
ピーされる。この際、多
数決原理(quorum)に
従う。
P
Ack Ack
S
S
S
S
Write Write
Write Write
Ack
Ack
Read
Value
Write
Ack
208. MS Azureのデータノードの再構成
再構成のいくつかのタイプ
Primary が故障する
故障したSecondaryを除く
修復したreplicaの追加
新しいSecondaryの準備
前提
故障の検出
リーダーの選挙
こけた!
X
P
B S
P S
S
XS
死んだ!
これらの故障が重複して起き
ても安全なように設計する
210. Client
A
Client
B
Version Rating
5 : Ch9, Jan-1, 3
1 : Ch9, Jan-2, 2
Entityの取得
9 : Ch9, Jan-3, 6
システムの管理するversionを
Etagとして取得する
211. Entityをローカルに更新する
Client
A
Client
B
Version Rating
2: Ch9, Jan-2, 5 2: Ch9, Jan-2, 4
1 : Ch9, Jan-2, 2 1 : Ch9, Jan-2, 2
5 : Ch9, Jan-1, 3
1 : Ch9, Jan-2, 2
9 : Ch9, Jan-3, 6
212. データを送ってVersionをチェックする
Client
A
Client
B
5 : Ch9, Jan-1, 3
1 : Ch9, Jan-2, 2
9 : Ch9, Jan-3, 6
If-Match: Ch9, Jan-2, 5
1
Version Rating
1: Ch9, Jan-2, 5 1: Ch9, Jan-2, 4
213. Versionが合えば、成功である
Client
A
Client
B
5 : Ch9, Jan-1, 3
2 : Ch9, Jan-2, 5
1 2
9 : Ch9, Jan-3, 6
2: Ch9, Jan-2, 5
If-Match: Ch9, Jan-2, 5
1
Version Rating
1: Ch9, Jan-2, 5 1: Ch9, Jan-2, 4
システムはVersionとデータを更新し、
Client-Aを更新する。
214. Versionが合わなければ、失敗である
Client
A
Client
B
Error:
412
2: Ch9, Jan-2, 5 1: Ch9, Jan-2, 4
5 : Ch9, Jan-1, 3
2 : Ch9, Jan-2, 5
1 2
9 : Ch9, Jan-3, 6
If-Match:
1
Version Rating
1: Ch9, Jan-2, 5 1: Ch9, Jan-2, 4
1: Ch9, Jan-2, 4
1: Ch9, Jan-2, 4
システムは、Precondition failed (412)
を返す。
216. Start-Timestamp
Snapshot Isolationでは、それぞれのトランザ
クションは、Start-Timestampと呼ばれる、トラ
ンザクションを開始した時刻のデータのスナップ
ショット(コミットされた)からデータを読み込む。こ
の時刻は、トランザクションの最初の読み込みの
時刻の前の時刻になる。
トランザクションのStart-Timestamp以降にア
クティブになった他のトランザクションによる更新
は、このトランザクションからは見えない。
217. ReadとWrite
Snapshot Isolationの中のトランザクションは、
そのStart-Timestampからのスナップショットの
データが維持可能である限り、読み込みがブロッ
クされることはない。
トランザクションでの書き込み(updates,
inserts, deletes)もまた、このスナップショットに
反映される。もしトランザクションが、このデータに
二度目のアクセス(reads あるいはupdates)を
するなら、ふたたび、読み出される。
218. Commit-Timestamp
トランザクションT1が、コミットの準備ができた時、
それはCommit-Timestampを取得するのだが、
それは、既に存在するStart-Timestampあるい
はCommit-Timestampより、大きな値を持つ。
トランザクションは、T1の実行間隔
[StartTimestamp, Commit-Timestamp]
内にCommit-Timestampを持つ他のトランザ
クションT2が、T1が書き出したデータと同じデー
タを書き出していない場合に限り、コミットに成功
する。
221. 複雑さを考える--- Complexity
Quanta and Platform Definition
Summary of Jim Waldo‘s Keynote at
the 10th Jini Community Meeting
http://www.jini.org/files/meetings/tenth/vid
eo/Complexity_Quanta_and_Platform_Defin
ition.mov
http://www.jini.org/files/meetings/tenth/pr
esentations/Waldo_keynote.pdf
222. 複雑さにおける基本的な飛躍
線形実行(SEQ) – 人生は善良でシンプルであった
マルチ・スレッド(MT) – ツールと優秀なプログラマが
MTについて考えることが必要
マルチ・プロセス(MP) – カーネルの開発者だけでな
く誰もが利用できる。実際には、MTの前に起きた。
マルチ・マシン(MM) 同一ネットワーク上の–
マルチ・プロセスと同じではないのだが、ある人たちは、
そう考えている
信頼できないマルチ・マシンたち(MMU) – 本質的に
は、Webの世界である
223. それぞれの段階を通り抜ける際、
我々は、何かを失う
マルチ・スレッドへ:
我々は、順序を失う(複数のことが同時に起こ
る)。これは、難しい。なぜなら、我々は、自然
には、シーケンシャルに考えるから。
マルチ・プロセスへ:
単一のコンテキスト(すなわち、我々が信頼し
うる共有コンテキスト)を失う。グローバルな状
態が、開発のあらゆるところで利用される。
(すべてをスタティックに考えよ)
224. それぞれの段階を通り抜ける際、
我々は、何かを失う
マルチ・プロセスからマルチ・マシンへ:
我々は、状態を失う。「システム」のグローバ
ルな状態というのは、虚構である。興味深い
分散システムには、整合的な状態というもの
は存在しない。(Lamport: http://research.
microsoft.com/users/lamport/pubs/pubs.html )
分散OSのプロジェクトは、グローバルな状態
を導入しようとしたが、大々的に失敗した。
信頼できないマルチ・マシンたちへ:
誰を信ずることが出来るか分からない難しい
状況の中で、我々は信頼を失う。
225. しかし、我々は何かを得てきた
Seq to MT : 並列処理
MT to MP : プロセスの分離(安全を与える)
MP to MM : 独立した失敗(何かまずいこと
が起きても、システムの部分は生きのこる)
MM to MMU : スケール(webスケール、イ
ンターネットスケール). 誰か他の人のリソース
を利用せよ(あるいは、他の誰かが、我々のリ
ソースを利用することを認めよ)
227. c:data データ自身を格納
c:lock コミットされていないトランザクションは、
このCellに書き込む。PrimaryLock
の場所を含んでいる。
c:write コミットされた現在のデータ。
データのタイムスタンプを格納。
c:notify ヒント: observerが走る必要がある
かもしれない
c:ack O Observer “O”が走った。最後に
成功した実行のタイムスタンプを格納。
231. トランザクションは、コミットのポイントに到達する。
primaryロックを消して、それをコミットタイムスタンプと呼
ばれる新しいタイムスタンプ8の下で、新しい書き込みレ
コードと置き換える。この書き込みレコードは、データが格
納されているタイムスタンプへのポインターを含んでいる。
これ以降、”Bob”行の”bal”カラムを読むものは、値3ド
ルを見ることになる。
234. 1 class Transaction {
2 struct Write { Row row; Column col; string value; };
3 vector<Write> writes_ ;
4 int start_ts_ ;
5
6 Transaction() : start_ts_(oracle.GetTimestamp()) {}
7 void Set(Write w) { writes_.push_back(w); }
クラスTransactionの働きを見てみよう。
まず、Transactionのインスタンスの生成時に、
start_ts_には、その時点のタイムスタンプが
入れられる。6行目。
235. データの読み込み:bool Get(Row row,
Column c, string* value) の働き
row中の、コンカレントなwriteを通知するロック
c:lockを、過去からstart_ts_まで、チェックする。
ペンディングされたロックがあれば、クリーンを試
みて待つ。なければ、次に進む。
c:writeをチェックして、過去からstart_ts_まで
にコミットされた、書き込みをみつける。なければ、
データはない。
c:writeからコミットされたタイムスタンプを取得。
c:dataから、コミット・タイムスタンプ時点での値
を読み出す。
236. 8 bool Get(Row row, Column c, string* value) {
9 while (true) {
10 bigtable::Txn T = bigtable::StartRowTransaction(row);
11 // コンカレントなwriteを通知するロックをチェックする
12 if (T.Read(row, c+"lock", [0, start_ts_])) {
13 // ペンディングされたロックがあれば、クリーンを試みて待つ
14 BackoffAndMaybeCleanupLock(row, c);
15 continue;
16 }
17
18 // スタート・タイムスタンプ以下の最新の書き込みをみつける。
19 latest write = T.Read(row, c+"write", [0, start ts_]);
20 if (!latest write.found()) return false; // データなし
21 int data_ts = latest_write.start_timestamp();
22 *value = T.Read(row, c+"data", [data ts, data ts]);
23 return true;
24 }
25 }
237. 書き込み前処理:bool Prewrite(Write w,
Write primary) の働き
Prewriteは、セルcをロックしようとする。競合が
あるとfalseを返し、Abortする。
c:writeをチェックし、スタート・タイムスタンプの
後にコミットされたものであれば、Abortする
c:lockをチェックし、どんなタイムスタンプでもLo
ckされていれば、Abortする。
c:dataに値を書き込む。
c:lockに、スタート・タイムスタンプと、primary
lockの場所を書き込む。
コミットする。
238. 26 //Prewriteは、セルcをロックしようとする。競合があるとfalseを返す。
27 bool Prewrite(Write w, Write primary) {
28 Column c = w.col;
29 bigtable::Txn T = bigtable::StartRowTransaction(w.row);
30
31 // スタート・タイムスタンプの後にコミットされたものであれば、Abortする
32 if (T.Read(w.row, c+“write”, [start ts , ∞])) return false;
33 // . . . あるいは、どんなタイムスタンプでもLockされていれば、Abortする
34 if (T.Read(w.row, c+"lock", [0, ∞])) return false;
35
36 T.Write(w.row, c+"data", start ts_, w.value);
37 T.Write(w.row, c+"lock", start ts_,
38 {primary.row, primary.col} ); // プライマリーの場所
39 return T.Commit();
40 }
239. コミット:bool Commit() の働き
writes_ベクターの先頭がprimary、それ以降を
secondariesとする。
primary、secondariesへのPreWriteが失敗
すれば、コミット失敗。
コミット・タイムスタンプを取得する。
まず、primaryをコミット
c:lockのスタート・タイムスタンプ時点での値を読み込
む。なければ、コミット失敗。
コミット・タイムスタンプのc:writeに、スタートタイムス
タンプに書かれたデータへのポインターを書き込む。
240. コミット:bool Commit() の働き
コミット・タイムスタンプのc:lockを消す。
コミットする。
続いて、secondariesをコミット。secondaries
の各Writeごとに、
コミット・タイムスタンプのc:writeに、スタートタイムス
タンプに書かれたデータへのポインターを書き込む。
コミット・タイムスタンプのc:lockを消す。
コミット成功
241. 41 bool Commit() {
42 Write primary = writes_[0];
43 vector<Write> secondaries(writes_.begin()+1, writes_.end());
44 if (!Prewrite(primary, primary)) return false;
45 for (Write w : secondaries)
46 if (!Prewrite(w, primary)) return false;
47
48 int commit_ts = oracle .GetTimestamp();
49
50 // Primaryを、まずコミットする
51 Write p = primary;
52 bigtable::Txn T = bigtable::StartRowTransaction(p.row);
53 if (!T.Read(p.row, p.col+"lock", [start_ts_, start_ts_]))
54 return false; // 動作中にabort
55 T.Write(p.row, p.col+"write", commit ts,
56 start_ts_); // スタートタイムスタンプに書かれたデータへのポインター
57 T.Erase(p.row, p.col+"lock", commit ts);
58 if (!T.Commit()) return false; // コミットポイント
59 // 第二フェーズに進む
242. 60 // 第二フェーズセカンダリーセルにレコードを書き出す
61 for (Write w : secondaries) {
62 bigtable::Write(w.row, w.col+"write", commit_ts, start_ts_);
63 bigtable::Erase(w.row, w.col+"lock", commit ts);
64 }
65 return true;
66 }
243. bool UpdateDocument(Document doc) {
Transaction t(&cluster);
t.Set(doc.url(), "contents", "document", doc.contents());
int hash = Hash(doc.contents());
// dups table maps hash --> canonical URL
string canonical;
if (!t.Get(hash, "canonical-url", "dups", &canonical)) {
// No canonical yet; write myself in
t.Set(hash, "canonical-url", "dups", doc.url());
} // else this document already exists, ignore new copy
return t.Commit();
}
244. Spanner: Google’s
Globally-Distributed Database
Wilson Hsieh
representing a host of authors
OSDI 2012
http://static.googleusercontent.com/external_content/untrusted_dlcp/
research.google.com/ja//archive/spanner-osdi2012.pdf
http://research.google.com/archive/spanner.html
Video:
https://www.usenix.org/conference/osdi12/elmo-building-globally-distributed-
highly-available-database
246. スナップショットを同期する
グローバルな壁時計
==
外的整合性:
コミットの順序は、グローバルな壁時計の
順序を尊重する
==
タイムスタンプの順序は、与えられた
グローバルな壁時計の
順序を尊重する
タイムスタンプの順序== コミットの順序
OSDI 2012 246
250. タイムスタンプとTrueTime
Acquired locks Release locks
T
Pick s = TT.now().latest
s Wait until TT.now().earliest > s
OSDI 2012
Commit wait
average ε
average ε
250
252. Commit Wait and 2-Phase
Commit
TC
OSDI 2012
Acquired locks Release locks
TP1
Notify participants of s
Acquired locks Release locks
TP2
Acquired locks Release locks
Compute s for each Commit wait done
252
Start logging Done logging
Prepared
Compute overall s
Committed
Send s
253. Example
TC T2
TP
Remove X from
my friend list
Risky post P
s=8 s=15
Remove myself from
X’s friend list
sC=6
sP=8
s=8
Time <8
[X]
[me]
15
[P]
My friends
My posts
X’s friends
8
[]
[]
OSDI 2012 253
256. TrueTime Architecture
GPS
timemaster
GPS
timemaster
GPS
timemaster
Atomic-clock
timemaster
GPS
timemaster
GPS
timemaster
Client
Datacenter 1 Datacenter 2 … Datacenter n
Compute reference [earliest, latest] = now ± ε
OSDI 2012 256
257. TrueTime implementation
now = reference now + local-clock offset
ε = reference ε + worst-case local-clock drift
200 μs/sec
time
ε
+6ms
reference
uncertainty
0sec 30sec 60sec 90sec
OSDI 2012 257
259. 将来の課題
TrueTimeの改善
Lower ε < 1 ms
データベースの諸特徴をきちんと構築する
基本的な特徴の実装を終える
多様な検索パターンを効果的にサポートする
OSDI 2012 259
260. 結論
時計の不確実性をtime APIで具体化する
知らないことを知ることは、知らないことを知らない
より、いいことである
不確実性を利用した、アルゴリズムを再考すること
強いセマンティックは達成可能である
大規模なスケール!= 弱いセマンティックス
OSDI 2012 260
261. Spanner: Google’s Globally-
Distributed Database
James C. Corbett, Jeffrey Dean, Michael Epstein,
Andrew Fikes, Christopher Frost, JJ Furman, Sanjay
Ghemawat et al.
http://static.googleusercontent.com/external_conten
t/untrusted_dlcp/research.google.com/ja//archive/sp
anner-osdi2012.pdf
263. Abstract
Spannerは、スケーラブルで、マルチ・バージョン、
グローバルに分散し、レプリカの同期を行う、
Googleのデータベースである。
それは、グローバルなスケールでのデータの分散
と外的整合的な分散トランザクションをサポートし
た、初めてのシステムである。
この論文は、Spannerがどのような構造を持つ
か、その諸特徴、様々なデザインの決定の基礎
にある理論的な根拠、時計の不確実性を明らか
にする全く新しいtime APIについて述べたもの
である。