ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

Database Concurrency Control Papadimitriou 読書会 第1回 議論メモ

勉強会について

Database Concurrency Control Papadimitriou 読書会 第1回 - connpass の議論メモです。

自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。

特記の無い引用は本で議論した箇所を示しています。

Theory of Database Concurrency Control

Theory of Database Concurrency Control

[memo]は私のメモです。勉強会で議論された内容ではないことにご注意ください。

1.1 DATABASES AND CONCURRENCY

この本のベースはスケジューラの話となっている。

database (DB) はデータを長い期間保持する。また、この本ではデータをディスクやテープに保存すると想定している。

データは物理 (physical) と概念 (conceptual) の2層構造となっており、これを繋ぐのがDBの役割だ。

本の記述に "query language" とあるので、SQLを想定している。だが、APIでデータ操作を行うことも可能だろう。

"database management system" (DBMS) の主な機能は物理と概念のデータ構造をマッピングすることだ。それ以外にも security や concurrency control (CC) がある。

The Problem of Concurrency

DBはエンティティ (entity) で構成されている。エンティティはデータ構造をこれ以上分割できないところまで分割したものだ。

ステート (state) はエンティティに対して何らかの値をアサインする。

実世界での制限 (real-world restrictions) を integrity constraints と呼ぶ。これは一般的なDBが「制約」と呼ぶものよりも広い定義かもしれない。
実世界での制限とは銀行の預金残高がマイナスになったり、飛行機の座席数を超えて予約を受け付けてしまうことを防ぐことだ。


[memo]
Oracle Database 11g の用語集では "integrity constraints" を「整合性制約」と訳していました。
Oracle Database 11g 用語集

DBの状態(エンティティの値の組み合わせ)が integrity constraints を満たしているときを consistent state と呼ぶ。

残高の増減や飛行機の予約などで DB の状態が変わることを state transitions と呼ぶ。

many similar state transitions are grouped together and implemented by an application program.

" application program" とあるが、もっと広く処理全般を指し示しているか?

プログラムにも状態がある。
プログラムもDBも correct つまり consistent state でないとダメ。途中は inconsistent でいいが、最後は consistent にならないといけない。

プログラムを並行 (concurrent) に実行することでスループットを上げられるが、トランザクション間の予期せぬ相互作用により深刻なエラーが発生することもある。

Example 1.1 は Inconsistent Read Anomaly の例だ。


[memo]
Inconsistent Read Anomaly については以下の解説記事を参照ください。
いろんなAnomaly - Qiita

プログラム A, B が以下の処理を行うとする。
A : x := x - 1; y := y + 1
B : x := 2 * x; y := 2 * y
integrity constraints として "x + y = 0" があるとする。

A, B の順に処理すれば integrity constraints を満たす。

step X Y
--- -1 1
x = x - 1 -2 1
y = y + 1 -2 2
x = 2 * x -4 2
y = 2 * y -4 4

だが、A の処理中に B が割り込んだような場合に integrity constraints を満たさなくなることがある。

step X Y
--- -1 1
x = x - 1 -2 1
x = 2 * x -4 1
y = 2 * y -4 2
y = y + 1 -4 3

この本で Anomary の話をほとんどしていない。Papadimitriou は Anomary の定式化に価値を見出してないということかもしれない。

Example 1.1 は Serializable にこだわっておらず、結果的に consistent であればよいとしている。

OSとDBのCCは異なるものだ。
OSのCCは並行するプロセスのリソース競合の調停であり、リソースを使用するプロセスを優先度で決めたり、他方を待たせたりする。これに対し、DBのCCはトランザクションの分離 (Isolation) だ。
もう一つの違いは操作する対象だ。OSの操作するリソース(プリンタ、メモリ、プロセッサ)は "robustness" であり、やり直しがきく。だが、DBの操作する対象はデータであり、一度壊れるとやり直しがきかない。

1.2 THE MODEL

