SlideShare a Scribd company logo
トランザクション入門
2016 10/28
グランパーク田町 Tech Lunch
@kumagi
並行処理難しい
T本のスレッドがそれぞれNステップの処理を行う場合NTの状態を取りうる
。(状態爆発)
更にはシングルスレッド性能を上げるためにIntelではPentium Pro世代から
Out-of-Order実行が行われる。(プログラムは書いた通りにすら動いてい
ない)
同じプログラムを2度実行しても、全く同じ並行実行パターンをなぞる確
率は絶望的。(非決定的動作)
コンセプト:Atomic Object
オブジェクト指向プログラミングが話題だった頃に提唱されたコンセプト
・操作を示すメッセージを受け取る「オブジェクト」が存在する。
・個々のメッセージは「不可分」に実行される。
オブジェクトはQueueだったり配列だったり任意のクラスのインスタンスだった
りする
オブジェクト単位では何らかの論理的な逐次順序でメッセージを処理するだけ
このオブジェクトでシステムの登場人物を整理すればシステムを作りやすくなる
のでは?
Atomic Objectの実装:単一オブジェクトの場合
Lockされた期間中の一瞬で処理が行われたと想像すれば理解しやすい
その(想像上の)一瞬で処理が行われた瞬間の事をLinearization Pointと呼ぶ
T1
T2
Object
T1の処理A T2の処理X T1の処理B
処理A
処理X
処理B
青線は論理的な時間軸
Linearizability(線形化可能性)
「ある操作の開始から完了までの間のどこかの一瞬で処理が終わった」と定義で
きる性質の事をLinearizabilityと呼ぶ
普通の排他Lockを使っている場合、自然にこの性質を満たす。
で、そのLinearization Pointって具体的にいつ?→Lock期間内ならどこでもいい
T1
Object
この範囲内ならどこでもいい
Composability(合成可能性)
「ある性質を持った物を組み合わせた際、組み合わせた後も同一の性質を持つ」
という性質を「Composability」と言い、Lockから得られるLinearizabilityの
Composabilityは確認されている。
複数のオブジェクトを触る場合であっても、全てのロックが取れてる期間内なら
どこにでもLinearization Pointをマッピングして良い。
T1
Object1
Object1&2に対する操作
Object2
Object1&2
この範囲内ならどこでもいい
2 Phase Lock(2PL)
LockのComposabilityを活用して行けば、いくつのオブジェクトであっても
Linearization Pointが作れる期間が得られるはず。
そのために、ロック確保は「獲得を続ける成長相」と「解放を続ける縮退相」の
2つだけからなるようしようというプロトコルが 2 Phase Lock
T1
Object1
Object1&2&3,,,nに対する操作
Object2
Object1&2,,,n
この範囲内ならどこでもいい
Object3
Objectn
成長相 縮退相
ここまでのまとめ
並行世界におけるオブジェクトに対する「処理」は
論理的な時間軸のどこか一瞬にマッピングして整理する
Lockを使っている場合、Lock期間のどこにでも処理をマッピングでき
る
2 Phase Lockはそれを拡張したもの
T1
Object1
Object2
Object1&2,,,n
Object3
Objectn
トランザクションへの応用
Disk Write
2PLを使えばトランザクションにおける並行制御の問題は(論理的には)解決で
きる
全部のロックを取った状態でディスクにログを書き出せば最低限のACIDは満たせ
る
トランザクションへの応用
2PLを使えばトランザクションにおける並行制御の問題は(論理的には)解決で
きる
全部のロックを取った状態でディスクにログを書き出せば最低限のACIDは満たせ
る
だが遅い
T1
Object1
Object2
Object1&2,,,n
Object3
Objectn
トランザクションへの応用
ページの中身を更新する際、ページがディスクに書き戻されるより先にログが到
達していないと行けない && 1つのトランザクションが更新するデータ量が必ずし
もメモリに収まるとは限らない → トランザクションは進行と同時にWALを書
くしかない
と、状況は悪化する。ロック獲得期間は伸びるばかり
Disk Write
トランザクションへの応用
ANSI「2PLを最強として、そこから緩めていく方向でIsolationを諦めて行けば性
能と実用性のバランスが取れるんじゃない?」
と、本気で言ったかは知らないがANSIの提唱する4つの分離レベルからはロックの使い方が透
けて見える
SERIALIZABLE: 2PLとGap Lock(レコードの隙間に対するロック)を使う
REPEATABLE READ: 2PLを使う
READ COMMITTED: Read Lockを取らない
READ UNCOMMITTED: Write Lockすら取らない
もちろんANSI自体は実装の詳細を指定していないのでこれらの記述は仕様ではない
ちょっと脱線: SNAPSHOT ISOLATION
「全てのトランザクションは、開始した瞬間の一貫したスナップショットをトラ
ンザクション中ずっと観測する。書き込み同士が衝突した場合はAbortする」
裏ではMulti Versioning Concurrency Control(MVCC)とTimestampで頑張っている
。
❖値を書き込む際は別のバージョンを作成して脇に置く事で古いデータを読む
事になる他のトランザクションの邪魔をしない
❖Read Lockを取る必要が無いので読み出しが大半を占めるワークロードで多
大な高速化を実現
❖特定の値を読んで良いかどうかはトランザクション開始時に獲得したタイム
スタンプで判断するのでPhantom Readは抑制できる
ちょっと脱線: SNAPSHOT ISOLATION
2つのAnomaly(Serialize不可能なHistory生成)が起きる
OracleDBのSERIALIZABLE設定はこの問題が起きる事で有名
参考: https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:3233191441609
Oracle「Phantom Readが起きなきゃSERIALIZABLEってANSIが言ってるし、うち
の実装はPhantom Read起きないじゃん?」
x=y+1した
いy=x+1した
い
y
x 0
0
y←1
y=0
x=0
x←1
1
1
Write Skew Anomaly
x+y==0ならy-
=10
x+=10
y
x 0
x←10
0
x=0
x=0
y←-10
10
-10
Read Only Anomaly
x+yが知りたい
y=0
y=0 x=10
T1
T2
T1
T2
T3
T1, T2どっちが先に終わったか不
明
結果で見ればT2が最初に終わっている
がT3はT1の方が早かったと主張して矛
盾
ここまでのまとめ
2 Phase Lockでトランザクションは実装可能だが現実的な速度は出ない
SNAPSHOT ISOLATIONのような「ACIDを一部諦めた」モデルが
一般に広く使われている
OracleのSERIALIZABLEはSNAPSHOT ISOLATION
Atomic Snapshot
問題「ランダムなタイミングで増加する2つのカウンターのどこか一瞬の状態を
獲得せよ。ただし、一度に読めるカウンターは1つである」
1つ読んで、2つめを読むタイミングで1つめの値が変わってる可能性がある
2つを2回読んで、値が一致していればその期間ずっとその値だったと言える
A
B
0
0
1
1
3
4
4
5
2
2
この範囲内ならずっとA=2, B=3と断言できる
3
T1
Optimistic Concurrency Control(OCC)
コミット時までロックを取らずに進行し、Commit時にValidationを行う戦略
コミット時にロックを取る→Readをやり直す という順序で操作を行う事によっ
て、Read側のSnapshotの瞬間とWrite側の2PLのLinearization pointを重ねるのがポ
イント
ReadされるデータのSnapshotが取れるように、全てのオブジェクトに単調増加す
るバージョン番号を取り付ける必要があるT1
Object1
Object2
Object1&2,,n
Object3
Objectn
この範囲内でトランザクションの全操作が起きた事にできる
マルチコアの時代到来
コア数が増える程にコヒーレンスが重くなる(Universal Scalability Law)
縦軸:性能
横軸:システム負荷(≒使用プロセッサ数)
N: プロセッサ数
α: 衝突コスト係数
β: コヒーレントコスト係数
平たく言うと、N倍の資源を用意すればN倍速
になるかと思いきや、衝突のせいでそう速くな
らないし、コヒーレントのコストが2乗で効い
てくるので返って遅くなる事すらある
http://www.perfdynamics.com/Manifesto/USLscalability.html
最近のDB研究での動向
メインメモリに全データが入るという前提が許されるなら、ページの書き戻し自
体が必要ないのでWAL(ページの書き戻しより先にUndo-Logを書く)という制約が
要らなくなる
マルチコアを活かしてトランザクションを高速化させる場合、キャッシュコヒー
レントに足を引っ張られにくいOCCが注目を集めている。(Snapshot Readはキャ
ッシュを一切汚さない場合すらある)
In-Memory + マルチコア + 楽観的並行制御 の組み合わせがスイートスポット
Group Commit
個々のトランザクションごとにCommit Logを書くのでは無く、複数のトランザクションから出てきたログを1つにまとめて
書き込む技法
各トランザクションは自分のCommit Logがまとめて書き込まれるのを見届けるまでクライアントに完了を報告しないの
で、クライアントから見た振る舞いは一緒
ディスク書き込みはシーケンシャルアクセスの方が高速なので、少ないIO数の中に大量のコミット情報を投入すること
は大きな高速化に寄与する
SSDであっても結構意義があると手元のベンチマークは言ってる
最初にこれを実装したのはIBMのIMS FastPath。大抵の人気DBは実装してるはず。 Unlockcommit
Disk Write
Unlockcommit Disk Write
Logger
Early Lock Release
Group Commit等で、何をCommitするかという内容を決めてディスクに書き出す順序まで確定(pre-
commit)した後なら、ロックを手放してしまってもトランザクションの性質は変わらないよという提案
仮に手放したロックを握った別のトランザクションがやってきても、手放した側のトランザクションを追い抜く事はな
い(ディスクに書き出す順序は既に確定したので)
ディスク動作を待つ間にデータのロックを手放して良いので、より多くのトランザクションがロックを握って進行でき
るようになる
詳細な証明は結構ゴツいので論文参照
実地でどの程度使われてるかは未調査。PostgreSQLは未実装らしい。
Unlockcommit
Disk Write
Unlockcommit
Disk Write
Silo
マルチコアの為に更にOCCを突き詰めて並列度を高めるコミットプロトコル
1. Epochという40ミリ秒ごとに増える数字を全トランザクションに与えてIDの上位ビットにする
2. 各トランザクションは自分が観測した値の全バージョンより1大きいIDをコミット時に算出する
3. メモリ更新と同時にUnlockして構わなくなった
4. 同一Epochなログが全て揃わないとユーザに完了を報告しない
5. リカバリの際は同一Epochのトランザクションが全て揃っていない限り無効なログとして棄却する
Epoch単位でログ集合を緩く共有するので、ログの細かい順序も入れ替わっても問題なくなり並列化もで
きる
Unlockcommit
Disk Write
Unlockcommit
Disk Write
OCCの偽陽性
OCCはコミット時まで衝突を検知しないのでAbort時に無駄になるCPU資源が多
い
更には本来AbortさせるべきでないトランザクションをAbortさせてしまう
x+y==0ならy-
=10
x+=10
y
x 0
x←10
0
x=0
x=0
y←-10
10
-10
y=0T1
T2
x=10
Xが変わったのでAbort
Commit成功
本来これらのトランザクションは、T1→T2の順で実行した事にして
両方Commitしてよい
TicToc
コミットするとき、読んだデータに対してRead-Timestampを振っていってコミッ
ト時に無矛盾なCommit-Timestampを決めれば偽陽性を減らす事ができる
x+y==0ならy-
=10
x+=10
y
x 0
x←10
0
x=0
x=0
y←-10
10
-10
y=0T1
T2
Commit成功
Commit成功
Rt:3
Wt:2
Rt:4
Wt:4
Rt:2
Wt:2
Rt:1
Wt:1
ts:2でOK
Rt:3
Wt:2
コミットのタイムスタンプは「ReadSet内で最大のWTS」か「WriteSetの
最大のRTS+1」のうち大きい方を採用する。T1は「max(2, 1)」と「
max(1)+1」で比較して2を採用する。これでより多くのパターンでCommit
を許す事ができる。
…ただしログの順序についてはFuture Workとして詳細は書いてない。
Rt:1
Wt:1
ts:4でOK
ReadWriteSetReadSet
TicToc
Siloを超える性能が出ているらしい
Silo
TicToc
出典: Xiangyao Yuら TicToc: Time Traveling Optimistic Concurrency Control
TicTocの問題点
ReadするだけのデータであってもReadTimeStampを更新しないといけない。
…キャッシュを汚さないのがOCCの利点じゃなかったっけ?
Read-Onlyなワークロードだと負けてるじゃないですか!
出典: Xiangyao Yuら TicToc: Time Traveling Optimistic Concurrency Control
Mostly-Optimistic Concurrency Control(MOCC)
最近読んでる論文(まだ読みかけ)
基本的にはOCC
Validation失敗でAbortするときに「ここの値は良く更新される」という情報を
Temperatureとして書き込む
閾値よりTemperatureが高い値をReadする際はLockを取りながらトランザクシ
ョンを続行する
自分がさっき触ったのにValidationが合わなかったデータもLockを取る
そのまま走らせるとデッドロックしかねないのでロック順序を壊しそうなタイ
ミングでアンロックして順に再獲得する
Mostly-Optimistic Concurrency Control(MOCC)
OCCが苦手なWriteメインのワークロードでも性能が出ている。
出典: Tianzheng Wangら Mostly-Optimistic Concurrency Control for Highly Contended Dynamic Workloads on a Thousand Cores
まとめ
マルチコア&インメモリ時代ではOCCが美味しいという認識はあるも
のの
アボートのコストが高くなりがちなOCCに対して程よいバランスで
並行制御できるアルゴリズムはまだ試行錯誤の段階

