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
LevelDB入門
Search
Yosuke Furukawa
PRO
June 27, 2014
Programming
13k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LevelDB入門
InfluxDB勉強会用資料
Yosuke Furukawa
PRO
June 27, 2014
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
240
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.3k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.8k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
350
Removing Corepack
yosuke_furukawa
PRO
9
2k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3.1k
Strip Types と Storage
yosuke_furukawa
PRO
4
520
Module Harmony について
yosuke_furukawa
PRO
4
1.9k
LTのやり方
yosuke_furukawa
PRO
16
3k
Other Decks in Programming
See All in Programming
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
210
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.8k
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
Claude Team Plan導入・ガイド
tk3fftk
0
210
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
870
どこまでゆるくて許されるのか
tk3fftk
0
500
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
act1-costs.pdf
sumedhbala
0
230
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
550
1B+ /day規模のログを管理する技術
broadleaf
0
140
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
270
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
エンジニアに許された特別な時間の終わり
watany
108
250k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How to make the Groovebox
asonas
2
2.3k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
590
Navigating Weather and Climate Data
rabernat
0
380
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Transcript
LevelDBೖ @yosuke_furukawa
@yosuke_furukawa Node.jsϢʔβʔάϧʔϓද / DeNAॴଐ
None
None
LevelDBೖهࣄॻ͖·ͨ͠
ࠓͦΕͷ͓͞Β͍ + InfluxDB x LevelDBͷ
LevelDBͱ?
GoogleͷBigTableΛϕʔεʹ͠ ͯ։ൃ͞ΕͨܰྔͷKey-Valueܕ σʔλετΞ
༻్ΉͬͪΌ͍
LevelDBಛ
LevelDBಛ • σʔλkeyͰιʔτ͞Εͯ֨ೲ͞ΕΔ • جຊతͳૢ࡞ Put(key, value), Get(key), Delete(key)Ͱ ͋Γɺγϯϓϧɻ
• ෳͷมߋΛatomicͳॲཧʹ͢Δ͜ͱ͕Ͱ͖Δ • consistentͳσʔλͷviewΛಘΔͨΊ(ॻ͖ࠐΈதͰ readͰ͖ΔΑ͏ʹ͢ΔͨΊ)ʹtransient ͳ snapshotΛ࡞ Δ͜ͱ͕Ͱ͖Δ
Architecture
None
8SJUF࣌ʹ-PH 4PSUFE 5BCMF'JMFTʹॻ͘ 3FBE࣌ʹ$BDIF -PH 4PSUFE5BCMF'JMF͔ ΒಡΈࠐΉ
4PSUFE5BCMF
LevelDBཧղͷҰ൪ͷ؊ Sorted String Table
Sorted String Table LFZ P⒎TFU BBB CCC DDD
JOEFY 445 BBB CCC IPHFGVHBʜ DDD ʜ
Sorted String Table LFZ P⒎TFU BBB CCC DDD
JOEFY 445 BBB CCC IPHFGVHBʜ DDD ʜ LFZͰTPSU͞Ε͓ͯΓɺ JOEFYʹϑΝΠϧͷͲ͔͜ΒಡΈࠐ Ή͔ P⒎TFU ͕ॻ͍ͯ͋Δ LFZWBMVFͷॱংͰҰଓ͖Ͱ ϑΝΠϧʹॻ͔ΕΔ
-FWFM -FWFM -FWFM Sorted String Table 445 445 445 445
445 445 445 445 445 445 445 445 445 445
-FWFM -FWFM -FWFM Sorted String Table 445 445 445 445
445 445 445 445 445 445 445 445 445 445 -FWFM%#Ͱ͜ͷ445Λ ֊Խ ͕͜͜-FWFM%#ͷ༝དྷ ͯ͠ཧ͍ͯ͠Δɻ -FWFM͕ਂ͘ͳΕͳΔ΄Ͳ ཧ͢Δ༰ྔ͕૿͑Δ -FWFMͰ.# -FWFMͰ.# -FWFMͰ(# ͱେମഒִؒͰ૿͑ͯ͘
-FWFM -FWFM -FWFM Sorted String Table 445 445 445 445
445 445 445 445 445 445 445 445 445 445 ͜͏͢Δ͜ͱͰԿ͕خ͍͔͠ ֊͕ए͍-FWFM༰ྔগ ͳ͘ɺJOEFYͷ࠶࡞ίετ͕ ͍ɻ JOTFSU͕සग़͢ΔΑ͏ͳ໘Ͱ XSJUFͷੑೳΛޮԽͰ͖Δ
String Sorted Table ઌ΄Ͳͷུ֓ਤΛ445ͷͱ͜ Ζ͚ͩৄࡉʹ͢Δͱ ͜Μͳײ͡ʹͳΔɻ
Put/Get/Deleteͷࡉ͔͍ಈ͖
Put -FWFM NFNUBCMF NFNUBCMFTOBQTIPU 1VU DPQZ MPH EVNQUPEJTL 445 -FWFM
.# 445 445 445 ʜ -FWFM .# 445 445 445 ʜ
Put -FWFM NFNUBCMF NFNUBCMFTOBQTIPU 1VU DPQZ MPH EVNQUPEJTL 445 -FWFM
.# 445 445 445 ʜ -FWFM .# 445 445 445 ʜ શͯͷߋ৽ॲཧҰ୴ .FNUBCMFͱ-PHʹॻ͘
Put -FWFM NFNUBCMF NFNUBCMFTOBQTIPU 1VU DPQZ MPH EVNQUPEJTL 445 -FWFM
.# 445 445 445 ʜ -FWFM .# 445 445 445 ʜ Ұఆྔஷ·Δͱ 4OBQTIPUΛ࡞ͬͯɺ 445ʹEVNQ͢Δ
Put -FWFM NFNUBCMF NFNUBCMFTOBQTIPU 1VU DPQZ MPH EVNQUPEJTL 445 -FWFM
.# 445 445 445 ʜ -FWFM .# 445 445 445 ʜ -FWFM͕ҰഋʹͳͬͨΒ -FWFMʹҠಈͤ͞Δ
Get -FWFM NFNUBCMF (FU MPH 4FBSDI 445 -FWFM .# 445
445 445 ʜ -FWFM .# 445 445 445 ʜ #MPPN'JMUFS -FWFMʹ͋ΔՄೳ ੑ͕͋Δ 4LJQ 4FBSDI 4LJQ
Get -FWFM NFNUBCMF (FU MPH 4FBSDI 445 -FWFM .# 445
445 445 ʜ -FWFM .# 445 445 445 ʜ #MPPN'JMUFS -FWFMʹ͋ΔՄೳ ੑ͕͋Δ 4LJQ 4FBSDI 4LJQ NFNUBCMF -FWFM -FWFM -FWFMͱݟ͍ͯͬͯώοτ ͨ͠Βฦ͢ɻ
Get -FWFM NFNUBCMF (FU MPH 4FBSDI 445 -FWFM .# 445
445 445 ʜ -FWFM .# 445 445 445 ʜ #MPPN'JMUFS -FWFMʹ͋ΔՄೳ ੑ͕͋Δ 4LJQ 4FBSDI 4LJQ ແବͳ୳ࡧͷࢬמΓΛ͢Δͨ Ίʹ#MPPN'JMUFSʹΑͬͯଘࡏ ͢Δ͔Ͳ͏͔Λ֬ೝ͢Δ
Delete -FWFM %FMFUF NFSHF MPH 445 -FWFM .# 445 445
445 ʜ -FWFM .# 445 445 445 ʜ EFMFUFqBH LFZ WBMVF EFMFUFE BCD EFG HIJ EFMFUFqBH LFZ WBMVF EFG HIJ
Delete -FWFM %FMFUF NFSHF MPH 445 -FWFM .# 445 445
445 ʜ -FWFM .# 445 445 445 ʜ EFMFUFqBH LFZ WBMVF EFMFUFE BCD EFG HIJ EFMFUFqBH LFZ WBMVF EFG HIJ جຊతʹEFMFUFqBHΛ͚Δ ͚ͩͷཧআ
Delete -FWFM %FMFUF NFSHF MPH 445 -FWFM .# 445 445
445 ʜ -FWFM .# 445 445 445 ʜ EFMFUFqBH LFZ WBMVF EFMFUFE BCD EFG HIJ EFMFUFqBH LFZ WBMVF EFG HIJ -FWFMΛ·͙ͨຖʹ࣮ࡍʹ EFMFUF͢Δ
Delete -FWFM %FMFUF NFSHF MPH 445 -FWFM .# 445 445
445 ʜ -FWFM .# 445 445 445 ʜ EFMFUFqBH LFZ WBMVF EFMFUFE BCD EFG HIJ EFMFUFqBH LFZ WBMVF EFG HIJ ͜͏͢Δ͜ͱͰEFMFUF࣌ͷ JOEFY࠶࡞ίετΛݮΒͯ͠ ͍Δ
LevelDB Performance
IUUQMFWFMECHPPHMFDPEFDPNHJUIJTUPSZNBTUFSEPDCFODINBSLIUNM
IUUQMFWFMECHPPHMFDPEFDPNHJUIJTUPSZNBTUFSEPDCFODINBSLIUNM 3BOEPN3FBETେࠩͳ͍
IUUQMFWFMECHPPHMFDPEFDPNHJUIJTUPSZNBTUFSEPDCFODINBSLIUNM 4FRVFOUJBM3FBET 8SJUFॲ ཧ-FWFM%#͕ߴ
LevelDB x InfluxDB
LevelDB x InfluxDB ෦తʹLFZʹUJNFTUBNQ͕ͨ͘Ί-FWFM%#෦Ͱ࣌ܥྻॱ ͱͳΓɺ ࠷ద͔ͱ͔͘ 4FRVFOUJBM3FBE͔ͭ8SJUF͕සൃ͢ Δ*OqVY%#͖ͩͱݸਓతʹࢥ͏ɻ
InfluxDB x **DB
InfluxDB x **DB %#ϨΠϠʔΛநԽɺ-FWFM%#Ҏ֎ σʔλετΞͱͯ͑͠ΔΑ͏ʹͳͬͨɻ IUUQJOqVYECDPNCMPHMFWFMEC@WT@SPDLTEC@WT@IZQFSMFWFMEC@WT@MNEC@QFSGPSNBODFIUNM
InfluxDB x **DB ͪͳΈʹ͜ͷද͔Β3PDLT%#͕ྑͦ͞͏ʹݟ͑Δ͕ɺɺɺ
InfluxDB x **DB 5IF3PDLT%# QFSGPSNBODFJT BNB[JOHMZQPPS IUUQTHJTUHJUIVCDPNIZDFBBCFGC -.%#ͷ࡞ऀ͕ଌఆ͠ͳ͓ͨ͠Β-.%#࠷ڧʹͳͬͨΓͱ ڥʹΑͬͯҟͳΔ༷ࢠɻ
InfluxDB x **DB -.%#࡞ऀ͕ܭଌ͠ͳ͓ͨ͠Βܶతʹվળ͞ΕͯͨΓɺ IBSEXBSFʹΑͬͯมΘΔͷͰɺࣈͯʹ͠ͳ͍΄͏͕͍͍͔ʜ
·ͱΊ • LevelDBͱ • Architecture • Performance • LevelDB x
InfluxDB • InfluxDB x **DB
ࢀߟ • https://www.igvita.com/2012/02/06/ sstable-and-log-structured-storage- leveldb/ • http://yosuke-furukawa.hatenablog.com/ entry/2014/05/05/095207 • https://speakerdeck.com/smly/influxdb-
and-leveldb-inside-out