The fact that there are infinitely many entities is rather inconsequential; it will soon be clear from our model that at any instant only a finite number of entities can be relevant.

ここで言いたいことは、永遠の時間ではエンティティが無限個でも、ある有限の時間では有限個である、ということではないか。

エンティティは重ならないし分割できない。update に副作用がない。
副作用が無いと言うことは明示的に update したときだけが update になる。

各エンティティの取り得る値 x の可算集合 (enumerable set) がドメイン Dx である。integrity constraints C は Dxデカルト積 (Cartesian Product) の部分集合 (subset) だ。
この記述はページモデルとかオブジェクトモデルといったものを無視している。

Transactions

database step の read はエンティティの現在の値をプログラムの変数にアサインする。write はエンティティの現在の値をプログラムが計算した値に変更する。

write an entity (i.e., change the current value of the entity to a value previously computed by the program)

"change the current value" は Read Modify Write 前提なのか?だとすれば、update はよいが insert(つまり change ではない場合)をどう扱うのか?ここでのモデルだと初期値がある前提となっており、またその初期値は read できなくても良いのではないか?もしくはここでの change には insert も含んでいるのではないか?


[memo]
トランザクションを分割することを "Transaction Chopping" というそうです。 Weikum本から定義を引用します。

DEFINITION 8.8 Transaction Chopping
Let ti be a transaction program. A chopping of ti is a decomposition of ti into ordered pieces ti1, ... , tik (k ≥ 1, most often k ≥ 2) such that every database operation invoked by ti is contained in exactly one piece, and the order of operation invocations is preserved.
Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

トランザクションの分割では "hidden restrictions" を考える必要があります。

A transaction is a unit of consistency, a grouping together of several database steps, the combined execution of which is known to preserve the integrity constraints. A consequence is that there can be no "hidden restrictions" on inter-transaction behavior.

s1 = r1(x)r2(x)w1(x)w2(x)c1c2
s1 は Serializable でないため、TX2を abort することになります。
s2 = r1(x)c1r2(x)c2w3(x)c3w4(x)c4
s2 は TX1 → TX2 → TX3 → TX4 で Serializable となります。
ですが s1 の TX1 が s2 の TX1, TX3 に、 s1 の TX2 が s2 の TX2, TX4 に分割されていたとしたら、それは correctness といえるでしょうか?トランザクションの処理が在庫数の read と write だとすれば、s2 は実際の在庫数と矛盾してしまうかもしれません。


Definition 1.1 はエルブラン・セマンティクスを厳密に定義している。
"current value" という記述から、single version を前提としているかもしれない。

Definition 1.2 もエルブラン・セマンティクスのことをいっている。
Πは直積集合を意味していて、ここでの直積集合は a 以前に read した値の全てを指している。


[memo]
エルブラン・セマンティクス(Herbrand Semantics)理解メモ - ぱと隊長日誌

write する値はそれまでに read した値とアプリケーションのセマンティクスで決まる。

セマンティクス(もしくは interpretation)とは以下の定義といえる。

  • Definition 1.2 の fa の決め方を与えるもの
  • 何をどうする、という指針を与えるもの
  • 「writeする値を決めるルール」を決めるルール(メタ)を決めるもの

更新情報

2019/05/19

セクション「参考」を「関連記事」に変更しました。
また、関連記事に記事を追加しました。

AWSジャパン プロフェッショナルサービス オープンハウス 参加記録

オープンハウスについて

オープンハウスはAWSの採用イベントです。
今回は「プロフェッショナルサービス」のオープンハウスに参加してきました。その内容の記録を兼ねてご紹介します。

当日は以下の流れで行われました。
19:00-19:30 受付
19:30-20:15 社員による募集ポジションの説明
20:15-20:30 Q&A
20:30-21:30 懇親会

申込はプロフェッショナルサービスの採用ページから可能です。
プロフェッショナルサービス | AWS Japan Recruitment