More Related Content

What's hot

分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料SECCON Beginners
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3までYahoo!デベロッパーネットワーク
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~Hideki Tsunashima
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 

What's hot (20)

分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushiGoogle Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 

Viewers also liked

本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについてKumazaki Hiroki
 
ONIC Japan 2016 - Contrail アップデート
ONIC Japan 2016 - Contrail アップデートONIC Japan 2016 - Contrail アップデート
ONIC Japan 2016 - Contrail アップデートJuniper Networks (日本)
 
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg 「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg Junpei Tsuji
 
What is jubatus? How it works for you?
What is jubatus? How it works for you?What is jubatus? How it works for you?
What is jubatus? How it works for you?Kumazaki Hiroki
 
よくわかるHopscotch hashing
よくわかるHopscotch hashingよくわかるHopscotch hashing
よくわかるHopscotch hashingKumazaki Hiroki
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 

Viewers also liked (15)

本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについて
 
ONIC Japan 2016 - Contrail アップデート
ONIC Japan 2016 - Contrail アップデートONIC Japan 2016 - Contrail アップデート
ONIC Japan 2016 - Contrail アップデート
 
Jubatus hackathon2
Jubatus hackathon2Jubatus hackathon2
Jubatus hackathon2
 
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg 「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
 
What is jubatus? How it works for you?
What is jubatus? How it works for you?What is jubatus? How it works for you?
What is jubatus? How it works for you?
 
