Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DBMS自作によるトランザクション処理の学習
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yutaro Oguri
March 26, 2024
Programming
370
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DBMS自作によるトランザクション処理の学習
Yutaro Oguri
March 26, 2024
More Decks by Yutaro Oguri
See All by Yutaro Oguri
gokartの分散並列化ライブラリkannonの紹介 @【Sansan×エムスリー】gokartで爆速開発!MLOps勉強会
yutarooguri
0
4.3k
MLパイプラインをk8sで並列分散化するOSS "kannon"の開発
yutarooguri
1
500
デバッガを自作してみよう (M3 tech talk)
yutarooguri
1
650
Other Decks in Programming
See All in Programming
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
170
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
140
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
550
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
270
RTSPクライアントを自作してみた話
simotin13
0
610
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
180
Oxlintのカスタムルールの現況
syumai
6
1.1k
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6.2k
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
170
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.7k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
350
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
260
Featured
See All Featured
The Curse of the Amulet
leimatthew05
1
13k
30 Presentation Tips
portentint
PRO
1
330
So, you think you're a good person
axbom
PRO
2
2.1k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
480
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
390
The Cost Of JavaScript in 2023
addyosmani
55
10k
Believing is Seeing
oripsolob
1
150
Tell your own story through comics
letsgokoyo
1
960
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Transcript
DBMSࣗ࡞ʹΑΔ τϥϯβΫγϣϯॲཧͷֶश খ܀༔ଠ 1
自己紹介 • 小栗 悠太郎 (Yutaro Oguri) • 東京大学 工学部 電子情報工学科
B4 • GitHub: maronuu • 研究: Approximate Nearest Neighbor Search (ベクトル検索) • 興味: 検索, DBMS, データ基盤, k8s, … 2
概要 • ラボユース: 2023/10〜活動開始 • ”Database Design and Implementation”という本を ベースにDBMSについて学びながらC++で自作
• トランザクション処理に注目 • 展望: ベクトル検索拡張機能の追加 3
DBMSの全体像 • File Manager ◦ ファイルI/O • Log Manager ◦
Logの書き込み • Buffer Manager ◦ Buffer pool (on RAM) • Recovery Manager ◦ Logを元に復元 • Concurrency Manager ◦ 並行制御 4
DBMSの全体像 • File Manager ◦ ファイルI/O • Log Manager ◦
Logの書き込み • Buffer Manager ◦ Buffer pool (on RAM) • Recovery Manager ◦ Logを元に復元 • Concurrency Manager ◦ 並行制御 5 実装したい部分
トランザクション • 1つ以上の処理をまとめた操作の単位 • 例: 2人のユーザが同一データに対して write / readをする場合 •
インタフェース ◦ Read(x), Write(x, val) ◦ Abort(), Commit() • 適切に Lock を取るなどして対処 • lockをとる対象 ◦ Block, value, file, … 6 Image is from https://qiita.com/kumagi/items/5262ff4551ba19943b70
自作DBMSにおけるLockプロトコル • Lockをとる対象: block ◦ tx.pin(block) • 2PLプロトコル ◦ Readする直前に、対象Blockに対してshared
lock (read lock) をとる ◦ Writeする直前に、対象Blockに対してexclusive lock (write lock) をとる ◦ Commit / Rollback後に全てのlockを解放する 7
現状 • File Manager ◦ ファイルI/O • Log Manager ◦
Logの書き込み • Buffer Manager ◦ Buffer pool (on RAM) • Recovery Manager ◦ Logを元に復元 • Concurrency Manager ◦ 並行制御 8 クエリ言語を介する File / Log / Buffer までは実装済み
今後の展望: ベクトル検索拡張機能 • ベクトル検索とは? ◦ ベクトルの集合から最もクエリベクトルに近いベクトルを探す ◦ 深層学習モデルによる埋め込みベクトルの活用 • 例)
sqlite-vss ◦ SQLiteでベクトル検索を可能にする拡張機能 ◦ SELECT papers.*, vss_papers.distance FROM vss_papers JOIN papers ON vss_papers.rowid = papers.id WHERE vss_search(vss_papers.summary_embedding, vss_search_params(?, 10)) 9
今後の展望: ベクトル検索拡張機能 必要となる変更 • ベクトル形式の レコードのサポート • 並行制御をどうする? ◦ ベクトル検索では
Readが圧倒的 ◦ とりあえずなし? 10