その他、Twitterでも流れてきました。一例を埋め込んでご紹介します。

【参考】としている個所は私が挿入しています(補足や参考資料など)。

内容は私のメモをベースとしており、AWSのチェックを受けたものではないことをご了承ください。また、参加時点(2019/04/17)の内容であることも併せてご了承ください。

会社説明

勤続2年でも超ベテランと言われるぐらい人が入ってきている。
※質疑応答の中で、この発言の意図は人が多く入ってきているという意味であり、多く辞めているわけではない、と補足がありました。

AmazonAWSは別会社だが一体といってよい。行動指針も共有している。

チームを持つマネージャーで無くとも一人一人がリーダーである。
"Our Leadership Principles" がAmazon全体で貫かれている。

Our Leadership Principles (OLP)
カルチャー | AWS Japan Recruitment

Bias for Action:
浮かんだアクションをとりあえずやってみる。

Invent and simplify:
もっと良いやり方を考える。

OLPは日々の活動に深く入り込んでいる。毎日1回は誰かから聞くし、自身も発している。何かに悩んだらこの言葉に立ち返っている。

お客様へフォーカスすること、そして長期的な視野で投資することを継続している。
これはベゾスが97年に株主へ送ったレターから変わらない。


【参考】
アマゾン ジェフベゾス 1997 株主への手紙 - かぶぬしへのてがみ

成長サイクルはベゾスが紙ナプキンに書いた頃と変わらない。


【参考】
ビジネスの秘密は紙ナプキンの裏に - ITmedia エンタープライズ
記事内に当時のスケッチの画像が引用されています。Amazonのいくつかのページにも掲載されていましたが、時間の経過とともにリンクが切れそうでしたので、こちらの記事の引用に代えました。

Working Backwards
Amazonがお客様を起点に考えるために生み出したメカニズム。
まずはプレスリリースを考える。それは顧客と課題を想像するため。


【参考】
Amazon流の開発術では、まずプレスリリースを作る | fladdict

部門紹介

プロフェッショナルサービスとは、お客様がクラウドを使ってイノベーティブなビジネス価値を生み出すための有償コンサルティングサービス。
AWS プロフェッショナルサービス (AWS クラウドのコンサルティングサービス) | AWS

クラウドを活用するための段階を "Stages of Adoption" としている。
Capital One’s Cloud Journey Through the Stages of Adoption | AWS Cloud Enterprise Strategy Blog
まずはPROJECT(プロジェクト)から始め、FOUNDATION(基盤)、MIGRATION(移行)、REINVENTION(改革)と続いていく。

AWS クラウド導入フレームワーク (AWS CAF)
AWS クラウド導入フレームワーク
クラウド導入にあたり、お客さまにテクニカル面は念頭にあるが、ビジネス面に注意を払えていないことがある。これを両面からフォローするためのフレームワークとなっている。

AWS Digital Innovation Program
AWSでの手法をワークショップなどを通じてお客さまへ伝える。
お客様2,3名につきAWSのスタッフが1名ついてサポートする。

プロジェクトへの参画パターンには複数あるが、SIerと横並びの立ち位置でプロジェクトを推進することが非常に多い。

ロールの一部とその役割について。

  • エンタープライズサービスマネージャー
  • アプリケーション最適化
    • ウェブ3階層のアプリをマイクロサービスに最適化していく。
  • 運用インテグレーションスペシャリスト
    • 単に正常に動かし続けるだけでなく、新しいサービスを随時取り入れていく支援をする。
  • ビッグデータ
    • 渋滞情報から最適なルート案内を実現したい、故障予知を行いたい、といった要望を実現するためにどのようなデータを集めて活用するかを提案する。

プロフェッショナルサービスでのKPIの筆頭は "influenced revenue"。
コンサルティングのフィーや稼働率より、コンサルティングを開始してからの AWS サービスの利用料金の伸びを重視している。

社員の声

インフラストラクチャーアーキテクト(1人目)