Cache obliviousの話
Cache obliviousの話Cache obliviousの話
Cache obliviousの話
 
よくわかるHopscotch hashing
よくわかるHopscotch hashingよくわかるHopscotch hashing
よくわかるHopscotch hashing
 
Lockfree Queue
Lockfree QueueLockfree Queue
Lockfree Queue
 
Lockfree Priority Queue
Lockfree Priority QueueLockfree Priority Queue
Lockfree Priority Queue
 
What is jubatus (short)
What is jubatus (short)What is jubatus (short)
What is jubatus (short)
 
Lockfree list
Lockfree listLockfree list
Lockfree list
 
SkipGraph
SkipGraphSkipGraph
SkipGraph
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
Bloom filter
Bloom filterBloom filter
Bloom filter
 

Similar to トランザクション入門

トランザクション入門
トランザクション入門トランザクション入門
トランザクション入門Hiroki Kumazaki
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話LINE Corporation
 
論文紹介 "DARTS: Differentiable Architecture Search"
論文紹介 "DARTS: Differentiable Architecture Search"論文紹介 "DARTS: Differentiable Architecture Search"
論文紹介 "DARTS: Differentiable Architecture Search"Yuta Koreeda
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門AdvancedTechNight
 
PUN2×OculusQuestでハンドトラッキング同期実装
PUN2×OculusQuestでハンドトラッキング同期実装PUN2×OculusQuestでハンドトラッキング同期実装
PUN2×OculusQuestでハンドトラッキング同期実装尾上 兼透
 

Similar to トランザクション入門 (6)

トランザクション入門
トランザクション入門トランザクション入門
トランザクション入門
 
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
 
Scrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pubScrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pub
 
論文紹介 "DARTS: Differentiable Architecture Search"
論文紹介 "DARTS: Differentiable Architecture Search"論文紹介 "DARTS: Differentiable Architecture Search"
論文紹介 "DARTS: Differentiable Architecture Search"
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
 
PUN2×OculusQuestでハンドトラッキング同期実装
PUN2×OculusQuestでハンドトラッキング同期実装PUN2×OculusQuestでハンドトラッキング同期実装
PUN2×OculusQuestでハンドトラッキング同期実装
 

Recently uploaded

本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題についてMasatsugu Matsushita
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料Toru Miyahara
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例Kurata Takeshi
 
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップToru Miyahara
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Toru Miyahara
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上mizukami4
 

Recently uploaded (6)

本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
 
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
 

トランザクション入門