SlideShare a Scribd company logo
2
Most read
3
Most read
5
Most read
LineairDB Introduction
2021/06/24


NTT ソフトウェアイノベーションセンタ


中園 翔 (@nikezono)
LineairDB 101
▪ NTTが公開したOSS のトランザクションエンジン


▪ インメモリ・単一ノード・組み込み・メニーコア向け


▪ すべての機能が Epoch-based でデザインされている


▪ NWR: Blind Updateに強い高速ConcurrencyControl向け最適化 (NTT + 川島研, 論文投稿中)


▪ Parallel Logging & CPR checkpointing (SIGMOD 2019)


▪ Epoch-based ROWEX Index (VLDB 2020)


▪ サポートしている機能


▪ Strict Serializability (Linearizability + Serializability)


▪ Durability (Logging & Checkpointing)


▪ Range Scan & Phantom Avoidance (WIP)


▪ Key/Value Interface: #Begin, #Get, #Put, #End, #Scan, #Sync


▪ (現状) サポートしていない機能


▪ Distributed Transaction


▪ Query Interface. SQL/JDBC/ODBC/etc…
Result on YCSB-A (Read 50%, Blind update 50%)
CPU four Intel Xeon E7-8870 (total 144 logical cores)
Memory 1TB (no swap-out)
YCSB Table size 100K
YCSB Record size 8-bytes
Epoch size 1000ms
Contention (θ) 0.9 (highly contended)
# of threads to process txns 70
• 以下,参考資料


– LineairDBの改善点


• Concurrency Control編


• Logging編


• Checkpointing編


– Epoch FrameworkのPros/Cons
Modern In-Memory Database Architecture
1. DRAMの大容量化


Index (Tree) も Logging も,すべてがメモリに乗る前提の設計が必要


-> Disk I/Oよりキャッシュを意識したIndexが良い (B+Tree -> ART, Masstree)


-> Dirty Pageが存在しないのでUndo Logが必要ない (No-steal, Force)


-> I/Oよりも メモリ上のConcurrency Control で性能が律速される


1. CPUのメニーコア化


単一スレッドで動くコンポーネントは基本的にボトルネックに


-> マルチスレッドプログラミングの重要性が増す


-> LineairDBの改善点: Logging, Concurrency Control, Concurrent Index


従来のConcurrency ControlはUpdate-heavyなワークロードに弱い.


Version order == Operation orderの従来理論ではLock/Latchが不可避.
Concurrency Control: Updateの性能問題
Write(x)
T1


T2


T3
Write(x)
Write(x)
wait
wait
Read(x)
コア数を上げると、むしろ


スループットが減少する。
既存トランザクション処理手法
LineairDBでは Blind Update を Epochごとに1 versionを残し省略する.
省略することでログ・ロック・インデックス更新などを全て短縮.
LineairDBのCC: with Epoch Framework
CPUコア数
8倍.世界最速.
ト
タ
ル
ス
ル
プ
ト
[million
txns
/
s]
Write(x)
T1


T2


T3
省略可能
Read(x)
Write(x)
Write(x)
マルチスレッドプログラミングに必要な “同期” や “順序決定” の


オーバヘッドを最小にするため,実時間を Epoch に区切る.
LineairDBのトータルデザイン: Epoch Framework


Worker


#1
Worker


#2
Worker


#3
Wall-Clock Time
Worker


#1
Worker


#2
Worker


#3
Epoch 1 Epoch 2
Commit Point
wait
Txn
Txn
Txn
Txn
Txn
Txn
Txn
Txn
Txn
wait
Txn
Txn
Txn
Txn
Txn
Txn
Txn
Txn
Txn
Committed Active
Logging: Centralized vs Distributed Logging


 Centralized Log Bufferを作ると,Latchが厳しい.


 Distributedだと,”ログが永続化された順序(LSN)” が失われる
Worker
#1
Worker


#2
Worker


#3
Centralized Log Buffer
Latch🔒
Centralized Logging Distributed Logging
Worker


#1
Thread
Local Log
Buffer
Worker


#2
Thread
Local Log
Buffer
Worker