前職ではクラウドを使うことなく AWS に入社した。

業務の割合(注:1週間の過ごし方より筆者の目測です)。
資料作成 = 1/3
会議 = 1/3
勉強 = 1/5

インフラストラクチャーアーキテクト(2人目)

前職は仮想化ベンダーのプロフェッショナルサービスに所属していた。

都心から離れたところに住んでいるため、基本的に在宅で勤務している。
社内会議などもリモートで参加可能。

業務の割合(注:1週間の過ごし方より筆者の目測です)。
資料作成 = 1/3
会議 = 1/3
移動 = 1/3
※移動時間が多いのは遠方のお客様対応があったこともあるようです。

資料作成の時間もお客様にチャージしている。1週間の60パーセント程度。

年度末はお客様都合(予算消化)で混み合うことがおおい。
4件程度掛け持ちすることも。

忙しい四半期を過ごした後はマネージャと相談のうえ、次の四半期を自身のインプット中心で計画を組む、ということもした。

質疑応答

求人情報の "PREFERRED QUALIFICATIONS" に「学位卒が望ましい」などと記載されていることがある。ただ、インタビューは職務経歴書をベースにして行われるため、学歴を意識することはない。

キャリアチェンジは社内公募に手を挙げることで可能となる。AWS内だけでなくAmazonに移ることもできる。

ロールとして名刺に載るのは一人一つだが、社内のコミュニティに複数属することで得意分野を活かす事ができる。

プロジェクトの規模は様々。平均的なケースでは2,3名で参画する。1名のこともある。
アサインに最終的なOKを出すのはマネージャー。スペシャリスト自身が提案を書き、マネージャーに承認をもらう。マネージャーの指示が下りるのを待つ方はいない。

年度の始めに個人別にゴールを立てる。稼働率・案件数・登壇・公開資料作成等。
また、毎週1on1で進捗を確認する。

褒め殺しの評価(360度評価)がある。同僚や上司にフィードバックをリクエストする。そのフィードバックコメントから、自分の何が長所でこれから何を伸ばすべきかを知ることができる。

会社(Amazon)の方針として社員数は公表できない。公式回答としては「お客様のニーズを満たすだけ社員がいる」。なら、なぜ採用活動をしているのかというのはさておき…。
社員数は猛烈な勢いで増えている。

日本の案件の中で英語力は求められない。ただ、トレーニングは英語が多い。
また、社内でスキルや成果をプレゼンすることがあるが、その相手とのコミュニケーションが英語であったりもする。
英語からは逃げ切れないと思われる。

選考の流れ

  1. 応募
  2. 書類選考
  3. 電話面接
  4. 対話面接(5回)
  5. オファー

応募からオファーまで3~5週間程度かかる。

懇親会での質疑応答

ソリューションアーキテクトとプロフェッショナルサービスの違いについて。
ソリューションアーキテクトは無償で半日相談に乗ってもらえたりする。だが、資料を作ってもらったり、レビューしてもらえるわけではない。
プロフェッショナルサービスは有償だが、資料作成やレビューなども頼むことができる。

試用期間は3ヵ月。その3ヵ月間で教育が行われる。
集合教育などもあるため、この期間だけはフレックスが利用できない。

社内セミナーの動画は英語も多いが、字幕の付いていることがほとんど。

プロフェッショナルサービスで自分たちが手を動かすこと(構築作業など)はほぼない(検証作業は除く)。自分たちで手を動かすことも可能だが高くつきすぎるので、お客様が契約しているSIerにお願いすることが多い。


【参考】
転職を考えている方は「手を動かすことはほぼない」という点に要注意です。
プロフェッショナルサービスはコンサルタントに近い役割と考えたほうが良いかもしれません。

Transactional Information Systems 5章 MVCC勉強会 第九回 議論メモ

勉強会について

Transactional Information Systems 5章 MVCC勉強会 第九回 - connpass の議論メモです。

自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。

本エントリのTX本とは "Transactional Information Systems" のことです。

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufmann Series in Data Management Systems)

今回が最終回ということもあり、5章を読み切った後の余った時間で議論(というか神林さんによる講義)した内容を中心にまとめます。

[memo]は私のメモです。勉強会で議論された内容ではないことにご注意ください。関連資料・引用・リンクを適宜挿入しています。

分散処理とトランザクション

分散処理を前提にすると、lock では無理で timestamp を採用するしかない。

TX本の時代より分散処理環境が進んだ。

SSI (Serializable Snapshot Isolation) は MVSR の一種ともいえる。プロトコルレベルでいえばTX本5章 (Multiversion Concurrency Control) に含まれる。だが、SI (Snapshot Isolation) の延長に SSI があることから、理論は SI から考える必要がある。

トランザクション (TX) の理論に分散処理の理論をまだ取り込めていない。TX の理論には通信が重いものだ、という発想がない。
分散処理の理論はノード間の通信(経路)を当然考えているのに対し、TX の理論は考えていない。

1core より NUMA (Non-Uniform Memory Access) のほうが低いパフォーマンスとなる可能性がある。メモリの局所性 (locality) が低いときにパフォーマンスが落ちる。
これに対する一つの解はアプリレベルでパーティショニングすることだ。


[memo]
NUMA 向けのアプリケーションの最適化 | iSUS

知見をためるには失敗を2,3回繰り返さないといけない。でも、失敗を2,3回繰り返すにはシステムを2,3回作らないといけない。ユーザ企業ではシステムをそんなに繰り返し作れない。
アメリカの場合、個人が企業を転々としながらそれぞれでシステムを作ることで、個人にノウハウをためている。

TX本 18章 Distributed Concurrency Control の議論

分散TXは大きくホモとヘテロの2つに分けられる。


[memo]
分散TXではありませんが、ホモとヘテロの違いをイメージしやすい説明がありました。

各ノードの性能が同一であるクラスタはホモ型クラスタと呼ばれる.ホモ型においてハードウェアの更新を行おうとした場合,段階的にシステムを更新したいという要求にこたえることができず,低コストで構築できるというメリットを生かしきることができない.そのため,ヘテロクラスタというクラスタ内の各ノードの性能が異なることを許容する形態が現れた.
三森 慶卓,須田 礼仁.ヘテロクラスタのための2次元列ベース分割における通信スケジューリングと分割の最適化

情報学広場:情報処理学会電子図書館

TX本 18.1節 の説明を踏まえると、TX本 18章 でのヘテロとはサーバの性能がバラバラであったり、異種DBを組み合わせるようなケースを想定しているように思われます。



a homogeneous federation is characterized by distribution transparency
TX本 18.1 Goal and Overview

ホモのほうが transparency が高い。つまり、ユーザが意識しなくて済む。

スケーラビリティはホモのほうが有利だ。同じスキーマでスケールできるため。

マイクロサービスアーキテクチャやCORBAはヘテロの一種といえる。

TX本 DEFINITION 18.2 "Conflict Serializability" 及びその続きの説明を踏まえて注意すべきは、local で serializable でも gloal に serializable とは限らないということだ。

データセットのサイズが5TBあり、全てメモリ上で処理したいとする。
1ノード5TBメモリを搭載した特注品が用意できればよいが、価格があまりに高くなりすぎる。
そこで1ノード1TBメモリを5ノード以上用意することになる。これでも1ノード5TBメモリの特注品を買うよりは安い。
ただ、1ノードと比較して5ノードであればCPUコア数も5倍になるとということであり、顧客としてはそれだけパフォーマンスが上がってほしい(5倍速、かつTXも欲しい)。が、実際には理想通りにパフォーマンスが向上しないというジレンマがある。

参考

Transactional Information Systems Chapter 5読み会 - nikezono
中園さんの勉強会メモ。「第N回」が今回に相当します。