#3
Thread
Local Log
Buffer
#1->#2->#3


Commitもリカバリも


この順で
これが分からないと
Commitを返す順序も


#1 || #2 || #3
LineairDBのLogging: with Epoch Framework


 Log Formatに “所属するepoch”を入れておけば,


 Distributed LoggingしてもCommitはまとめて返せる


 
Distributed Logging
Worker


#1
Thread
Local Log
Buffer
Worker


#2
Thread
Local Log
Buffer
Worker


#3
Thread
Local Log
Buffer
#1 || #2 || #3
全WorkerのすべてのTxnsのロ
グが永続化されるまで,
Epochを進行させない
Wenting Zheng, Stephen Tu, Eddie Kohler, and Barbara Liskov. 2014. Fast databases with fast durability and
recovery through multicore parallelism. In Proceedings of the 11th USENIX conference on Operating Systems
Design and Implementation (OSDI'14). USENIX Association, USA, 465–477.
Commit Point
ここまで待てば,


ActiveなTXはおらず,


どの順番でCommitを
返しても問題なし
Disk-basedでよく用いられる“Fuzzy Checkpointing”は使えない.


 In-memory CheckpointingはConcurrency Controlの問題がある.
Checkpointing: Disk-based vs In-Memory
Committe
d
Disk-based Checkpointing In-Memory Checkpointing
Active
Transaction Log File(s)
Active
Active Txns Log は触らずに,


Committed Txns LogをPagesに反映させればOK.
Pages
Pages
TXN
Worker
TXN
Worker
TXN
Worker
x y z
Checkpointer
Checkpointerの処理は実質
ロングトランザクション.


Read Lockがなければ,


Consistent なCheckpoint
LineairDBのCheckpoint: with Epoch Framework


1ページにつき,2つのバッファを用意.(live/stable)


”checkpoint epoch” を定期的に作り,stable imageを作成.
In-Memory Checkpointing
TXN
Worker
TXN
Worker
TXN
Worker
x y z
Checkpointer
例えば:


1. 30秒おきに,Checkpoint
Epoch ceを作る.


2. ce に属するTxnsは,普段の
バッファに加えて “Stable
Image” も更新する.


3. ce が充分古くなったら,こ
れを読み出すだけで(Latch
なしで) Checkpoint完了


x y z
Live Images
Stable Images
Guna Prasaad, Badrish Chandramouli, and Donald
Kossmann. 2020. Concurrent Prefix Recovery: Performing
CPR on a Database. SIGMOD Rec. 49, 1 (March 2020),
16–23. DOI:https://doi.org/10.1145/3422648.3422653
▪ Epoch Frameworkの性質


▪ Epochは一定時間と “e-1に属するTxnsが全て終了” で進行する


▪ -> ある epoch e において,e-2 に属するActive Txns は存在しない


▪ 同一epochトランザクションは,全て同じタイミングでCommitされる


▪ Pros


▪ ルーズに同期することで,マルチスレッド処理で必要な “順序” が得られる


▪ epochは「バッチでタイムスタンプを作っている」と捉えられる


▪ -> Distributed Logging, Checkpointing, Index, CC,全てに有用


▪ Cons


▪ Commitまでの平均レイテンシが伸びる


▪ Long Transactionが入ると Epochの進行が止まる -> 誰もCommitできない!


▪ バッチ処理との相性が極めて悪い.
Epoch Framework Pros/Cons

More Related Content

What's hot (20)

PDF
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
NTT DATA Technology & Innovation
 
PPTX
トランザクションをSerializableにする4つの方法
Kumazaki Hiroki
 
PPTX
これがCassandra
Takehiro Torigaki
 
PPTX
トランザクションの設計と進化
Kumazaki Hiroki
 
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 
PDF
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
PDF
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
PDF
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PDF
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
 
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
 
PPT
インフラエンジニアのためのcassandra入門
Akihiro Kuwano
 
PDF
普通の人でもわかる Paxos
tyonekura
 
PDF
Vacuum徹底解説
Masahiko Sawada
 
PDF
トランザクションの並行処理制御
Takashi Hoshino
 
PPTX
Kafka vs Pulsar @KafkaMeetup_20180316
Nozomi Kurihara
 
PDF
Where狙いのキー、order by狙いのキー
yoku0825
 
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PDF
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
NTT DATA Technology & Innovation
 
トランザクションをSerializableにする4つの方法
Kumazaki Hiroki
 
これがCassandra
Takehiro Torigaki
 
トランザクションの設計と進化
Kumazaki Hiroki
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
 
インフラエンジニアのためのcassandra入門
Akihiro Kuwano
 
普通の人でもわかる Paxos
tyonekura
 
Vacuum徹底解説
Masahiko Sawada
 
トランザクションの並行処理制御
Takashi Hoshino
 
Kafka vs Pulsar @KafkaMeetup_20180316
Nozomi Kurihara
 
Where狙いのキー、order by狙いのキー
yoku0825
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 

Similar to LineairDBの紹介 (20)

PPTX
Ossで作成するチーム開発環境
Tadahiro Ishisaka
 
PDF
「宣言的プログラミング」とSDNのひとつの形態
npsg
 
PDF
Mk network programmability-03
Miya Kohno
 
PPTX
.NET Core diagnostics tips
Yusuke Fujiwara
 
PDF
ソフトバンクにおける Java による クラウドネイティブの実現
Shigeru Tatsuta
 
PDF
SQL Azure のシームレスな管理
junichi anno
 
PDF
20201127 .NET 5
Takayoshi Tanaka
 
PDF
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
 
PDF
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
 
PDF
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
 
PDF
Microservices and Servcie Mesh on Azure
Tsukasa Kato
 
PDF
多分モダンなWebアプリ開発
tak-nakamura
 
PDF
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
 
PPTX
ORTCの仕様書をざっくり斜め読みする
Yusuke Naka
 
PDF
MySQL at Yahoo! JAPAN #dbts2018
Yahoo!デベロッパーネットワーク
 
PPTX
最速C# 7.x
Yamamoto Reki
 
PDF
Kernel vm-2014-05-25
Hirochika Asai
 
PDF
NSG フローログを支える技術 - NVF Advanced Flow Logging
順也 山口
 
PPTX
Voicepic@FacebookNight
Manabu Shimobe
 
PDF
コモディティL3SW/ルータでオープンなSDNを実現しよう
Takashi Sogabe
 
Ossで作成するチーム開発環境
Tadahiro Ishisaka
 
「宣言的プログラミング」とSDNのひとつの形態
npsg
 
Mk network programmability-03
Miya Kohno
 
.NET Core diagnostics tips
Yusuke Fujiwara
 
ソフトバンクにおける Java による クラウドネイティブの実現
Shigeru Tatsuta
 
SQL Azure のシームレスな管理
junichi anno
 
20201127 .NET 5
Takayoshi Tanaka
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
 
論理レプリケーション用スロットのフェールオーバ機能 (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
 
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
 
Microservices and Servcie Mesh on Azure
Tsukasa Kato
 
多分モダンなWebアプリ開発
tak-nakamura
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
 
ORTCの仕様書をざっくり斜め読みする
Yusuke Naka
 
MySQL at Yahoo! JAPAN #dbts2018
Yahoo!デベロッパーネットワーク
 
最速C# 7.x
Yamamoto Reki
 
Kernel vm-2014-05-25
Hirochika Asai
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
順也 山口
 
Voicepic@FacebookNight
Manabu Shimobe
 
コモディティL3SW/ルータでオープンなSDNを実現しよう
Takashi Sogabe
 
Ad

More from Sho Nakazono (9)

PDF
述語ロックの歴史 r2
Sho Nakazono
 
PPTX
Checkpointing Algorithms on In-memory DBMS
Sho Nakazono
 
PDF
LineairDBの紹介 MySQL編
Sho Nakazono
 
PDF
詳説データベース輪読会: 分散合意その2
Sho Nakazono
 
PPTX
ファントム異常を排除する高速なトランザクション処理向けインデックス
Sho Nakazono
 
PDF
論文紹介: Cuckoo filter: practically better than bloom
Sho Nakazono
 
PPTX
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
Sho Nakazono
 
PPTX
[xSIG 2018]InvisibleWriteRule: Extended write protocol for 1VCC
Sho Nakazono
 
PDF
論文紹介: An empirical evaluation of in-memory multi-version concurrency control
Sho Nakazono
 
述語ロックの歴史 r2
Sho Nakazono
 
Checkpointing Algorithms on In-memory DBMS
Sho Nakazono
 
LineairDBの紹介 MySQL編
Sho Nakazono
 
詳説データベース輪読会: 分散合意その2
Sho Nakazono
 
ファントム異常を排除する高速なトランザクション処理向けインデックス
Sho Nakazono
 
論文紹介: Cuckoo filter: practically better than bloom
Sho Nakazono
 
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
Sho Nakazono
 
[xSIG 2018]InvisibleWriteRule: Extended write protocol for 1VCC
Sho Nakazono
 
論文紹介: An empirical evaluation of in-memory multi-version concurrency control
Sho Nakazono
 
Ad

LineairDBの紹介

  • 2. LineairDB 101 ▪ NTTが公開したOSS のトランザクションエンジン ▪ インメモリ・単一ノード・組み込み・メニーコア向け ▪ すべての機能が Epoch-based でデザインされている ▪ NWR: Blind Updateに強い高速ConcurrencyControl向け最適化 (NTT + 川島研, 論文投稿中) ▪ Parallel Logging & CPR checkpointing (SIGMOD 2019) ▪ Epoch-based ROWEX Index (VLDB 2020) ▪ サポートしている機能 ▪ Strict Serializability (Linearizability + Serializability) ▪ Durability (Logging & Checkpointing) ▪ Range Scan & Phantom Avoidance (WIP) ▪ Key/Value Interface: #Begin, #Get, #Put, #End, #Scan, #Sync ▪ (現状) サポートしていない機能 ▪ Distributed Transaction ▪ Query Interface. SQL/JDBC/ODBC/etc…
  • 3. Result on YCSB-A (Read 50%, Blind update 50%) CPU four Intel Xeon E7-8870 (total 144 logical cores) Memory 1TB (no swap-out) YCSB Table size 100K YCSB Record size 8-bytes Epoch size 1000ms Contention (θ) 0.9 (highly contended) # of threads to process txns 70
  • 4. • 以下,参考資料 – LineairDBの改善点 • Concurrency Control編 • Logging編 • Checkpointing編 – Epoch FrameworkのPros/Cons
  • 5. Modern In-Memory Database Architecture 1. DRAMの大容量化 Index (Tree) も Logging も,すべてがメモリに乗る前提の設計が必要 -> Disk I/Oよりキャッシュを意識したIndexが良い (B+Tree -> ART, Masstree) -> Dirty Pageが存在しないのでUndo Logが必要ない (No-steal, Force) -> I/Oよりも メモリ上のConcurrency Control で性能が律速される 1. CPUのメニーコア化 単一スレッドで動くコンポーネントは基本的にボトルネックに -> マルチスレッドプログラミングの重要性が増す -> LineairDBの改善点: Logging, Concurrency Control, Concurrent Index 

  • 6. 従来のConcurrency ControlはUpdate-heavyなワークロードに弱い. Version order == Operation orderの従来理論ではLock/Latchが不可避. Concurrency Control: Updateの性能問題 Write(x) T1 T2 T3 Write(x) Write(x) wait wait Read(x) コア数を上げると、むしろ スループットが減少する。 既存トランザクション処理手法
  • 7. LineairDBでは Blind Update を Epochごとに1 versionを残し省略する. 省略することでログ・ロック・インデックス更新などを全て短縮. LineairDBのCC: with Epoch Framework CPUコア数 8倍.世界最速. ト タ ル ス ル プ ト [million txns / s] Write(x) T1 T2 T3 省略可能 Read(x) Write(x) Write(x)
  • 8. マルチスレッドプログラミングに必要な “同期” や “順序決定” の オーバヘッドを最小にするため,実時間を Epoch に区切る. LineairDBのトータルデザイン: Epoch Framework Worker #1 Worker #2 Worker #3 Wall-Clock Time Worker #1 Worker #2 Worker #3 Epoch 1 Epoch 2 Commit Point wait Txn Txn Txn Txn Txn Txn Txn Txn Txn wait Txn Txn Txn Txn Txn Txn Txn Txn Txn Committed Active
  • 9. Logging: Centralized vs Distributed Logging  Centralized Log Bufferを作ると,Latchが厳しい.  Distributedだと,”ログが永続化された順序(LSN)” が失われる Worker #1 Worker #2 Worker #3 Centralized Log Buffer Latch🔒 Centralized Logging Distributed Logging Worker 
 #1 Thread Local Log Buffer Worker 
 #2 Thread Local Log Buffer Worker 
 #3 Thread Local Log Buffer #1->#2->#3 Commitもリカバリも この順で これが分からないと Commitを返す順序も #1 || #2 || #3
  • 10. LineairDBのLogging: with Epoch Framework  Log Formatに “所属するepoch”を入れておけば, 
  Distributed LoggingしてもCommitはまとめて返せる   Distributed Logging Worker 
 #1 Thread Local Log Buffer Worker 
 #2 Thread Local Log Buffer Worker 
 #3 Thread Local Log Buffer #1 || #2 || #3 全WorkerのすべてのTxnsのロ グが永続化されるまで, Epochを進行させない Wenting Zheng, Stephen Tu, Eddie Kohler, and Barbara Liskov. 2014. Fast databases with fast durability and recovery through multicore parallelism. In Proceedings of the 11th USENIX conference on Operating Systems Design and Implementation (OSDI'14). USENIX Association, USA, 465–477. Commit Point ここまで待てば, ActiveなTXはおらず, どの順番でCommitを 返しても問題なし
  • 11. Disk-basedでよく用いられる“Fuzzy Checkpointing”は使えない.  In-memory CheckpointingはConcurrency Controlの問題がある. Checkpointing: Disk-based vs In-Memory Committe d Disk-based Checkpointing In-Memory Checkpointing Active Transaction Log File(s) Active Active Txns Log は触らずに, Committed Txns LogをPagesに反映させればOK. Pages Pages TXN Worker TXN Worker TXN Worker x y z Checkpointer Checkpointerの処理は実質 ロングトランザクション. Read Lockがなければ, Consistent なCheckpoint
  • 12. LineairDBのCheckpoint: with Epoch Framework 1ページにつき,2つのバッファを用意.(live/stable) ”checkpoint epoch” を定期的に作り,stable imageを作成. In-Memory Checkpointing TXN Worker TXN Worker TXN Worker x y z Checkpointer 例えば: 1. 30秒おきに,Checkpoint Epoch ceを作る. 2. ce に属するTxnsは,普段の バッファに加えて “Stable Image” も更新する. 3. ce が充分古くなったら,こ れを読み出すだけで(Latch なしで) Checkpoint完了 x y z Live Images Stable Images Guna Prasaad, Badrish Chandramouli, and Donald Kossmann. 2020. Concurrent Prefix Recovery: Performing CPR on a Database. SIGMOD Rec. 49, 1 (March 2020), 16–23. DOI:https://doi.org/10.1145/3422648.3422653
  • 13. ▪ Epoch Frameworkの性質 ▪ Epochは一定時間と “e-1に属するTxnsが全て終了” で進行する ▪ -> ある epoch e において,e-2 に属するActive Txns は存在しない ▪ 同一epochトランザクションは,全て同じタイミングでCommitされる ▪ Pros ▪ ルーズに同期することで,マルチスレッド処理で必要な “順序” が得られる ▪ epochは「バッチでタイムスタンプを作っている」と捉えられる ▪ -> Distributed Logging, Checkpointing, Index, CC,全てに有用 ▪ Cons ▪ Commitまでの平均レイテンシが伸びる ▪ Long Transactionが入ると Epochの進行が止まる -> 誰もCommitできない! ▪ バッチ処理との相性が極めて悪い. Epoch Framework Pros/Cons